Apache Pulsar原理解析与应用实践
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

前言

为什么要写本书

Pulsar是一个集消息传递、消息存储、轻量化函数式计算于一体的云原生流数据平台。Pulsar提供数据存储与消费能力,凭借优秀的架构设计、强大的可扩展性,在消息队列、流数据处理等多个领域被广泛使用。

笔者最初接触Pulsar时其社区版本是2.4,彼时的Pulsar已崭露头角。但当时关于Pulsar的中文资料相当少,更不用说中文图书了,很多问题需要通过求助于社区和阅读源码来解决。那时的Pulsar虽然优秀,但是对于初学者来说学习与使用成本较高。在实际项目中,笔者及团队伙伴使用Pulsar构建了数据服务,也发掘出Pulsar在工程实践中的价值。笔者在学习与工作的过程中有意识地整理了大量与Pulsar相关的资料。

Pulsar在2016年发布了第一个社区版本,经过多年的发展,越来越多的头部公司使用Pulsar来构建消息服务。截至本书写作时,Pulsar已经迭代到2.10版本,功能日益完善,社区生态方兴未艾。通过Pulsar,你不仅可以构建消息队列服务,还可以构建可靠的、高吞吐量的大数据应用,甚至可以为金融场景提供高可靠、高性能的服务支持。

很高兴有机会将自己学习与实践Pulsar的经验整理成册。希望本书能够帮助初学者尽快上手Pulsar,并构建出更加稳健的服务。

读者对象

根据对Pulsar使用需求的不同,本书的读者群可以分为如下几类。

❑ 希望系统学习Pulsar并快速上手使用的初学者。

❑ 希望掌握Pulsar的核心运行原理及高级应用的中高级开发者。

❑ Pulsar运维人员。

❑ Pulsar爱好者,如Pulsar开源社区爱好者、对Pulsar感兴趣的其他人员等。

本书特色

本书从应用实践入手,注重理论与实践的结合,可让读者在快速上手应用的基础上了解其背后的原理。在介绍基础理论的同时,本书重点介绍如何基于理论快速构建出稳定的Pulsar服务,以及依靠丰富的Pulsar生态构建出以Pulsar为核心的一系列数据服务。

如何阅读本书

本书共11章,各章的主要内容如下。

第1章的目标是帮读者整体认识Pulsar。本章不仅对Pulsar的背景和特性进行了介绍,还对比了其他几种开源消息队列工具。

第2章介绍Pulsar的基本概念与架构。通过对本章的学习,读者可以建立对Pulsar原理和构成的全局认识,为学习后续内容打下基础。

第3章介绍Pulsar的安装与部署过程。通过对本章的学习,读者可以在分布式、单机、容器化等多种环境下完成Pulsar的部署。

第4章以Java语言为例,介绍Pulsar API的基本使用方法。通过对本章的学习,读者能够具备Pulsar客户端开发的基本能力。

第5章介绍Pulsar中Broker、BookKeeper、ManagedLedger以及与主题管理相关的核心组件的工作原理。学完本章,读者可以掌握Pulsar的运行原理。

第6章介绍事务、消息队列协议、分层存储等Pulsar高级特性的原理与使用方法。

第7章介绍Pulsar Function与Pulsar I/O,以及如何依靠Pulsar Function这一轻量级计算引擎实现简单的数据处理功能。

第8章介绍Pulsar SQL和Trino。通过对本章的学习,读者可以了解Pulsar SQL的使用与配置方法,以及Trino Pulsar连接器的实现原理。

第9章介绍生产环境中使用Pulsar所需完成的安全配置,以及Pulsar运维所需监控和管理工具,最后还介绍了集群管理的相关知识。

第10章介绍如何将Pulsar与Flink结合,以及如何利用Flink的计算能力构建实时计算服务。

第11章介绍与Pulsar应用实践相关的经验,包括Pulsar应用模式、Pulsar与Spark集成、Pulsar数据库的变更数据捕获(CDC)和Pulsar可靠性优先场景等内容。

本书各章内容相对独立,对于初学者来说,建议从前到后依序阅读;对于有一定基础的读者来说,建议根据自身情况有选择地阅读。

勘误和支持

由于笔者的水平有限,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。为此,笔者特意创建了一个GitHub仓库,地址为https://github.com/golden-yang/pulsar-demo,你可以将书中的错误或关于本书的疑问发布在Issue页面中。书中的全部源文件也可以从这个网址下载。

致谢

首先感谢腾讯公司可爱的同事们,感谢平时在工作和生活中一直支持笔者的领导和前辈。感谢韩亮、李苏兴、李玮、何川、何小成、王文植、吴兆松、张博、朱兴照、周维等多位同事在工作上的指导与支持。

感谢杭州电子科技大学的老师们,他们在笔者的研究生阶段帮笔者增长了见识,明确了发展方向。特别感谢笔者的硕士导师张建海教授、孔万增教授、朱莉老师三年里对笔者的帮助。是各位老师的言传身教让笔者拥有了挑战一切困难的勇气。感谢实验室的师兄、师姐、师弟、师妹多年的支持与陪伴。

感谢Pulsar社区中每一位开源贡献者,Pulsar能成为一个成熟、优秀的开源项目,离不开所有人的努力。

最后感谢父母,感谢你们将笔者培养成人。感谢从写作初期就鼓励笔者大胆尝试的妻子。书稿完成之时家里也要准备迎接新成员。谨以此书献给笔者最亲爱的家人们!