Pulsar 系统架构设计全解析

Pulsar系统架构设计

1.1.整体架构

Apache Pulsar 和其他消息系统最根本的不同是采用分层架构。

Apache Pulsar 集群由两层组成:

无状态服务层:由一组接收和传递消息的Broker组成

有状态持久层:由一组Apache BookKeeper存储节点组成,可持久化地存储消息
在这里插入图片描述
Apache Pulsar 主要包括 Broker, Apache BookKeeper, Producer, Consumer等组件。

Broker:无状态服务层,负责接收和传递消息,集群负载均衡等工作,Broker 不会持久化保存元数据,因此可以快速的上、下线。
Apache BookKeeper:有状态持久层,由一组名为 Bookie 的存储节点组成,持久化地存储消息。
Producer :数据生产者,负责发布数据到 Topic。
Consumer:数据消费者,负责从 Topic 订阅数据。

除了上述的组件之外,Apache Pulsar 还依赖 Zookeeper 作为元数据存储。与传统的消息系统相比,Apache Pulsar 在架构设计上采用了计算与存储分离的模式,Pub/Sub 相关的计算逻辑在 Broker 上完成,数据存储在 Apache BookKeeper 的 Bookie 节点上。

Pulsar客户端不直接与存储层Apache BookKeeper交互。客户端也没有直接的 BookKeeper 访问权限。这种隔离,为 Pulsar 实现安全的多租户统一身份验证模型提供了基础。

1.2.Broker

Broker集群在Apache Pulsar中形成无状态服务层。Broker不在本地存储任何消息数据。Pulsar主题的消息,都被存储在分布式日志存储系统(Apache BookKeeper)中。

每个主题分区(Topic Partition)由Pulsar分配给某个Broker,该Broker称为该主题分区的所有者。 Pulsar 生产者和消费者连接到主题分区的所有者 Broker,以向所有者代理发送消息并消费消息。
如果一个Broker发生故障,Pulsar会自动将其拥有的主题分区移动到群集中剩余的某一个可用 Broker 中。重点说明:由于Broker是无状态的,因此当发生Topic 的迁移时,Pulsar 只是将所有权从一个 Broker 转移到另一个 Broker,并不会有任何数据复制发生,故障转移非常轻量。
下图显示了一个拥有 4 个 Broker 的 Pulsar 集群,其中 4 个主题分区分布在 4 个 Broker 中。每个 Broker 拥有并为一个主题分区提供消息服务。
在这里插入图片描述

1.3.Bookkeeper

Apache BookKeeper 是 Apache Pulsar 的持久化存储层。 Apache Pulsar 中的每个主题分区本质上都是存储在 Apache BookKeeper 中的分布式日志。

每个分布式日志又被分为Segment分段。每个Segment分段作为Apache BookKeeper中的一个 Ledger,均匀分布并存储在BookKeeper群集中的多个Bookie中。

通过 Segment 分段的方式,主题分区中的消息可以均匀和平衡地分布在群集中的所有 Bookie 中。 这意味着主题分区的大小不仅受一个节点容量的限制; 相反,它可以扩展到整个 BookKeeper 集群的总容量。

下面的图说明了一个分为 x 个 Segment 段的主题分区。 每个 Segment 段存储 3 个副本。 所有 Segment 都分布并存储在 4 个 Bookie 中。

在这里插入图片描述

Pulsar架构设计优势

Apache Pulsar 计算与存储分离的架构,以及分片存储的设计为 Apache Pulsar 带来了相比于传统基于分区存储 MQ 的一些优势:

Broker 和 Bookie 相互独立,方便实现独立的扩展以及独立的容错。
Broker 无状态,便于快速上、下线,更加适合于云原生场景。
分区存储不受限于单个节点存储容量。
分区数据分布均匀。

2.1Broker 扩展

在 Pulsar 中 Broker 是无状态的,可以通过增加节点的方式实现快速扩容。当需要支持更多的消费者或生产者时,可以简单地添加更多的 Broker 节点来满足业务需求。Pulsar 支持自动的分区负载均衡,在 Broker 节点的资源使用率达到阈值时,会将负载迁移到负载较低的 Broker 节点,这个过程中分区也将在多个 Broker 节点中做平衡迁移,一些分区的所有权会转移到新的Broker节点。

2.2 Bookie扩展

存储层的扩容,通过增加 Bookie 节点来实现。通过资源感知和数据放置策略,流量将自动切换到新的 Bookie 节点中,整个过程不会涉及到不必要的数据搬迁,即不需要将旧数据从现有存储节点重新复制到新存储节点。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值