深入理解Kafka與Pulsar:消息流平臺的實踐與剖析
定 價:138 元
- 作者:梁國斌
- 出版時間:2022/8/1
- ISBN:9787121440014
- 出 版 社:電子工業(yè)出版社
- 中圖法分類:TP316.4
- 頁碼:460
- 紙張:
- 版次:01
- 開本:16開
本書詳細介紹了Kafka與Pulsar的使用方式,并深入分析了它們的實現(xiàn)機制。通過閱讀本書,讀者可以快速入門使用Kafka與Pulsar,并深入理解它們的實現(xiàn)原理。 本書通過大量實踐示例介紹了Kafka與Pulsar的使用方式,包括管理腳本與客戶端(生產(chǎn)者、消費者)的使用方式、關(guān)鍵的配置項、ACK提交方式等基礎(chǔ)應用,以及安全機制、跨地域復制機制、連接器/流計算引擎、常用監(jiān)控管理平臺等高級應用。這些內(nèi)容可以幫助讀者深入掌握Kafka與Pulsar的使用方式,并完成日常管理工作。另外,本書深入分析了Kafka與Pulsar的實現(xiàn)原理,包括客戶端(生產(chǎn)者、消費者)的設(shè)計與實現(xiàn)、Broker網(wǎng)絡(luò)模型、主題(分區(qū))分配與負載均衡機制,以及磁盤存儲與性能優(yōu)化方案、數(shù)據(jù)同步機制、擴容與故障轉(zhuǎn)移機制。最后,本書介紹了Kafka與Pulsar的事務(wù)機制,并深入分析了Kafka事務(wù)的實現(xiàn)及Kafka最新的分布式協(xié)作組件KRaft模塊。這部分內(nèi)容可以幫助讀者輕松理解Kafka與Pulsar的架構(gòu)設(shè)計與實現(xiàn)原理。
后端高級開發(fā),源碼愛好者,對Netty、Spring、Redis、Kafka、Pulsar等中間件有深入研究,技術(shù)公眾號binecy作者。
第1部分 基礎(chǔ)應用
第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的應用
3.1 腳本
3.1.1 主題管理
3.1.2 生產(chǎn)者與消費者
3.1.3 動態(tài)配置
3.2 客戶端
3.2.1 生產(chǎn)者
3.2.2 消費者
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的應用
5.1 租戶
5.2 命名空間
5.2.1 消息保留和過期
5.2.2 持久化策略
5.2.3 消息投遞速率
5.3 主題
5.3.1 創(chuàng)建主題
5.3.2 發(fā)送、消費消息
5.3.3 管理主題
5.4 客戶端
5.4.1 生產(chǎn)者
5.4.2 消費者
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ù)刷新機制
8.2 Broker接收消息
8.2.1 Broker處理消息流程
8.2.2 延遲操作與時間輪
8.3 本章總結(jié)
第9章 Kafka的消費者與消息訂閱
9.1 消費組協(xié)作機制
9.1.1 分區(qū)分配器
9.1.2 重平衡的設(shè)計
9.1.3 實戰(zhàn):使用CooperativeStickyAssignor分區(qū)分配器
9.1.4 重平衡的實現(xiàn)
9.2 心跳與元數(shù)據(jù)更新
9.3 ACK管理
9.3.1 消費者初始化偏移量
9.3.2 ACK偏移量的提交與存儲
9.4 讀取消息
9.4.1 消費者發(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負載均衡
10.3.1 負載報告上傳
10.3.2 為bundle選擇Broker節(jié)點
10.4 bundle管理
10.4.1 選舉leader節(jié)點
10.4.2 bundle卸載機制
10.4.3 bundle切分機制
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的消費者與消息訂閱
12.1 消費者訂閱消息
12.1.1 消費者的初始化
12.1.2 接收消息
12.1.3 確認超時與取消確認
12.2 Broker讀取與推送消息
12.2.1 處理Subscribe請求
12.2.2 推送消息
12.3 ACK機制
12.3.1 ACK機制的設(shè)計
12.3.2 ACK機制的實現(xiàn)
12.4 消息清除
12.4.1 歷史消息清除
12.4.2 清除backlog消息
12.4.3 清除過期數(shù)據(jù)
12.5 本章總結(jié)
第3部分 分布式數(shù)據(jù)存儲
第13章 Kafka存儲機制與讀寫流程
13.1 數(shù)據(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機制
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機制
15.1.3 選舉流程
15.2 ZooKeeper監(jiān)控機制
15.3 故障轉(zhuǎn)移
15.3.1 分區(qū)、副本狀態(tài)機
15.3.2 分區(qū)狀態(tài)切換流程
15.3.3 副本狀態(tài)切換流程
15.4 實戰(zhàn):Preferred Replica重平衡
15.5 實戰(zhàn):增加分區(qū)數(shù)量
15.6 實戰(zhàn):Kafka集群擴容
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 消費者讀取數(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ù)應用示例
18.3 Pulsar事務(wù)應用示例
18.4 本章總結(jié)
第19章 Kafka事務(wù)的設(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 日志復制
20.3.3 安全性
20.4 本章總結(jié)
第21章 KRaft模塊的設(shè)計與實現(xiàn)原理
21.1 KRaft請求處理流程
21.1.1 Raft狀態(tài)
21.1.2 Raft請求類型
21.1.3 處理Raft請求
21.2 KRaft leader選舉機制
21.2.1 初始化Raft狀態(tài)
21.2.2 發(fā)送投票請求
21.2.3 投票流程
21.2.4 當選leader節(jié)點
21.3 KRaft生成Record數(shù)據(jù)
21.4 KRaft數(shù)據(jù)存儲機制
21.5 KRaft數(shù)據(jù)同步機制
21.6 KRaft提交Record數(shù)據(jù)
21.6.1 監(jiān)聽器機制
21.6.2 BrokerMetadataListener
21.6.3 QuorumMetaLogListener
21.7 KRaft節(jié)點監(jiān)控與故障轉(zhuǎn)移機制
21.7.1 節(jié)點注冊
21.7.2 心跳請求
21.7.3 故障轉(zhuǎn)移
21.8 KRaft數(shù)據(jù)清理機制
21.8.1 快照管理
21.8.2 歷史數(shù)據(jù)清理
21.9 本章總結(jié)
第5部分 高級應用
第22章 安全
22.1 TLS加密
22.1.1 準備TLS證書和密鑰
22.1.2 Kafka配置
22.1.3 Pulsar配置
22.2 認證與授權(quán)
22.2.1 Kafka SCRAM認證與授權(quán)
22.2.2 Pulsar JWT認證與授權(quán)
22.3 本章總結(jié)
第23章 跨地域復制與分層存儲
23.1 跨地域復制
23.1.1 MirrorMaker
23.1.2 Pulsar跨地域復制機制
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 應用示例
25.1.2 開發(fā)實踐
25.2 Pulsar IO
25.2.1 應用示例
25.2.2 開發(fā)實踐
25.3 本章總結(jié)
第26章 流計算引擎
26.1 Kafka Stream
26.1.1 應用示例
26.1.2 時間窗口
26.1.3 語義保證和線程模型
26.2 Pulsar Function
26.2.1 應用示例
26.2.2 部署
26.2.3 時間窗口
26.2.4 Function運行模式和消息語義保證
26.3 本章總結(jié)