导读:在传统消息系统中,存在一些问题。一方面,消息的存储和服务一般是紧耦合的,节点的扩容和运维不便,特别是在需要多备份来保证高可用性的场景。另一方面,消息的消费模式被固定,在企业内部需要维护多套系统来保证不同的消息消费场景。另外消息系统中,多租户,多机房互备等企业级的特性和功能也不太丰富。
Apache Pulsar 采用了分层的架构,解决了存储计算的耦合,同时提供了很好的扩展性和可维护性。Pulsar 也通过订阅层的抽象,提供了统一的消息消费模型。特别是在 Pulsar 的设计之初,就注重对多租户,多机房互备等方面的需求,提供了众多完备的企业级的特性。
Apache Pulsar 从 2015 年初在 Yahoo 全球近十个机房内部大规模部署,稳定服务了 Yahoo 内部邮箱,金融,Flickr,广告,NoSQL 等众多的应用场景,一共创建了 80 多个租户,230 多万个 topic。智联招聘在 18 年用 Pulsar 替换了线上原有的 RabbitMQ,作为内部的消息总线,服务内部的 20 多个应用,每天会产生 6 亿多条消息和 3TB 的数据。在减轻硬件,运维和部署成本的同时,为系统提供了更好的服务质量和扩展性。
Apache Pulsar,是一个使用 Apache Bookkeeper 提供持久化的 pub/sub 消息平台,它可以提供如下特性:
持久化:采用 BookKeeper 作为存储层,灵活性强。
Ordering:每个消息有全局唯一的 ID,消息重发简单。
Delivery Guarantees:At least once, at most once 和 effectively once。
高吞吐:单个分区高达 1.8 M 消息 / 秒。
低延迟:99% 的生产延迟小于 5 ms。
统一消息模型:同时支持两种消费模型,流和队列。
多租户:单个群集可支持多租户和用例。
跨地域复制:原生可用。
高可用、高扩展性、易运维
架构概述
Pulsar 使用分层结构,将存储机制与 broker 隔离开来。此体系结构为 Pulsar 提供以下好处:
1、独立扩展 broker,负责处理 Producer 发来的消息并分发给消费者。通过一个全局的 ZK 集群来处理多种协作式任务,例如说基于地理位置的复制。并将消息存储到 BookKeeper 中,同时单个集群内也需要有一套 ZK 集群,来存储一些元数据。
2、独立扩展存储(Bookies)
3、更容易容器化 Zookeeper, Broker and Bookies
4、ZooKeeper 提供集群的配置和状态存储
亮点如下:
1、负载均衡器:Pulsar 内置负载均衡器,可在内部将负载分配给所有 broker
2、服务发现:Pulsar 具有内置的服务发现功能,可以识别在何处以及如何连接到 broker。
3、全局复制器:可以在为同一个命名空间配置的 N 个 borker 之间复制数据。
4、全局 ZK:全局 ZK 用于实现跨地域复制
跨地域复制
跨地域复制是 Pulsar 提供的解决方案。全局集群可以在名称空间级别进行配置,以便在任意数量的集群(n-wayMesh 解决方案)中进行复制。从下面的示例中,数据中心 C 没有消费者,但数据中心 A 或 B 中仍会根据订阅模型消费消息。
多租户
多租户特性通过对数据存储的隔离,帮助为企业建立 Pulsar 集群。这一内置功能将大大降低组织的基础设施建设和运营成本。
零 Rebalancing 时间
Pulsar 的分层架构和代理的无状态性质有助于实现零 Rebalancing 时间。如果一个新的 broker 被添加到集群中,它将立即可用;无需在集群中 rebalancing 数据。
从 Bookies 的角度来看:当一个新的 Bookie 添加到集群中时,由于其底层的分布式日志架构(读 / 写隔离),该节点立刻可以写入数据。基于段复制配置的数据 rebalance 在后台进行,不会对集群产生任何影响。
统一的队列和流模型
Pulsar 使用同一个模型支持流和队列语义。这个特性可以通过订阅模型实现。消费者使用订阅模型中的任何一个订阅主题:
1、Exclusive – 支持流语义
2、Failover – 支持流语义
3、Shared – 支持队列语义
函数
函数是能够在 Pulsar 内部或外部存在的本地监听器。从用途本身来看,函数可用于基于内容的路由,这将帮助企业应用程序路由预期的消息。
Proxy
当 broker 部署在云或 Kubernetes 中时,需要使用 proxy 将 broker 暴露于外部世界。Proxy 本身可以提供身份验证和授权。Proxy 内置将授权令牌传递给 broker 以进行命名空间权限验证的功能。
结论
Apache Pulsar 使用基于分层体系结构的 pub/sub 模型,它具有跨地域复制、多租户、零 Rebalancing 时间等功能。
原文地址:https://medium.com/@pckeyan/a…
作者:Karthikeyan Palanivelu,由方圆翻译
不知大家读完此文,是否被 Pulsar 所吸引?它确实弥补了一些竞品的短板,例如地域复制、多用户、扩展性、读写隔离等等。如果大家想了解更多关于 Apache Pulsar 的知识,那么就参加本月 21-23 日,由 msup 和高可用共同举办的 GIAC 全球互联网架构大会吧!
Apache Pulsar 和 Apache BookKeeper 的 PMC 成员和 Committer 翟佳将出席 GIAC 深圳站,作为中间件专场讲师分享《下一代分布式消息系统 Apache Pulsar》的话题。参加 2019 年 GIAC 深圳站,可以了解业界动态,和业界专家近距离接触。
本届大会,组委会还特别邀请到了 105 位来自 Google、微软、Oracle、eBay、百度、阿里、腾讯、商汤、图森、字节跳动、新浪、美团点评等一线互联网大厂嘉宾作为讲师出席,分享他们的实践经验、遇到的问题及解决方案。现在席位所剩不多,快来识别图中二维码报名吧!