Kafka 采用单片架构模型,将服务与存储相结合,而 Pulsar 则采用了多层架构,可以在单独的层内进行管理。Pulsar 中的 broker 在一个层上进行计算,而 bookie 则在另一个层上管理有状态存储。
计算和存储分离
pulsar 可以简单的看做是 broker 集群 + bookkeeper集群 构成。broker 集群属于无状态集群,只处理业务逻辑;而 bookkeeper 集群属于有状态集群,负责处理数据存储。
这里 BK 采用了类似 NWR 机制,客户端可以灵活配置写入数量。比如有10个bookie(bookie平等,所以可以扩容),客户端可以决定一条消息需要同时发往n个bookie,并且当n个bookie中的m个bookie 返回成功后(m <= n),就认为写入成功。
客户端就是pulsar中的broker。当然,BK还有其他优化和特殊处理,这里不再做进一步对比。
https://juejin.cn/post/6860311024831201287
https://oatlmy.blog.csdn.net/article/details/113915758