Pulsar 联合创始人 Matteo Merli 作序推荐,写给 Pulsar 学习者的"避坑指南"

Apache Pulsar 被誉为下一代分布式消息系统,旨在打通发布/订阅式消息传递和流数据分析。本文内容选自新书《Apache Pulsar 实战》本书获得 Pulsar 联合创始人 Matteo Merli 作序推荐,是新手学习 Pulsar 必备的必坑教程。

我们同时也邀请 AscentStream 联合创始人兼 CEO 翟佳老师做客图灵八点半,来跟大家聊聊 Apache Pulsar 云原生消息流平台的那些事。欢迎大家预约直播!

早在 2012 年,雅虎团队就开始寻找一款可以支持全球化部署及跨地域复制数据的系统,以满足雅虎在众多应用程序(如雅虎邮箱和雅虎财经)之间传输数据的需求。彼时,业界主要有两种数据传输系统:用于传输关键业务事件的消息队列系统和用于为大规模、可扩展的数据管道传输数据的流系统。雅虎需要一个可以同时支持上述两种使用模式的消息系统,但是已有系统均不能满足这一需求。

在调研过已有的消息队列系统和流系统之后,雅虎的工程师团队认为已有系统均无法满足他们的要求。于是,团队开始自己研发并构建了可以同时支持上述两种使用模式的消息平台,并将其命名为 Pulsar。在之后的 4 年中,雅虎在 10 个数据中心部署并运行 Pulsar,每日处理数十亿条消息。2016 年,雅虎决定将 Pulsar 开源并贡献给 Apache 软件基金会。

我在 2017 年秋天第一次接触 Pulsar。当时,我在 Hortonworks 领导专业服务团队。该团队专注于开发被称为 Hortonworks Data Flow(HDF)的流数据处理系统,这一系统包括 NiFi、Kafka 和 Storm 等组件。我的主要工作是统筹这些组件在客户的基础架构中的部署并帮助客户熟悉流处理应用程序的开发。

在和 Kafka 相关的工作中,最大的挑战是帮助客户正确管理他们的 Kafka 集群,尤其是如何为一个主题确定合理的分区数以平衡速度和硬件使用率,同时还要兼顾未来数据量的增长。熟悉 Kafka 的读者应该能理解,即使是像确定主题分区数这样看似简单的决定,也可能对主题的可扩展性产生深远的影响。即使只是简单地将分区数从 3 个调整为 4 个,也需要漫长的再平衡过程。而在整个再平衡过程中,该主题不能被用于生产和消费消息。

使用过 HDF 的客户有理由不喜欢这种再平衡,因为在数据量增大时,这明显会成为扩展 Kafka 集群的一个障碍。根据经验,他们知道对消息平台进行扩缩容是很难的。更糟糕的是,我们不能在不对主题进行重新配置和添加新的分区以将数据导向新节点的前提下为已有的 Kafka 集群添加几个新节点,以期提高处理能力。无法在没有人工介入或严重依赖脚本的情况下横向扩展消息处理能力,这是很多客户不愿意将他们的消息平台迁移到云上并享受云服务供应商提供的动态伸缩处理能力的主要原因。

正是在此时,我了解到 Pulsar 并发现它的云原生特性格外吸引人,因为它消除了原有消息系统在可扩展性上的痛点。尽管 HDF 让我的客户可以快速上手流数据处理系统,但是随后他们就发现这个系统难以管理且在设计时就没有考虑到如何在云上运行。这时,我意识到 Pulsar 会是一个远优于当前方案的选择。于是,我试着说服产品团队将 HDF 中的 Kafka 替换为 Pulsar。我甚至为 Pulsar 编写了一个可以和我们的产品组件中的 NiFi 进行交互的连接器以加速这一过程,但最终没有成功。

当 Pulsar 的早期开发人员在 2018 年 1 月找到我并问我是否愿意加入他们的小型创业公司 Streamlio 时,我没有丝毫犹豫就同意了。那时的 Pulsar 还是一个年轻的项目,刚刚进入 Apache孵化器。在接下来的 15 个月里,我们努力帮助 Pulsar 顺利通过 Apache 软件基金会的孵化过程并被提升为顶级项目。

