深入理解Kafka與Pulsar:訊息流平台的實踐與剖析

《深入理解KafkaPulsar:訊息流平台的實踐與剖析》是2022年8月電子工業出版社出版圖書,作者是梁國斌。

基本介紹

  • 書名:深入理解Kafka與Pulsar:訊息流平台的實踐與剖析
  • 作者:梁國斌
  • 出版社:電子工業出版社
  • 出版時間:2022年8月
  • 頁數:460 頁
  • 定價:138 元
  • 開本:16 開
  • ISBN:9787121440014
內容簡介,圖書目錄,作者簡介,

內容簡介

《深入理解Kafka與Pulsar:訊息流平台的實踐與剖析》詳細介紹了Kafka與Pulsar的使用方式,並深入分析了它們的實現機制。通過閱讀本書,讀者可以快速入門和使用Kafka與Pulsar,並深入理解它們的實現原理。《深入理解Kafka與Pulsar:訊息流平台的實踐與剖析》通過大量實踐示例介紹了Kafka與Pulsar的使用方式,包括管理腳本與客戶端(生產者、消費者)的使用方式、關鍵的配置項、ACK提交方式等基礎套用,以及安全機制、跨地域複製機制、連線器/流計算引擎、常用監控管理平台等高級套用。這些內容可以幫助讀者深入掌握Kafka與Pulsar的使用方式,並完成日常管理工作。另外,本書深入分析了Kafka與Pulsar的實現原理,包括客戶端(生產者、消費者)的設計與實現、Broker網路模型、主題(分區)分配與負載均衡機制,以及磁碟存儲與性能最佳化方案、數據同步機制、擴容與故障轉移機制。最後,本書介紹了Kafka與Pulsar的事務機制,並深入分析了Kafka事務的實現及Kafka最新的分散式協作組件KRaft模組。

圖書目錄

