Pulsar基础(二)——Pulsar组件介绍
Pulsar 组件Brokerbroker是一个无状态组件, 主要负责运行另外的两个组件:一个HTTP服务器,它暴露了REST系统管理接口以在生产者和消费者之间进行Topic查找的API一个调度分发器,它是异步的TCP服务器,通过自定义二进制协议应用于所有相关的数据传输出于性能考虑,消息通常从Managed Ledger缓存中分派出去,除非积压超过缓存大小。如果积压的消息对于缓存来说太大了, 则
Pulsar 组件
Broker
broker是一个无状态组件, 主要负责运行另外的两个组件:
- 一个HTTP服务器,它暴露了REST系统管理接口以在生产者和消费者之间进行Topic查找的API
- 一个调度分发器,它是异步的TCP服务器,通过自定义二进制协议应用于所有相关的数据传输
出于性能考虑,消息通常从Managed Ledger缓存中分派出去,除非积压超过缓存大小。如果积压的消息对于缓存来说太大了, 则Broker将开始从BookKeeper那里读取Entries(Entry同样是BookKeeper中的概念,相当于一条记录)。
最后,为了支持全局Topic异地复制,Broker会控制Replicators追踪本地发布的条目,并把这些条目用Java 客户端重新发布到其他区域
Zookeeper
Pulsar使用Zookeeper进行元数据存储、集群配置和协调
- **配置存储:**存储租户,命名域和其他需要全局一致的配置项
- 每个集群由自己独立的Zookeeper保存集群内部配置和协调信息,例如归属信息,broker负载报告。Bookeeper ledger信息等等
Bookeeper
- Pulsar使用Bookeeper进行持久化存储
Apache Pulsar 为应用程序提供有保证的信息传递, 如果消息成功到达broker, 就认为其预期到达了目的地。
为了提供这种保证,未确认送达的消息需要持久化存储直到它们被确认送达。这种消息传递模式通常称为持久消息传递 . 在Pulsar内部,所有消息都被保存并同步N份,例如,2个服务器保存四份,每个服务器上面都有镜像的RAID存储。
Pulsar用Apache bookKeeper作为持久化存储。 bookKeeper是一个分布式的预写日志(WAL)系统,有如下几个特性,特别适合Pulsar的应用场景:
- 使Pulsar能够李永独立的日志,称为Ledgers、可以随着时间的推移为Topic创建多个Ledgers
- 它为处理顺序消息提供了非常有效的存储
- 保证了多系统挂掉时Ledgers的读取一致性
- 提供不同的Bookies之间均匀IO分布的特性
- 它在容量和吞吐量方面都具有水平伸缩性。能够通过将bookies增加都集群中来提升吞吐量
- Bookies被设计成可以承载数千的并发读写的ledgers。使用多个磁盘设备(一个用于日志,另一个用于一般存储),这样Bookies可以将读操作的影响和对于写操作的延迟分隔开
Ledger介绍
Ledger是一个只追加的数据结构,并且只有一个写入器,这个写入器负责多个Bookeeper存储节点的写入,ledger的条目会被复制到多个Bookies。Ledger本身有着非常简单的语义
- Pulsar Broker可以创建、添加内容和关闭Ledger
- 当一个Ledger被关闭后,除非明确的要写数据或者是因为写入器挂掉导致Ledger关闭,ledger将会以只读打开。
- 当ledger的条目不再有用的时候,整个ledger可以被删除(Ledger的分布式跨Bookie的)
Pulsar代理(Pulsar Proxy)
Pulsar客户端和Pulsar集群交互的一种方式就是直连Pulsar brokers。然而,在某些情况下,这种直连既不可行也不可取,因为客户端并不知道broker的地址。 例如在云环境或者Kubernetes以及其他类似的系统上面运行Pulsar,直连brokers就基本上不可能了。
Pulsar proxy 为这个问题提供了一个解决方案, 为所有的broker提供了一个网关, 如果选择运行了Pulsar Proxy. 所有的客户都会通过这个代理而不是直接与brokers通信
更多推荐



所有评论(0)