那时正值流数据处理热潮的顶峰,而 Kafka 在这个领域占主导地位,因此人们自然将两者混为一谈。当时人们的共识是,Kafka 是市面上唯一的流数据平台。而根据工作经验,我已经认识到了 Pulsar 是更好的系统,即使当时还没有人这么做,我也愿意以推广这种在架构上更为先进的系统为己任。

2019 年春天,Pulsar 社区在贡献者数量和用户数量上都迎来了快速的增长,但市面上仍然缺乏与 Pulsar 相关的权威文档。当撰写本书的机会摆在面前时,我立刻意识到这是一个满足 Pulsar 社区对相关文档需求的好机会。虽然我没能说服我的同事加入,但他们在我的创作过程中提供了很多信息和指引,他们对 Pulsar 的理解也将通过本书一起传递给你。

这本书的目标读者是还不了解 Pulsar 的开发人员,书中包含我在和 Pulsar 项目发起人一起工作并完善 Pulsar 的过程中及我与在生产环境中使用 Pulsar 的团队一起工作的过程中了解到的信息。

我想通过本书帮助读者避开前人在使用 Pulsar 的过程中踩过的一些坑。读完本书,你将有能力用 Java 语言开发基于 Pulsar 的流处理应用程序和微服务。虽然我因为对 Java 语言更为熟悉而选择用它作为本书大部分范例程序的语言,但是我在 GitHub 上也提供了本书中所有范例程序的 Python 语言实现作为参考。

610d0420323b89b181f4c360be0dfa43.jpeg

本书作者既与 Pulsar 项目创始成员共事多年,又有在生产环境中使用 Pulsar 的丰富经验。正是这些宝贵的经验成就了这本 Pulsar“避坑指南”,为想轻松上手 Pulsar 的读者铺平了学习之路。

本书分为 3 大部分,共有 12 章。第一部分概述 Pulsar 的设计理念和用途。第二部分介绍 Pulsar 的特性。第三部分以一个虚构的外卖应用程序为例,详细地介绍 Pulsar Functions 框架的用法,并展示如何用它实现常见的微服务设计模式。本书示例采用 Java 语言,并同时提供 Python 实现。

图文代码一应俱全

39e49d0c651fd4e28372c72697bfa4d5.png

本书特色

  • 与众多其他消息系统相比,Pulsar 有何优势

  • Pulsar 中的关键概念,包括 schema registry 和连接器

  • 利用 Pulsar Functions 框架开发外卖应用程序

  • 十余种微服务设计模式在 Pulsar 中的实现

作译者简介

戴维·克杰鲁姆加德(David Kjerrumgaard),Apache Pulsar Committer,就职于 Pulsar 背后的公司 StreamNative,专注于为开发人员提供 Pulsar 解决方案。他在流处理领域独树一帜,也是 Pulsar 社区的活跃分子。 

吕能,先后毕业于浙江大学和加州大学洛杉矶分校,StreamNative 技术主管、Apache Pulsar Committer,专注于 Pulsar Functions、分布式计算及企业云服务,主导了公司云原生实时计算产品的开发及相关开源社区生态的构建;曾担任 Twitter 工程师,参与研发了实时计算框架 Heron。

蔡正昕,软件工程师,曾就职于亚马逊、StreamNative 等公司,从事数据处理系统和云服务控制面的开发;2019 年开始关注 Pulsar 社区并参与讨论、漏洞修复和特性开发。对 Pulsar、BookKeeper 及在 Kubernetes 环境中运维有状态系统有比较深入的理解。 

孟焕丽,Apache Pulsar Committer、兰州理工大学硕士,目前就职于一家初创公司,从事技术文档写作,对开源社区和新技术有强烈的探索欲。

大咖推荐

45e23f8047a302a64ce8bd8efe11e273.jpeg

直播预告

57446bec68f799fb32a965e8a7b27288.jpeg

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
04-22 31

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值