描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787121467172
本书抽丝剥茧,洞悉云原生事件流系统的本质:
实例丰富,用生活案例轻松开启消息系统之旅,
溯本求源,介绍了Pulsar的前世今生与灵感来源,
环环相扣,剖析了消费者、生产者的工作原理,
实战指导,展示了实现最佳部署和运维的法宝。
本书专为想要学习并掌握Apache Pulsar的读者打造,是一本入门图书。全书共有13章内容。第1章和第2章,从生活实例中引入实时消息系统和事件驱动的概念,帮助大家理解Apache Pulsar系统存在的必要性,以及Pulsar的独特性和价值定位。第3章介绍了Pulsar在雅虎的起源故事、设计理念与应用场景。第4章探究了Pulsar内部的主要组件及其工作原理,帮助大家构建对Pulsar的整体架构认知。第5章到第10章,详细介绍了Pulsar消费者、生产者的工作原理,应用于生产和消费消息且与第三方系统交互的框架Pulsar IO,以及Pulsar Functions、分层存储、Pulsar SQL等Pulsar的独特理念和关键特性。第11章与第12章,展示了如何在诸多环境中部署Pulsar,以及在运维Pulsar的过程中需要关注的指标。在第13章中,作者结合个人经验阐述了Pulsar未来值得探索的领域和方向。 本书配图生动形象,实例丰富,不仅提供了很多代码示例,还提供了多篇附录,以作参考。
前言 ……………………………………………………………………………………….xvii
第 1 章 实时消息的价值 ……………………………………………………………… 1
流动的数据 ………………………………………………………………………………………………1
资源效率 ………………………………………………………………………………………………….3
使用场景 ………………………………………………………………………………………………….4
银行 …………………………………………………………………………………………………..5
医疗 …………………………………………………………………………………………………..6
安全 …………………………………………………………………………………………………..7
物联网 ……………………………………………………………………………………………….8
小结 ………………………………………………………………………………………………………10
第 2 章 事件流和事件代理 …………………………………………………………. 11
发布 / 订阅 …………………………………………………………………………………………….. 11
队列 ………………………………………………………………………………………………………13
故障类型 ………………………………………………………………………………………………..15
推送与轮询 …………………………………………………………………………………………….15
为什么需要 Pulsar ……………………………………………………………………………………16
流和队列的统一 ………………………………………………………………………………..16
模块化 ……………………………………………………………………………………………..16
性能 …………………………………………………………………………………………………18
小结 ………………………………………………………………………………………………………19
第 3 章 认识 Pulsar …………………………………………………………………. 20
Pulsar 的起源 ………………………………………………………………………………………….20
Pulsar 的设计理念 ……………………………………………………………………………………21
多租户 ……………………………………………………………………………………………..22
跨地域复制 ………………………………………………………………………………………23
性能 …………………………………………………………………………………………………27
模块化 ……………………………………………………………………………………………..27
Pulsar 生态 ……………………………………………………………………………………………..28
Pulsar Functions ………………………………………………………………………………..28
Pulsar IO ………………………………………………………………………………………….29
Pulsar SQL ……………………………………………………………………………………….30
Pulsar 成功案例 ………………………………………………………………………………………30
雅虎日本 ………………………………………………………………………………………….30
Splunk ……………………………………………………………………………………………..31
Iterable …………………………………………………………………………………………….32
小结 ………………………………………………………………………………………………………33
第 4 章 Pulsar 内部组件 …………………………………………………………… 34
Broker ……………………………………………………………………………………………………34
消息缓存 ………………………………………………………………………………………….35
与 BookKeeper、ZooKeeper 交互 ………………………………………………………..37
Schema 校验 ……………………………………………………………………………………..38
Broker 间的通信 ………………………………………………………………………………..38
Pulsar Functions 和 Pulsar IO ………………………………………………………………39
Apache BookKeeper …………………………………………………………………………………39
预写式日志 ………………………………………………………………………………………45
消息存储 ………………………………………………………………………………………….45
对象 /Blob 存储 …………………………………………………………………………………46
Pravega …………………………………………………………………………………………….47
Majordodo ………………………………………………………………………………………..47
Apache ZooKeeper …………………………………………………………………………………..48
命名服务 ………………………………………………………………………………………….49
配置管理 ………………………………………………………………………………………….49
选主 …………………………………………………………………………………………………50
通知系统 ………………………………………………………………………………………….50
Apache Kafka ……………………………………………………………………………………50
Apache Druid …………………………………………………………………………………….51
Pulsar Proxy ……………………………………………………………………………………………52
Java 虚拟机(JVM) …………………………………………………………………………………53
Netty ………………………………………………………………………………………………..54
Apache Spark …………………………………………………………………………………….55
Apache Lucene ………………………………………………………………………………….55
小结 ………………………………………………………………………………………………………55
第 5 章 消费者 ………………………………………………………………………… 56
成为消费者意味着什么 …………………………………………………………………………….56
订阅 ………………………………………………………………………………………………………57
独占 …………………………………………………………………………………………………60
共享 …………………………………………………………………………………………………61
键共享 ……………………………………………………………………………………………..62
故障转移 ………………………………………………………………………………………….65
确认 ………………………………………………………………………………………………………66
单条确认 ………………………………………………………………………………………….66
累积确认 ………………………………………………………………………………………….67
Schema …………………………………………………………………………………………………..67
消费者 Schema 管理 ………………………………………………………………………….68
消费模式 ………………………………………………………………………………………………..68
批处理 ……………………………………………………………………………………………..68
分块 …………………………………………………………………………………………………69
高级配置 ………………………………………………………………………………………………..70
延迟消息 ………………………………………………………………………………………….70
保留策略 ………………………………………………………………………………………….70
堆积限额 ………………………………………………………………………………………….71
配置消费者 …………………………………………………………………………………………….72
回放 …………………………………………………………………………………………………73
死信主题 ………………………………………………………………………………………….75
重试主题 ………………………………………………………………………………………….76
小结 ………………………………………………………………………………………………………76
第 6 章 生产者 ………………………………………………………………………… 77
同步生产者 …………………………………………………………………………………………….77
异步生产者 …………………………………………………………………………………………….78
生产者路由 …………………………………………………………………………………………….79
轮询路由 ………………………………………………………………………………………….79
单分区路由 ………………………………………………………………………………………80
定制分区路由 ……………………………………………………………………………………81
生产者配置 …………………………………………………………………………………………….83
topicName ………………………………………………………………………………………..83
producerName …………………………………………………………………………………..83
sendTimeoutMs …………………………………………………………………………………83
blockIfQueueFull ……………………………………………………………………………….84
maxPendingMessages …………………………………………………………………………84
maxPendingMessagesAcrossPartitions …………………………………………………..84
messageRoutingMode …………………………………………………………………………84
hashingScheme ………………………………………………………………………………….84
cryptoFailureAction ……………………………………………………………………………85
batchingMaxPublishDelayMicros …………………………………………………………85
batchingMaxMessages ………………………………………………………………………..85
batchingEnabled ………………………………………………………………………………..85
compressionType ……………………………………………………………………………….85
Schema on Write ……………………………………………………………………………………..86
使用 Schema Registry …………………………………………………………………………86
非持久化主题 …………………………………………………………………………………………89
使用场景 ………………………………………………………………………………………….90
使用非持久化主题 …………………………………………………………………………….90
事务 ………………………………………………………………………………………………………91
小结 ………………………………………………………………………………………………………92
第 7 章 Pulsar IO ……………………………………………………………………. 93
Pulsar IO 架构 …………………………………………………………………………………………93
运行时 ……………………………………………………………………………………………..94
性能考量 ………………………………………………………………………………………….94
使用场景 ………………………………………………………………………………………………..95
简单事件处理管道 …………………………………………………………………………….95
变化数据捕获 ……………………………………………………………………………………96
考量 ………………………………………………………………………………………………………97
消息序列化 ………………………………………………………………………………………97
管道稳定性 ………………………………………………………………………………………97
故障处理 ………………………………………………………………………………………….98
示例 ………………………………………………………………………………………………………99
Elasticsearch ……………………………………………………………………………………..99
Netty ……………………………………………………………………………………………… 100
创建自己的连接器 ………………………………………………………………………………… 101
TimescaleDB ………………………………………………………………………………….. 101
小结 ……………………………………………………………………………………………………. 102
第 8 章 Pulsar Functions ………………………………………………………… 103
流处理 …………………………………………………………………………………………………. 103
Pulsar Functions 架构 …………………………………………………………………………….. 105
运行时 …………………………………………………………………………………………… 105
隔离性 …………………………………………………………………………………………… 106
在 Kubernetes 上部署 Pulsar Functions 的隔离性 ………………………………………. 107
使用场景 ……………………………………………………………………………………………… 107
创建 Pulsar Functions ………………………………………………………………………. 108
简单事件处理 …………………………………………………………………………………. 108
主题清理 ……………………………………………………………………………………….. 110
主题数据统计 …………………………………………………………………………………. 113
小结 ……………………………………………………………………………………………………. 115
第 9 章 分层存储 …………………………………………………………………… 116
在云端存储数据 ……………………………………………………………………………………. 117
对象存储 ……………………………………………………………………………………….. 118
使用场景 ……………………………………………………………………………………………… 120
复制 ………………………………………………………………………………………………. 120
CQRS ……………………………………………………………………………………………. 121
灾难恢复 ……………………………………………………………………………………….. 122
卸载数据 ……………………………………………………………………………………………… 122
Pulsar Offloader ………………………………………………………………………………. 122
检索已卸载的数据 ………………………………………………………………………………… 129
与对象存储数据交互 ……………………………………………………………………….. 129
重填主题 ……………………………………………………………………………………….. 129
使用 Pulsar 客户端 ………………………………………………………………………….. 130
小结 ……………………………………………………………………………………………………. 131
第 10 章 Pulsar SQL ……………………………………………………………… 132
流即表 …………………………………………………………………………………………………. 133
SQL-on-Anything 引擎 ………………………………………………………………………….. 135
Apache Flink: 另一种视角 ………………………………………………………………… 136
Presto/Trino ……………………………………………………………………………………. 137
Pulsar SQL 的工作原理 ………………………………………………………………………….. 138
配置 Pulsar SQL ……………………………………………………………………………………. 140
性能考量 ……………………………………………………………………………………………… 142
小结 ……………………………………………………………………………………………………. 143
第 11 章 部署 Pulsar ……………………………………………………………… 144
Docker …………………………………………………………………………………………………. 144
裸金属 …………………………………………………………………………………………………. 146
最低要求 ……………………………………………………………………………………….. 146
开始安装 ……………………………………………………………………………………….. 146
部署 ZooKeeper………………………………………………………………………………. 147
启动 BookKeeper ……………………………………………………………………………. 148
启动 Pulsar …………………………………………………………………………………….. 148
公有云厂商 ………………………………………………………………………………………….. 149
AWS ……………………………………………………………………………………………… 151
Azure …………………………………………………………………………………………….. 152
Google Cloud Platform …………………………………………………………………….. 153
Kubernetes …………………………………………………………………………………………… 153
小结 ……………………………………………………………………………………………………. 155
第 12 章 运维 Pulsar ……………………………………………………………… 156
Apache BookKeeper 指标 ………………………………………………………………………. 157
服务器指标 ……………………………………………………………………………………. 157
Journal 指标 …………………………………………………………………………………… 158
存储指标 ……………………………………………………………………………………….. 159
Apache ZooKeeper 指标 …………………………………………………………………………. 159
服务器指标 ……………………………………………………………………………………. 160
请求指标 ……………………………………………………………………………………….. 161
主题指标 ……………………………………………………………………………………………… 161
消费者指标 ………………………………………………………………………………………….. 163
Pulsar 事务指标 ……………………………………………………………………………………. 163
Pulsar Functions 指标 …………………………………………………………………………….. 164
高级运维技巧 ………………………………………………………………………………………. 165
拦截器和追踪机制 ………………………………………………………………………….. 165
Pulsar SQL 指标 ……………………………………………………………………………… 167
指标转发 ……………………………………………………………………………………………… 169
监控面板 ……………………………………………………………………………………….. 169
小结 ……………………………………………………………………………………………………. 170
第 13 章 未来 ……………………………………………………………………….. 171
编程语言支持 ………………………………………………………………………………………. 171
扩展接口 ……………………………………………………………………………………….. 171
增强 Pulsar Functions ………………………………………………………………………. 172
架构简化 / 扩展 ………………………………………………………………………………. 175
消息平台桥接器 ……………………………………………………………………………… 177
小结 ……………………………………………………………………………………………………. 180
附录 A Pulsar Admin API ……………………………………………………….. 181
附录 B Pulsar Admin CLI ……………………………………………………….. 189
附录 C 跨地域复制 ………………………………………………………………… 192
附录 D Pulsar 中的安全、认证和鉴权 ……………………………………….. 198
关于作者 ……………………………………………………………………………….. 202
封面介绍 ……………………………………………………………………………….. 202
译者序
开源势头正劲,云原生风起云涌。Apache Pulsar这款开源的云原生消息流系统,在过去几年间逐渐被国内大数据圈的开发者所认识。
Apache Pulsar提供了统一的消费模型,支持消息队列和流两种场景,既能为队列业务提供企业级的读写服务质量和强一致性保障,又能为流业务提供高吞吐、低延迟。同时,得益于存储、计算分离的云原生架构设计,以及支持大集群、多租户、百万级Topic、跨地域数据复制等关键特性,Apache Pulsar在越来越多的行业和企业落地。在Apache Pulsar官网和多样的社区活动中,你可以找到更多应用案例。
从时间、社区生态等多个维度来看,可以说Pulsar是一个“既老又新”的开源项目。雅虎团队于2013年立项研发Pulsar原型,于2016年将其开源,不久后将Pulsar捐赠给Apache软件基金会进行项目孵化。Pulsar最终于2018年“毕业”,成为顶级项目。截止到2023年Pulsar已有10年的演进历史。不过,目前Pulsar仍在维护中,Pulsar生态还在拓展,相关社区还在壮大,整体仍在成长,开发者的认知也仍待提升。
在云原生时代,Pulsar的存算分离架构和诸多企业级功能都是核心亮点,但开发者要想入门和掌握好Pulsar还有一定的难度。除了官网文档,目前与Pulsar相关的中文书籍还很少,引入海外的Pulsar图书不失为一种更加快速、高效的方式。由O’Reilly出版、Jowanza Joseph所著的Mastering Apache Pulsar就是一本专为帮助开发者入门和掌握Pulsar而编写的实用指南。
我们很荣幸能够共同协作,承担本书的翻译工作。本书三位译者曾是同事,过去同在一家全球性Pulsar技术创业团队工作过,均在Apache Pulsar社区深度从事过代码开发或社群运营、内容创作等相关工作,对Pulsar不仅十分熟悉还充满了感情。在翻译分工中,蔡正昕负责翻译本书第1—8章、王殿进负责翻译第9—13章,徐文涛负责翻译本书多篇附录及其他内容。翻译完成后,译稿最终由文涛负责统筹全书技术术语、校对文法表达,以保证全书的翻译质量。
大家牺牲个人时间,经过数月的协同工作完成了全书翻译。虽然我们已拼尽全力,但无法确保每处译文都尽善尽美。书中如有不足之处,希望读者谅解并给予反馈。
最后,我们希望大家能够喜欢这本书,在阅读过程中有所收获。祝你有一个愉快的Apache Pulsar之旅,祝福Apache Pulsar越来越好!
蔡正昕 王殿进 徐文涛
2023年11月
推荐序
作为Apache Pulsar项目管理委员会(PMC)成员和长期从事Apache Pulsar代码开发与布道工作的一员,我为给这本书作序而深感荣幸。我亲眼见证了Pulsar在过去三四年的时间里取得的瞩目成绩:全球贡献者数量不断增长,当前已超过600人;用户规模快速增长,越来越多的企业开始采用Pulsar并将其应用于关键业务。这些成就是Pulsar团队和社区成员共同努力的结果,我对此感到无比自豪和感激。
Pulsar作为一款分布式、开源的云原生消息和流处理平台,已经展现出了强大的实力。它不仅拥有存储和计算分离的架构设计,具备高性能、高可扩展和高可靠性,而且提供灵活的消息模型,具有大集群、跨区域复制等关键特性,可以轻松地与上下游组件打通、集成,以发挥其关键基础设施的作用。
Pulsar的出现和普及,也促进了云原生技术在消息和流存储方向的发展和更多项目的转变。随着Pulsar的日益普及,我们需要一本系统性的入门指南来帮助开发者、架构师、大数据从业者等群体更好地学习和掌握Pulsar的系统原理、功能及组件。
我很高兴看到由正昕、殿进和文涛三人合作翻译的《精通 Apache Pulsar:可伸缩云原生事件流实践》即将出版。他们曾是我所在创业团队的优秀成员,也都长期参与Apache Pulsar项目开发、社区运营等一线工作,我相信这本书会给Pulsar社区的发展增加新的动力。
在阅读本书的过程中,可以感受到作者的用心及其对Pulsar技术的热爱,尤其是翻译贴切流畅,让这本书的亮点更加突出。书中不仅有很多的技术“干货”,众多贴近现实的例子也让艰涩的技术概念变得易于理解。书中的每个章节都紧扣主题,从Pulsar的诞生背景、起源到设计理念,从生态到内部组件,从原理剖析到部署运维,以及对Pulsar未来发展的畅想,内容设计合理,层层递进,深入浅出。
我相信,不论你是Pulsar新手,还是有经验的开发人员,这本书都能够帮助你更好地理解Pulsar的内部机制,从作者宝贵的经验与洞察中有所收获。读书不在多,贵在精。《精通Apache Pulsar》这本书就是一本入门和了解Pulsar的好书。
最后,我希望本书能帮助你顺利入门Apache Pulsar,并在探索Pulsar的这条道路上越走越远,发现更多的可能。祝愿《精通Apache Pulsar》取得成功,为Pulsar的生态和社区繁荣做出贡献!同时,我也期待看到更多的开发者和用户加入Apache Pulsar社区,共同推动这个开源项目的持续进步和发展。
翟佳
Apache 软件基金会成员,Apache Pulsar PMC成员,StreamNative联合创始人,上海谙流科技 特别顾问
2023年11月于北京
评论
还没有评论。