描述
开 本: 128开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787121422331
- 适用范围广
本书对Pulsar的每个功能点都先做简介与使用说明,然后进行原理级别的剖析,因此适用范围较广。对于不想深入理解Pulsar内部原理,只想先了解并使用Pulsar的读者,可以阅读前面的章节以快速了解Pulsar。如果读者后续需要对Pulsar进行二次开发,或者想深入了解源码,则可以阅读后面的原理章节。在对流程、实现思路有了了解之后,阅读源码的门槛就会低得多。
- 代码量少
本书中基本没有大段的代码,书中的源码也非常简短。本书主要以图和文字的方式对概念和原理进行描述,力求让读者快速理解Pulsar。
《深入解析Apache Pulsar》由浅入深地讲解了Apache Pulsar中各个组件的使用方式及内部实现原理,通过阅读本书,读者可以快速、轻松地了解Apache Pulsar内部的运行机制。
第1章介绍Apache Pulsar的背景,以及如何快速部署一个Apache Pulsar服务。第2章介绍Apache Pulsar客户端的实现机制与原理,包括生产者、消费者、管理流客户端等。第3章介绍Apache Pulsar中重要的逻辑组件—Broker,读者通过这部分内容可以了解Broker所有的特性。除了基础的收发消息,Apache Pulsar还能进行轻量级的函数计算、数据流转。第4章详细介绍Apache Pulsar的Function和Pulsar IO (Connector)。第5章介绍Apache Pulsar的存储层—BookKeeper,通过对本章的学习,读者可以了解Apache Pulsar的数据存储模型及流程实现。第6章介绍线上实战的一些经验,包括高可用、扩/缩容、资源隔离等。
第1章 认识Pulsar
1.1 Pulsar的背景
1.2 Pulsar总体介绍
1.3 个Pulsar程序
1.3.1 环境的准备
1.3.2 下载Pulsar
1.3.3 Pulsar的目录结构
1.3.4 部署Pulsar
1.4 小结
第2章 客户端
2.1 名词介绍
2.2 Topic
2.2.1 Topic简介
2.2.2 Topic的创建与删除
2.2.3 Topic的归属
2.2.4 Topic的迁移
2.2.5 可压缩Topic
2.3 Pulsar客户端
2.3.1 不同的客户端
2.3.2 创建管理流客户端的流程
2.3.3 创建数据流客户端的流程
2.4 生产者客户端
2.4.1 生产者客户端简介
2.4.2 生产者原理解析
2.5 消费者客户端
2.5.1 消费者客户端简介
2.5.2 创建ConsumerImpl
2.5.3 接收消息
2.5.4 确认消息
2.5.5 MultiTopicsConsumerImpl
2.5.6 ZeroQueueConsumerImpl
2.5.7 PatternMultiTopicsConsumerImpl
2.5.8 Consumer的其他接口
2.6 Reader
2.6.1 创建ReaderImpl
2.6.2 Reader的实现原理
2.7 客户端的其他能力
2.7.1 连接管理与线程池管理
2.7.2 LookupService
2.7.3 MemoryLimitController
2.8 小结
第3章 Broker
3.1 Broker简介
3.1.1 Broker的启动流程
3.1.2 Broker的生产消费流程
3.2 Schema
3.2.1 Schema简介
3.2.2 Schema的类型
3.2.3 Schema的管理
3.2.4 Schema的版本与兼容性
3.2.5 Schema的实现
3.3 安全机制
3.3.1 认证授权简介
3.3.2 认证授权框架
3.3.3 默认的认证插件
3.3.4 端到端加密
3.4 配置与策略
3.4.1 配置的加载
3.4.2 动态配置的实现
3.4.3 Namespace策略
3.4.4 Topic策略
3.4.5 策略的实现
3.5 元数据管理
3.5.1 元数据简介
3.5.2 元数据的缓存
3.5.3 元数据的线程安全
3.5.4 Session检测
3.6 存储管理
3.6.1 存储模型
3.6.2 存储流程
3.6.3 游标
3.6.4 消息回溯的实现
3.6.5 数据的清理
3.6.6 BacklogSize与StorageSize
3.7 分层存储
3.7.1 分层存储的使用
3.7.2 数据的卸载与加载
3.8 扩展点
3.8.1 扩展点简介
3.8.2 ProtocolHandler扩展点
3.8.3 BrokerInterceptor
3.8.4 其他扩展点
3.9 负载管理
3.9.1 负载管理简介
3.9.2 负载的上报
3.9.3 负载策略
3.9.4 Bundle的自动分裂
3.9.5 Leader选举与Broker分配
3.10 管理流服务
3.10.1 管理流服务简介
3.10.2 REST接口的重定向
3.10.3 WebSocket
3.11 消息去重
3.12 事务消息
3.12.1 事务简介
3.12.2 事务流程
3.12.3 事务的实现
3.13 Dispatcher
3.13.1 Dispatcher流程
3.13.2 Dispatcher的实现原理
3.14 小结
第4章 Function与Pulsar IO
4.1 Function简介
4.2 Function的使用
4.3 Function的架构
4.4 Function的实现原理
4.4.1 服务的启动
4.4.2 LeaderService的实现
4.4.3 MembershipManager与SchedulerManager的实现
4.4.4 FunctionAssignmentTailer的实现
4.4.5 FunctionMetaDataManager的实现
4.4.6 FunctionRuntimeManager的实现
4.5 Runtime的实现
4.5.1 ThreadRuntime的实现
4.5.2 ProcessRuntime的实现
4.5.3 KubernetesRuntime的实现
4.6 Pulsar IO简介
4.7 部署Connector
4.8 开发Connector
4.9 Pulsar IO的实现
4.10 小结
第5章 BookKeeper存储
5.1 项目结构
5.2 存储简介
5.3 数据写入的实现
5.4 数据读取的实现
5.5 自愈能力
5.6 小结
第6章 实战Pulsar
6.1 高可用
6.1.1 跨区域感知
6.1.2 跨地域复制
6.1.3 跨地域复制的使用
6.1.4 跨地域复制的实现
6.2 扩/缩容
6.3 资源隔离
6.3.1 资源隔离的使用
6.3.2 资源隔离的实现
6.4 小结
写作目的
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社区建设的用户。通过阅读每个功能点的原理部分,可以了解代码的运行逻辑及总体架构,在后续阅读源码或者二次开发时可以做到心中有数。
本书特点
- 适用范围广
本书对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被合并,不断有新的特性被加入,笔者能力有限,也无法保证对所有代码的理解都准确无误。因此,若读者在阅读本书的过程中发现有任何问题或者错误,可以发送勘误到笔者的邮箱:[email protected]。
源代码与官方参考
读者可以直接访问Pulsar的GitHub仓库获取本书配套的源码。
Pulsar官网也有很多文档,特别是API相关的文档。
如果读者想咨询或讨论Pulsar相关的问题,欢迎来笔者的知识星球(Pulsar星球,ID为50221503)一起交流。
致谢
首先感谢我的妻子。我平时工作非常忙,工作日的晚上、周末都需要加班加点来完成本书的编写,如果没有妻子的默默支持,那么这本书是不可能完成的。
独自写完一本书是一项艰巨的任务,虽然已经详细拆分了任务,笔者也自认为对Pulsar源码很熟悉,但在实际写作时还需要不断地翻阅源码并反复推敲。感谢在这个过程中为我提供帮助的各位朋友:辉、陈航、翟佳、郭思杰等。
感谢电子工业出版社博文视点的陈晓猛编辑,陈编辑一丝不苟地制订出版计划,以及有效地完成出版工作,使本书得以顺利出版。
感谢每一位Pulsar的布道者,他们的分享及博文等都在积极推动着Pulsar的发展,也为本书的编写提供了灵感和参考。
Apache Pulsar作为下一代云原生的开源消息和流计算处理平台,在腾讯内外有很多的应用,在腾讯的计费、大数据、云计算上都有大量的实践落地,很好地支撑了我们的海量业务的处理。本书作者作为腾讯内部首个Apache Pulsar的PMC成员,一步一步在这些业务的落地实践中成长起来,在这个过程中积累了很多宝贵的实战经验。作者将自己对源码和架构的解读并结合自己的理解通过此书分享出来,浅显易懂,引人入胜,希望广大读者在阅读中有收获、有成长。
韩欣,腾讯技术专家,腾讯云中间件技术总监
Apache Pulsar是云原生的统一消息流平台,它的存储计算分离、分层分片的云原生架构引领了消息系统的架构变革,同时,Pulsar企业级的流存储层为关键业务场景提供了稳定可靠的保障,是众多国内外知名企业构建统一消息平台时选择的系统之一。
作者从一线开发者成长为社区PMC的过程中,对Apache Pulsar的原理和实现有了精深的理解,以此为基础在本书中对Pulsar各组件做了由浅入深的系统性讲解。同时作者在腾讯的大数据量、高一致性的业务场景中积累了丰富的实战经验,本书挑选其中的核心实践做了总结,对开发运维人员极具价值。本书是一本系统化讲解Pulsar的图书,结构清晰,内容丰富,值得读者阅读。
翟佳,StreamNative联合创始人,Apache Pulsar Committer/PMC Member
评论
还没有评论。