写点什么

为什么要选择 Apache Pulsar(一)

  • 2017-11-26
  • 本文字数:2025 字

    阅读完需:约 7 分钟

Apache Pulsar 是由 Yahoo 开发并开源的下一代发布订阅消息系统。Pulsar 用于解决现有开源消息系统的不足,并已在 Yahoo 的生产环境中运行了三年多时间,助力 Yahoo 的主要应用,如 Yahoo Mail、Yahoo Finance、Yahoo Sports、Flickr、Gemini 广告平台和 Yahoo 的分布式键值存储系统 Sherpa。Pulsar 于 2016 年底开源,目前是 Apache 软件基金会的孵化器项目。在这篇文章里,我们将介绍 Pulsar 的一些主要特性。

上一篇文章中,我们介绍了Pulsar 的一些组件概念和术语。Pulsar 集群主要由三部分组成:broker 集群,bookie 集群,以及用于协调配置管理的ZooKeeper 集群。Pulsar broker 组件用于接收、保存和传递消息。bookie 是Apache BookKeeper 服务器,为Pulsar 提供持久性的存储,一直到消息被消费掉。架构图如下所示。

图1 Pulsar 集群架构图

灵活的消息模型

传统的消息模型有两种:队列模型发布 / 订阅模型。队列是一种点到点的通信模型——可能有多个消费者从服务器上读取消息,而每个消息只会被发给其中的一个消费者——因此,数据的处理可以被分摊给多个消费者,从而获得伸缩性。发布/ 订阅是一种广播式的通信模型——消息被广播给所有的消费者。

Pulsar 通过统一的 API 实现了这两种模型——生产者向主题 (topic) 发布消息,消息被广播给不同的订阅者,消费者订阅主题以便消费消息。消费者可以灵活地选择消费消息的方式——独享方式、共享方式或失效备援方式。对于队列模型来说,如果采用共享方式,并使用了轮询策略,那么应用程序就可以将负载分摊给消费者。与其他消息系统不同的是,Pulsar 允许活跃消费者的数量超过主题分区的数量。

因为 Pulsar 使用 BookKeeper 作为流式存储组件,所以它也对外提供了一组流式 Reader API 来读取底层的日志,应用程序可以调用这组 API 从任意位置开始消费消息。

灵活的部署模型

Pulsar 可以被灵活地部署到不同的环境里,它可以运行在裸机上、本地或云端的 Kubernetes 集群上、Google Container Engine 和 AWS 上。Pulsar 也可以作为单独节点运行,用于开发和测试。在这种情况下,Pulsar broker、bookie 和 ZooKeeper 都以独立进程的方式运行。

多租户

Pulsar 在一开始就被设计成可以在私有云和公有云上部署的托管服务,其他的开源消息系统都没有提供这种特性。对于大中型企业来说,共享一个 Pulsar 集群要比让每个团队都使用自己的集群成本低得多。虽然每个团队可以自己部署集群,但这要求他们对系统内部原理非常了解,知道如何配置、监控和诊断问题。另外,在整个组织内共享一个集群可以降低成本,因为集群资源可以得到更好的利用,只需要一个 DevOps 团队就足以应付所有的工作,而且可以根据负载高峰期和项目增长作出容量规划。

多地域复制

与其他消息系统不一样的是,Pulsar 将多地域复制作为首要特性。用户只需要配置好区域,并启用跨集群消息复制,剩下的事情由 Pulsar 来完成。数据会持续不断地被复制到远程的 Pulsar 集群上。如果数据中心之间发生网络故障,数据会被保存下来并进行重试,直到复制成功为止。

Pulsar 可以在不同地理区域的多个数据中心上进行并行的数据复制。Yahoo 的键值存储系统 Sherpa 使用 Pulsar 来复制预写式日志(WAL),日志被复制到十个不同的地理区域,实现最终一致性。多地域复制方式也很灵活,可以在私有云之间复制,也可以在私有云和公有云之间复制,或者在公有云之间复制,甚至在数据中心和私有云(或公有云)之间复制。对于想要迁移到云端的大型组织来说,他们可以将 Pulsar 部署到多个不同的云上,然后在多个云之间复制数据。

持久性

Pulsar 在收到消息并进行确认之后,它可以保证数据不会因为各种故障而丢失掉。持久性保证强度由保存数据的磁盘数量来决定,而磁盘数量则由配置的“9”的个数来决定。Pulsar 使用 bookie 来保证持久性,在收到一个消息之后,它将消息发送给多个 bookie 节点。bookie 节点在收到消息后,将它保存到内存里,同时也往 WAL 里写入一份。bookie 在向 broker 发送确认之前会将日志强制写入稳定的存储。与数据库的事务类似,WAL 可以保证数据不会丢失,即使机器出现故障。在重启机器后,通过重放 WAL 就可以恢复数据。

