1 历史背景
Pulsar是一款分布式发布/订阅消息平台,近两年非常火,被称为下一代的消息流平台,大有取代Kafka的势头。
Pulsar源自Yahoo,于2016年开源并捐献给Apache基金会,并在2018年9月升级成为Apache顶级项目。
Kafka最初由Linkedin开发,并于2010年贡献给了Apache基金会,之后成为Apache顶级项目。
2 架构对比
2.1 Kafka架构
Kafka架构由broker和zookeeper组成。
2.8.0 Released April 19, 2021
注意:Kafka2.8版本可以不依赖Zookeeper独立运行了。
从Kafka2.8版本开始,可以不用Apache Zookeeper来作为Kafka的依赖组件了。
官网把这种称之为KRaft模式。
之前,Kafka使用Zookeeper来存储有关分区和Broker的元数据,
并选择一个Broker作为Kafka的Controller。
现在官网打算删除对Zookeeper的依赖,
让Kafka能够以更具扩展性和更加强大的方式管理元数据,从而支持更多分区。
KRaft目前在Kafka2.8版本是一个测试版本,KRaft模式不推荐使用到生产环境。当Kafka集群处理KRaft模式时,它不会将其元数据存储在Zookeeper中,实际上根本不需要运行Zookeeper,因为它将元数据存储在Controller节点中。
官方还不支持将现有的基于Zookeeper的Kafka集群升级到KRaft模式。实际上,当Kafka3.0发布时,无法将Kafka集群从2.8升级到3.0,目前该KRaft模式会有些BUG,如果尝试KRaft使用到生产环境,会存在数据丢失的风险。
2.2 pulsar架构
Pulsar的架构如下: