深入理解Kafka與Pulsar:消息流平臺的實(shí)踐與剖析
定 價:138 元
- 作者:梁國斌
- 出版時間:2022/8/1
- ISBN:9787121440014
- 出 版 社:電子工業(yè)出版社
- 中圖法分類:TP316.4
- 頁碼:460
- 紙張:
- 版次:01
- 開本:16開
本書詳細(xì)介紹了Kafka與Pulsar的使用方式,并深入分析了它們的實(shí)現(xiàn)機(jī)制。通過閱讀本書,讀者可以快速入門使用Kafka與Pulsar,并深入理解它們的實(shí)現(xiàn)原理。 本書通過大量實(shí)踐示例介紹了Kafka與Pulsar的使用方式,包括管理腳本與客戶端(生產(chǎn)者、消費(fèi)者)的使用方式、關(guān)鍵的配置項、ACK提交方式等基礎(chǔ)應(yīng)用,以及安全機(jī)制、跨地域復(fù)制機(jī)制、連接器/流計算引擎、常用監(jiān)控管理平臺等高級應(yīng)用。這些內(nèi)容可以幫助讀者深入掌握Kafka與Pulsar的使用方式,并完成日常管理工作。另外,本書深入分析了Kafka與Pulsar的實(shí)現(xiàn)原理,包括客戶端(生產(chǎn)者、消費(fèi)者)的設(shè)計與實(shí)現(xiàn)、Broker網(wǎng)絡(luò)模型、主題(分區(qū))分配與負(fù)載均衡機(jī)制,以及磁盤存儲與性能優(yōu)化方案、數(shù)據(jù)同步機(jī)制、擴(kuò)容與故障轉(zhuǎn)移機(jī)制。最后,本書介紹了Kafka與Pulsar的事務(wù)機(jī)制,并深入分析了Kafka事務(wù)的實(shí)現(xiàn)及Kafka最新的分布式協(xié)作組件KRaft模塊。這部分內(nèi)容可以幫助讀者輕松理解Kafka與Pulsar的架構(gòu)設(shè)計與實(shí)現(xiàn)原理。
后端高級開發(fā),源碼愛好者,對Netty、Spring、Redis、Kafka、Pulsar等中間件有深入研究,技術(shù)公眾號binecy作者。
第1部分 基礎(chǔ)應(yīng)用
第1章 Kafka與Pulsar概述
1.1 簡介
1.2 特性
1.3 概念
1.3.1 Kafka基礎(chǔ)概念
1.3.2 Pulsar基礎(chǔ)概念
1.4 本章總結(jié)
第2章 Kafka的部署與調(diào)試
2.1 安裝Kafka集群
2.1.1 部署ZooKeeper集群
2.1.2 部署Kafka集群
2.2 調(diào)試Kafka
2.3 本章總結(jié)
第3章 Kafka的應(yīng)用
3.1 腳本
3.1.1 主題管理
3.1.2 生產(chǎn)者與消費(fèi)者
3.1.3 動態(tài)配置
3.2 客戶端
3.2.1 生產(chǎn)者
3.2.2 消費(fèi)者
3.3 消息序列化
3.4 配額
3.5 本章總結(jié)
第4章 Pulsar的部署與調(diào)試
4.1 本地部署
4.2 集群部署
4.2.1 ZooKeeper集群部署
4.2.2 初始化集群元數(shù)據(jù)
4.2.3 部署B(yǎng)ookKeeper集群
4.2.4 部署Pulsar Broker
4.3 調(diào)試Pulsar
4.3.1 調(diào)試Pulsar Broker源碼
4.3.2 調(diào)試BookKeeper
4.4 本章總結(jié)
第5章 Pulsar的應(yīng)用
5.1 租戶
5.2 命名空間
5.2.1 消息保留和過期
5.2.2 持久化策略
5.2.3 消息投遞速率
5.3 主題
5.3.1 創(chuàng)建主題
5.3.2 發(fā)送、消費(fèi)消息
5.3.3 管理主題
5.4 客戶端
5.4.1 生產(chǎn)者
5.4.2 消費(fèi)者
5.5 Schema
5.5.1 Schema的類型與使用示例
5.5.2 Schema演化與兼容
5.5.3 管理Schema
5.6 資源隔離
5.6.1 Broker隔離
5.6.2 Bookie隔離
5.7 兼容Kafka客戶端
5.8 BookKeeper使用示例
5.9 本章總結(jié)
第2部分 客戶端與Broker計算層
第6章 Kafka和Pulsar的架構(gòu)
6.1 ZooKeeper的作用
6.2 Kafka的架構(gòu)設(shè)計
6.2.1 元數(shù)據(jù)管理
6.2.2 發(fā)布/訂閱模式
6.2.3 磁盤存儲的設(shè)計與優(yōu)化
6.2.4 數(shù)據(jù)副本
6.2.5 系統(tǒng)伸縮
6.2.6 故障轉(zhuǎn)移
6.3 Pulsar的架構(gòu)設(shè)計
6.3.1 Pulsar的計算層
6.3.2 Pulsar的存儲層
6.3.3 系統(tǒng)伸縮
6.3.4 故障轉(zhuǎn)移
6.4 源碼架構(gòu)
6.4.1 Kafka
6.4.2 Pulsar
6.4.3 BookKeeper
6.5 本章總結(jié)
第7章 Kafka的主題
7.1 CreateTopics請求的處理流程
7.1.1 創(chuàng)建主題
7.1.2 分區(qū)副本分配規(guī)則
7.1.3 存儲主題元數(shù)據(jù)
7.2 KafkaController處理新主題
7.3 本章總結(jié)
第8章 Kafka的生產(chǎn)者與消息發(fā)布
8.1 生產(chǎn)者發(fā)送消息
8.1.1 消息發(fā)送流程
8.1.2 消息累積器與消息批次
8.1.3 Sender線程
8.1.4 TCP通信協(xié)議
8.1.5 元數(shù)據(jù)刷新機(jī)制
8.2 Broker接收消息
8.2.1 Broker處理消息流程
8.2.2 延遲操作與時間輪
8.3 本章總結(jié)
第9章 Kafka的消費(fèi)者與消息訂閱
9.1 消費(fèi)組協(xié)作機(jī)制
9.1.1 分區(qū)分配器
9.1.2 重平衡的設(shè)計
9.1.3 實(shí)戰(zhàn):使用CooperativeStickyAssignor分區(qū)分配器
9.1.4 重平衡的實(shí)現(xiàn)
9.2 心跳與元數(shù)據(jù)更新
9.3 ACK管理
9.3.1 消費(fèi)者初始化偏移量
9.3.2 ACK偏移量的提交與存儲
9.4 讀取消息
9.4.1 消費(fèi)者發(fā)送Fetch請求
9.4.2 Broker處理Fetch請求
9.5 本章總結(jié)
第10章 Pulsar的主題
10.1 租戶與命名空間
10.2 主題
10.2.1 創(chuàng)建主題
10.2.2 初始化主題
10.2.3 綁定主題
10.3 Broker負(fù)載均衡
10.3.1 負(fù)載報告上傳
10.3.2 為bundle選擇Broker節(jié)點(diǎn)
10.4 bundle管理
10.4.1 選舉leader節(jié)點(diǎn)
10.4.2 bundle卸載機(jī)制
10.4.3 bundle切分機(jī)制
10.5 本章總結(jié)
第11章 Pulsar的生產(chǎn)者與消息發(fā)布
11.1 生產(chǎn)者發(fā)送消息
11.1.1 初始化生產(chǎn)者
11.1.2 生產(chǎn)者發(fā)送消息流程
11.2 Broker處理消息
11.2.1 寫入消息
11.2.2 切換Ledger
11.3 本章總結(jié)
第12章 Pulsar的消費(fèi)者與消息訂閱
12.1 消費(fèi)者訂閱消息
12.1.1 消費(fèi)者的初始化
12.1.2 接收消息
12.1.3 確認(rèn)超時與取消確認(rèn)
12.2 Broker讀取與推送消息
12.2.1 處理Subscribe請求
12.2.2 推送消息
12.3 ACK機(jī)制
12.3.1 ACK機(jī)制的設(shè)計
12.3.2 ACK機(jī)制的實(shí)現(xiàn)
12.4 消息清除
12.4.1 歷史消息清除
12.4.2 清除backlog消息
12.4.3 清除過期數(shù)據(jù)
12.5 本章總結(jié)
第3部分 分布式數(shù)據(jù)存儲
第13章 Kafka存儲機(jī)制與讀寫流程
13.1 數(shù)據(jù)存儲機(jī)制的設(shè)計
13.2 消息寫入流程
13.3 消息讀取流程
13.4 日志管理
13.4.1 日志加載
13.4.2 日志刷盤
13.4.3 數(shù)據(jù)清理
13.4.4 數(shù)據(jù)去重
13.5 本章總結(jié)
第14章 Kafka主從同步
14.1 成為leader/follow副本
14.2 follow副本同步流程
14.2.1 同步流程與數(shù)據(jù)一致性
14.2.2 LeaderEpoch機(jī)制
14.2.3 follow副本拉取消息
14.3 leader副本更新
14.3.1 更新ISR集合
14.3.2 更新高水位
14.4 本章總結(jié)
第15章 Kafka分布式協(xié)同
15.1 KafkaController選舉
15.1.1 KafkaController元數(shù)據(jù)
15.1.2 ControllerEpoch機(jī)制
15.1.3 選舉流程
15.2 ZooKeeper監(jiān)控機(jī)制
15.3 故障轉(zhuǎn)移
15.3.1 分區(qū)、副本狀態(tài)機(jī)
15.3.2 分區(qū)狀態(tài)切換流程
15.3.3 副本狀態(tài)切換流程
15.4 實(shí)戰(zhàn):Preferred Replica重平衡
15.5 實(shí)戰(zhàn):增加分區(qū)數(shù)量
15.6 實(shí)戰(zhàn):Kafka集群擴(kuò)容
15.7 本章總結(jié)
第16章 BookKeeper客戶端
16.1 客戶端設(shè)計
16.2 客戶端寫入
16.2.1 Ledger創(chuàng)建流程
16.2.2 數(shù)據(jù)寫入流程
16.2.3 處理寫入結(jié)果
16.2.4 故障轉(zhuǎn)移
16.2.5 LAC上報
16.2.6 限制生產(chǎn)者數(shù)量
16.3 客戶端讀取
16.3.1 消費(fèi)者讀取數(shù)據(jù)
16.3.2 客戶端Recover
16.4 本章總結(jié)
第17章 BookKeeper服務(wù)端
17.1 Bookie設(shè)計
17.2 Bookie寫入流程
17.2.1 Bookie初始化
17.2.2 Journal寫入流程
17.2.3 Ledger寫入流程
17.2.4 Ledger的數(shù)據(jù)存儲格式
17.3 Bookie讀取數(shù)據(jù)
17.4 Bookie數(shù)據(jù)清除
17.5 Bookie Recovery
17.5.1 Auditor
17.5.2 ReplicationWorker
17.6 本章總結(jié)
第4部分 事務(wù)與KRaft模塊
第18章 Kafka與Pulsar事務(wù)概述
18.1 為什么需要事務(wù)
18.1.1 冪等發(fā)送
18.1.2 事務(wù)保證
18.2 Kafka事務(wù)應(yīng)用示例
18.3 Pulsar事務(wù)應(yīng)用示例
18.4 本章總結(jié)
第19章 Kafka事務(wù)的設(shè)計與實(shí)現(xiàn)
19.1 Kafka的事務(wù)設(shè)計
19.2 事務(wù)初始化流程
19.2.1 事務(wù)定義
19.2.2 生產(chǎn)者初始化事務(wù)
19.2.3 生產(chǎn)者啟動事務(wù)
19.3 事務(wù)消息發(fā)送與處理流程
19.3.1 事務(wù)分區(qū)發(fā)送與處理流程
19.3.2 生產(chǎn)者發(fā)送事務(wù)消息
19.3.3 Broker處理事務(wù)消息
19.3.4 ACK偏移量發(fā)送與處理流程
19.4 事務(wù)提交流程
19.4.1 生產(chǎn)者提交事務(wù)
19.4.2 協(xié)調(diào)者完成事務(wù)
19.5 本章總結(jié)
第20章 KRaft模塊概述
20.1 為什么要移除ZooKeeper
20.2 部署與調(diào)試KRaft模塊
20.3 Raft算法
20.3.1 leader選舉
20.3.2 日志復(fù)制
20.3.3 安全性
20.4 本章總結(jié)
第21章 KRaft模塊的設(shè)計與實(shí)現(xiàn)原理
21.1 KRaft請求處理流程
21.1.1 Raft狀態(tài)
21.1.2 Raft請求類型
21.1.3 處理Raft請求
21.2 KRaft leader選舉機(jī)制
21.2.1 初始化Raft狀態(tài)
21.2.2 發(fā)送投票請求
21.2.3 投票流程
21.2.4 當(dāng)選leader節(jié)點(diǎn)
21.3 KRaft生成Record數(shù)據(jù)
21.4 KRaft數(shù)據(jù)存儲機(jī)制
21.5 KRaft數(shù)據(jù)同步機(jī)制
21.6 KRaft提交Record數(shù)據(jù)
21.6.1 監(jiān)聽器機(jī)制
21.6.2 BrokerMetadataListener
21.6.3 QuorumMetaLogListener
21.7 KRaft節(jié)點(diǎn)監(jiān)控與故障轉(zhuǎn)移機(jī)制
21.7.1 節(jié)點(diǎn)注冊
21.7.2 心跳請求
21.7.3 故障轉(zhuǎn)移
21.8 KRaft數(shù)據(jù)清理機(jī)制
21.8.1 快照管理
21.8.2 歷史數(shù)據(jù)清理
21.9 本章總結(jié)
第5部分 高級應(yīng)用
第22章 安全
22.1 TLS加密
22.1.1 準(zhǔn)備TLS證書和密鑰
22.1.2 Kafka配置
22.1.3 Pulsar配置
22.2 認(rèn)證與授權(quán)
22.2.1 Kafka SCRAM認(rèn)證與授權(quán)
22.2.2 Pulsar JWT認(rèn)證與授權(quán)
22.3 本章總結(jié)
第23章 跨地域復(fù)制與分層存儲
23.1 跨地域復(fù)制
23.1.1 MirrorMaker
23.1.2 Pulsar跨地域復(fù)制機(jī)制
23.2 分層存儲
23.3 本章總結(jié)
第24章 監(jiān)控與管理
24.1 Kafka監(jiān)控與管理平臺
24.1.1 Kafka監(jiān)控
24.1.2 Kafka管理平臺
24.2 Pulsar監(jiān)控與管理平臺
24.2.1 Pulsar監(jiān)控
24.2.2 Pulsar管理平臺
24.3 本章總結(jié)
第25章 連接器
25.1 Kafka Connect
25.1.1 應(yīng)用示例
25.1.2 開發(fā)實(shí)踐
25.2 Pulsar IO
25.2.1 應(yīng)用示例
25.2.2 開發(fā)實(shí)踐
25.3 本章總結(jié)
第26章 流計算引擎
26.1 Kafka Stream
26.1.1 應(yīng)用示例
26.1.2 時間窗口
26.1.3 語義保證和線程模型
26.2 Pulsar Function
26.2.1 應(yīng)用示例
26.2.2 部署
26.2.3 時間窗口
26.2.4 Function運(yùn)行模式和消息語義保證
26.3 本章總結(jié)