写作目的
2018年9月,Apache Pulsar(简称Pulsar)从Apache毕业,虽然才出现短短几年,但由于其天生适配云原生环境的能力,已经受到了广泛的关注,Pulsar社区的热度也在不断提升。Pulsar不仅增加了许多新特性,在稳定性等方面也不断提升。在本书定稿时,Pulsar 2.8.1已经成为Release版本,腾讯基于Pulsar构建的TDMQ也开始大规模应用,这些都标志着Pulsar已经褪去了最初的青涩,开始在各行各业大放异彩。
由于Pulsar近几年才在国内兴起,所以相关的中文资料较少。虽然有TGIP、Pulsar公众号、Pulsar技术群,官网的文档也开始不断地完善,网上也有一些Pulsar文章,但许多知识点都非常碎片化,而且网上很多观点其实是错误的。另外,官网的文档都是英文的,即使切换到中文,对于专业性较强的术语,Google的翻译结果也比较难以让人理解。笔者一直奉行体系化的学习,因此对Pulsar做了全面的梳理。笔者还记得刚接触Pulsar时,国内没有任何Pulsar相关的资料,Pulsar官网也只有几页英文文档。为了让更多的开发者了解Pulsar,降低Pulsar的使用和开发门槛,也算是对自己这段时间工作的总结,笔者编写了本书。
读者对象
Ÿ 想了解和使用Pulsar的初级用户。本书详细介绍了Pulsar的各个功能点,以及各个功能点的实现原理。
Ÿ 想二次开发、参与Pulsar社区建设的用户。通过阅读每个功能点的原理部分,可以了解代码的运行逻辑及总体架构,在后续阅读源码或者二次开发时可以做到心中有数。
本书内容
本书共6章,第1章主要介绍Pulsar的一些背景知识,并初步上手Pulsar,讲解了代码目录结构、Pulsar部署,等等。第2章主要介绍Pulsar的客户端,包括生产者(Producer)客户端和消费者(Consumer)客户端,它们是请求的发起者,其中还会介绍Pulsar中最重要的概念Topic。第3章主要介绍Pulsar的核心组件Broker,从Broker的启动开始,剖析Broker中几乎所有重要的功能点。第4章主要介绍Pulsar Function和Pulsar IO,这些能力通常被应用在轻量级计算和流式计算中。第5章主要介绍Pulsar的存储层BookKeeper,包括写入、读取、数据自动恢复的实现。第6章属于实战篇,介绍日常业务中一些架构上的高级特性,比如跨地域复制、动态扩/缩容等。
勘误和支持
笔者编写本书用了近一年的时间,其间Pulsar一直在迅速发展,代码与机制在不断变化,书中可能存在部分内容与最新代码不一致的情况。另外,Pulsar的代码接近70万行,社区发展非常迅速,每天都有多个PR被合并,不断有新的特性被加入,笔者能力有限,也无法保证对所有代码的理解都准确无误。因此,若读者在阅读本书的过程中发现有任何问题或者错误,可以发送勘误到笔者的邮箱:linlin@apache.org。
源代码与官方参考
读者可以直接访问Pulsar的GitHub仓库获取本书配套的源码。
Pulsar官网也有很多文档,特别是API相关的文档。
如果读者想咨询或讨论Pulsar相关的问题,欢迎来笔者的知识星球(Pulsar星球,ID为50221503)一起交流。
林琳