目录
本文来源:极客时间vip课程笔记
一、 Pulsar概述
- Apache Pulsar也是一个开源的分布式消息队列产品,最早是由 Yahoo 开发,现在是 Apache 基金会旗下的开源项目。Pulsar 在架构设计上,和其他的消息队列产品有非常显著的区别。我个人的观点是,Pulsar 的这种全新的架构设计,很可能是消息队列这类中间件产品未来架构的发展方向。
二、Pulsar 的架构和其他消息队列有什么不同
- 无论是 RocketMQ、RabbitMQ 还是 Kafka,消息都是存储在 Broker 的磁盘或者内存中。客户端在访问某个主题分区之前,必须先找到这个分区所在 Broker,然后连接到这个 Broker 上进行生产和消费。
2.1、Pulsar 的架构和其他消息队列的Broker区别
- 在集群模式下,为了避免单点故障导致丢消息,Broker 在保存消息的时候,必须也把消息复制到其他的 Broker 上。当某个 Broker 节点故障的时候,并不是集群中任意一个节点都能替代这个故障的节点,只有那些“和这个故障节点拥有相同数据的节点”才能替代这个故障的节点。原因就是,每一个 Broker 存储的消息数据是不一样的,或者说,每个节点上都存储了状态(数据)。这种节点称为“有状态的节点(Stateful Node)”。
- Pulsar 与其他消息队列在架构上,最大的不同在于,它的 Broker 是无状态的(Stateless)。也就是说,在 Pulsar 的 Broker 中既不保存元数据,也不存储消息。那 Pulsar 的消息存储在哪儿呢?我们来看一下 Pulsar 的架构是什么样的。
- 上面Pulsar 的架构图来自 Pulsar 的官方文档。
2.2、Bookie 和 ZK
- 先来看图中右侧的 Bookie 和 ZK 这两个方框,这两个方框分别代表了 Bo