从分布式系统的部署和管理角度来看,大多数分布式系统都将集群作为的最高级别抽象,如果涉及到跨地域部署时会在不同地域部署多个集群,但这需要将每个集群视为独立的系统进行配置和管理。 Pulsar提供了一个比Pulsar Cluster(Pulsar集群)更高级别的抽象,叫Pulsar Instance(Pulsar实例)。一个Pulsar Instance由多个Pulsar Cluster组成,一个Pulsar实例中的集群之间可以相互跨地域复制数据。 Pulsar Instance作为一个唯一的单元,可以从各地域中的一个位置统一管理。

P.S.: 用Instance作为最高抽象来包含Cluster,感觉有一丢丢别扭~

这里对Pulsar学习一个是渐进的过程,因此本节对Pulsar架构的了解先不涉及Pulsar实例和跨地域复制,只是先从单个Pulsar集群的角度开始。

pulsar-cluster.png

单个的Pulsar集群由以下几部分组成:

  • Pulsar Proxy: 即Pulsar代理,一个集群可以有一个或多个Pulsar代理,Pulsar代理是无状态的,Proxy作为集群的智能路由层,是负责Pulsar客户端与Pulsar集群交互的统一网关。
  • Pulsar Brokers: 一个集群有多个Broker,Broker也是无状态的,Broker作为集群的服务层,Pulsar代理会将客户端的访问请求转发到正确的Broker上。Broker作为服务层与Pulsar的存储层进行交互,负责处理和负载均衡Producer客户端发出的消息,并将这些消息分派给Consumer客户端。
  • Bookies: 一个集群有多个Bookie节点(BookKeeper节点组成Bookeeper集群)负责消息的持久化存储。
  • Zookeeper集群: 用于集群级别的配置和协调,Zookeeper中存储Pulsar集群的所有元数据(例如Topic元数据、Schema、Broker负载数据等等)

从上面的内容可以看出Pulsar集群在架构上采用了多层设计,确保了消息数据从Broker中分开存储,Broker的无状态特性使其可以轻松的水平扩展。

参考