第1部分 基礎套用
第1章 Kafka與Pulsar概述
1.1 簡介
1.2 特性
1.3 概念
1.3.1 Kafka基礎概念
1.3.2 Pulsar基礎概念
1.4 本章總結
第2章 Kafka的部署與調試
2.1 安裝Kafka集群
2.1.1 部署ZooKeeper集群
2.1.2 部署Kafka集群
2.2 調試Kafka
2.3 本章總結
第3章 Kafka的套用
3.1 腳本
3.1.1 主題管理
3.1.2 生產者與消費者
3.1.3 動態配置
3.2 客戶端
3.2.1 生產者
3.2.2 消費者
3.3 訊息序列化
3.4 配額
3.5 本章總結
第4章 Pulsar的部署與調試
4.1 本地部署
4.2 集群部署
4.2.1 ZooKeeper集群部署
4.2.2 初始化集群元數據
4.2.3 部署BookKeeper集群
4.2.4 部署Pulsar Broker
4.3 調試Pulsar
4.3.1 調試Pulsar Broker源碼
4.3.2 調試BookKeeper
4.4 本章總結
第5章 Pulsar的套用
5.1 租戶
5.2 命名空間
5.2.1 訊息保留和過期
5.2.2 持久化策略
5.2.3 訊息投遞速率
5.3 主題
5.3.1 創建主題
5.3.2 傳送、消費訊息
5.3.3 管理主題
5.4 客戶端
5.4.1 生產者
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 本章總結
第2部分 客戶端與Broker計算層
第6章 Kafka和Pulsar的架構
6.1 ZooKeeper的作用
6.2 Kafka的架構設計
6.2.1 元數據管理
6.2.2 發布/訂閱模式
6.2.3 磁碟存儲的設計與最佳化
6.2.4 數據副本
6.2.5 系統伸縮
6.2.6 故障轉移
6.3 Pulsar的架構設計
6.3.1 Pulsar的計算層
6.3.2 Pulsar的存儲層
6.3.3 系統伸縮
6.3.4 故障轉移
6.4 源碼架構
6.4.1 Kafka
6.4.2 Pulsar
6.4.3 BookKeeper
6.5 本章總結
第7章 Kafka的主題
7.1 CreateTopics請求的處理流程
7.1.1 創建主題
7.1.2 分區副本分配規則
7.1.3 存儲主題元數據
7.2 KafkaController處理新主題
7.3 本章總結
第8章 Kafka的生產者與訊息發布
8.1 生產者傳送訊息
8.1.1 訊息傳送流程
8.1.2 訊息累積器與訊息批次
8.1.3 Sender執行緒
8.1.4 TCP通信協定
8.1.5 元數據刷新機制
8.2 Broker接收訊息
8.2.1 Broker處理訊息流程
8.2.2 延遲操作與時間輪
8.3 本章總結
第9章 Kafka的消費者與訊息訂閱
9.1 消費組協作機制
9.1.1 分區分配器
9.1.2 重平衡的設計
9.1.3 實戰:使用CooperativeStickyAssignor分區分配器
9.1.4 重平衡的實現
9.2 心跳與元數據更新
9.3 ACK管理
9.3.1 消費者初始化偏移量
9.3.2 ACK偏移量的提交與存儲
9.4 讀取訊息
9.4.1 消費者傳送Fetch請求
9.4.2 Broker處理Fetch請求
9.5 本章總結
第10章 Pulsar的主題
10.1 租戶與命名空間
10.2 主題
10.2.1 創建主題
10.2.2 初始化主題
10.2.3 綁定主題
10.3 Broker負載均衡
10.3.1 負載報告上傳
10.3.2 為bundle選擇Broker節點
10.4 bundle管理
10.4.1 選舉leader節點
10.4.2 bundle卸載機制
10.4.3 bundle切分機制
10.5 本章總結
第11章 Pulsar的生產者與訊息發布
11.1 生產者傳送訊息
11.1.1 初始化生產者
11.1.2 生產者傳送訊息流程
11.2 Broker處理訊息
11.2.1 寫入訊息
11.2.2 切換Ledger
11.3 本章總結
第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機制的設計
12.3.2 ACK機制的實現
12.4 訊息清除
12.4.1 歷史訊息清除
12.4.2 清除backlog訊息
12.4.3 清除過期數據
12.5 本章總結
第3部分 分散式數據存儲
第13章 Kafka存儲機制與讀寫流程
13.1 數據存儲機制的設計
13.2 訊息寫入流程
13.3 訊息讀取流程
13.4 日誌管理
13.4.1 日誌載入
13.4.2 日誌刷盤
13.4.3 數據清理
13.4.4 數據去重
13.5 本章總結
第14章 Kafka主從同步
14.1 成為leader/follow副本
14.2 follow副本同步流程
14.2.1 同步流程與數據一致性
14.2.2 LeaderEpoch機制
14.2.3 follow副本拉取訊息
14.3 leader副本更新
14.3.1 更新ISR集合
14.3.2 更新高水位
14.4 本章總結
第15章 Kafka分散式協同
15.1 KafkaController選舉
15.1.1 KafkaController元數據
15.1.2 ControllerEpoch機制
15.1.3 選舉流程
15.2 ZooKeeper監控機制
15.3 故障轉移
15.3.1 分區、副本狀態機
15.3.2 分區狀態切換流程
15.3.3 副本狀態切換流程
15.4 實戰:Preferred Replica重平衡
15.5 實戰:增加分區數量
15.6 實戰:Kafka集群擴容
15.7 本章總結
第16章 BookKeeper客戶端
16.1 客戶端設計
16.2 客戶端寫入
16.2.1 Ledger創建流程
16.2.2 數據寫入流程
16.2.3 處理寫入結果
16.2.4 故障轉移
16.2.5 LAC上報
16.2.6 限制生產者數量
16.3 客戶端讀取
16.3.1 消費者讀取數據
16.3.2 客戶端Recover
16.4 本章總結
第17章 BookKeeper服務端
17.1 Bookie設計
17.2 Bookie寫入流程
17.2.1 Bookie初始化
17.2.2 Journal寫入流程
17.2.3 Ledger寫入流程
17.2.4 Ledger的數據存儲格式
17.3 Bookie讀取數據
17.4 Bookie數據清除
17.5 Bookie Recovery
17.5.1 Auditor
17.5.2 ReplicationWorker
17.6 本章總結
第4部分 事務與KRaft模組
第18章 Kafka與Pulsar事務概述
18.1 為什麼需要事務
18.1.1 冪等傳送
18.1.2 事務保證
18.2 Kafka事務套用示例
18.3 Pulsar事務套用示例
18.4 本章總結
第19章 Kafka事務的設計與實現
19.1 Kafka的事務設計
19.2 事務初始化流程
19.2.1 事務定義
19.2.2 生產者初始化事務
19.2.3 生產者啟動事務
19.3 事務訊息傳送與處理流程
19.3.1 事務分區傳送與處理流程
19.3.2 生產者傳送事務訊息
19.3.3 Broker處理事務訊息
19.3.4 ACK偏移量傳送與處理流程
19.4 事務提交流程
19.4.1 生產者提交事務
19.4.2 協調者完成事務
19.5 本章總結
第20章 KRaft模組概述
20.1 為什麼要移除ZooKeeper
20.2 部署與調試KRaft模組
20.3 Raft算法
20.3.1 leader選舉
20.3.2 日誌複製
20.3.3 安全性
20.4 本章總結
第21章 KRaft模組的設計與實現原理
21.1 KRaft請求處理流程
21.1.1 Raft狀態
21.1.2 Raft請求類型
21.1.3 處理Raft請求
21.2 KRaft leader選舉機制
21.2.1 初始化Raft狀態
21.2.2 傳送投票請求
21.2.3 投票流程
21.2.4 當選leader節點
21.3 KRaft生成Record數據
21.4 KRaft數據存儲機制
21.5 KRaft數據同步機制
21.6 KRaft提交Record數據
21.6.1 監聽器機制
21.6.2 BrokerMetadataListener
21.6.3 QuorumMetaLogListener
21.7 KRaft節點監控與故障轉移機制
21.7.1 節點註冊
21.7.2 心跳請求
21.7.3 故障轉移
21.8 KRaft數據清理機制
21.8.1 快照管理
21.8.2 歷史數據清理
21.9 本章總結
第5部分 高級套用
第22章 安全
22.1 TLS加密
22.1.1 準備TLS證書和密鑰
22.1.2 Kafka配置
22.1.3 Pulsar配置
22.2 認證與授權
22.2.1 Kafka SCRAM認證與授權
22.2.2 Pulsar JWT認證與授權
22.3 本章總結
第23章 跨地域複製與分層存儲
23.1 跨地域複製
23.1.1 MirrorMaker
23.1.2 Pulsar跨地域複製機制
23.2 分層存儲
23.3 本章總結
第24章 監控與管理
24.1 Kafka監控與管理平台
24.1.1 Kafka監控
24.1.2 Kafka管理平台
24.2 Pulsar監控與管理平台
24.2.1 Pulsar監控
24.2.2 Pulsar管理平台
24.3 本章總結
第25章 連線器
25.1 Kafka Connect
25.1.1 套用示例
25.1.2 開發實踐
25.2 Pulsar IO
25.2.1 套用示例
25.2.2 開發實踐
25.3 本章總結
第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 本章總結

作者簡介

梁國斌,後端高級開發,源碼愛好者,對Netty、Spring、Redis、Kafka、Pulsar等中間件有深入研究,技術公眾號binecy作者。

相關詞條

熱門詞條

聯絡我們