除此之外,即使有多个节点发生故障,消息仍然不会丢失。Pulsar 将每个消息复制给多个 bookie 节点,并在若干个 bookie(根据配置的复制系数)写入成功之后才会向生产者发送确认。这样可以保证在发生多个节点故障的情况下,仍然不会丢失数据。

得益于 BookKeeper 内部 IO 机制的优化,在保证强持久性的同时,Pulsar 仍然能够提供很高的吞吐量和很低的延迟。

总结

Pulsar 是下一代发布订阅消息系统,弥补了其他开源消息系统的不足。在这篇文章里,我们介绍了 Pulsar 仅通过一套 API 实现了灵活的消息模型——队列和发布订阅,还介绍了企业级的多租户特性、多地域复制和强持久性保证。在下一篇文章里,我们将介绍更多的特性,比如 IO 的读写隔离、伸缩性、安全和运维成熟度。

查看英文原文 Why Apache Pulsar? Part 1

感谢杜小芳对本文的审校。

2017-11-26 17:159494
用户头像

发布了 322 篇内容, 共 154.8 次阅读, 收获喜欢 148 次。

关注

评论 1 条评论

发布
用户头像
不错
2022-07-04 14:51
回复
没有更多了
发现更多内容

LangChain:打造自己的LLM应用 | 京东云技术团队

京东科技开发者

langchain LLM模型 企业号 8 月 PK 榜

盘点一对一直播源码iOS系统维持平台稳定功能(一):弹性扩缩容

山东布谷科技

软件开发 源码搭建 iOS SDK 一对一直播源码 弹性扩缩容

中国出海企业如何防范恶意退货欺诈

极客天地

落实《中国人民银行业务领域数据安全管理办法》,极盾科技是怎么做的?

极盾科技

数据安全

站在营销的角度浅谈直播行业

山东布谷网络科技

直播 直播app 直播APP源码

etl engine 监控面板 为管理者掌握平台运行情况,决策执行方案提供即时数据支撑

weigeonlyyou

数据交换 物联网 数据采集 ETL Kafka ETL

NFTScan 正式上线 zkSync NFTScan 浏览器和 NFT API 数据服务

NFT Research

NFT\

蓝牙智能设备数据采集平台化方案 | 京东云技术团队

京东科技开发者

数据采集 企业号 8 月 PK 榜 蓝牙智能设备

如何通过Python线程池实现异步编程?

互联网工科生

Python 线程池

第二期开源答题挑战,看看你是什么级别吧!

开放原子开源基金会

开源 挑战 答题

分布式服务高可用实现:复制 | 京东物流技术团队

京东科技开发者

数据库 复制 高可用设计 分布式服务 企业号 8 月 PK 榜

华为开发者大会2023即将召开:HarmonyOS 4 小艺或将迎来全新升级

最新动态

方法论揭秘|研发数字化转型,这家保险企业做对了什么?

万事ONES

华为云第二期线下meetup·北理工站圆满落幕

华为云开源

开源

MIAOYUN获评“2023年度一云多芯稳定安全运行优秀案例”

MIAOYUN

解决方案 信创 中国信通院 信创云 可信云大会

什么是数字化?数字化转型概念是怎么兴起的?

优秀

数字化转型 数字化

权威认证 I ONES 连续5年通过可信云企业级 SaaS 服务评估

万事ONES

FastAPI简介:快速理解Python Web框架的新标杆

Liam

Python 程序员 后端 web开发 FastApi

如何为物联网设备注入“华为云+鸿蒙DNA”?

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 企业号 8 月 PK 榜

代码随想录Day36 - 贪心算法(五)

jjn0703

数据智能:加速企业数字化转型

软通咨询

数据智能 #人工智能 数字化咨询

数字化转型背景下经管大数据课程教学能力进阶提升训练营,线下培训圆满收官!

ModelWhale

人才培养 学科交叉 师资培训 教育数字化

EPM时代,国产化替代夺回话语权

智达方通

企业管理软件 EPM 智达方通 全面预算管理 智达方通EPM

低代码是什么意思?

优秀

低代码

医疗知识图谱问答——文本分类解析

北桥苏

Python 聊天机器人 neo4j 图数据库 知识图谱

华为云与医药企业共话AI 助力医药行业数字化转型和创新发展

新消费日报

高性能网络建设指南,《智算中心网络架构白皮书》开放下载

Baidu AICLOUD

大模型训练 高性能网络 RDMA

一种轻量级定时任务实现 | 京东云技术团队

京东科技开发者

定时任务 系统稳定性 轻量级 企业号 8 月 PK 榜

LED透明屏清晰度受什么影响

Dylan

广告 案例 信息 LED显示屏 屏幕

GaussDB技术解读系列之SQL Audit,面向应用开发的SQL审核工具

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 8 月 PK 榜

全新升级!腾讯云大数据ES Serverless服务开启日志分析新体验

腾讯云大数据

elastic

为什么要选择Apache Pulsar(一)_开源_Karthik Ramasamy_InfoQ精选文章