新書推薦:
《
算法图解(第2版)
》
售價:NT$
356.0
《
科学的奇幻之旅
》
售價:NT$
352.0
《
画艺循谱:晚明的画谱与消闲
》
售價:NT$
653.0
《
新民说·现实政治史:从马基雅维利到基辛格
》
售價:NT$
454.0
《
宽容是件奢侈品(人生360度·一分钟经典故事)
》
售價:NT$
203.0
《
甲骨拼合六集
》
售價:NT$
1520.0
《
视觉美食家:商业摄影实战与创意解析
》
售價:NT$
602.0
《
中国经济发展的新阶段:机会与选择
》
售價:NT$
454.0
|
內容簡介: |
本书详细介绍了Kafka与Pulsar的使用方式,并深入分析了它们的实现机制。通过阅读本书,读者可以快速入门使用Kafka与Pulsar,并深入理解它们的实现原理。 本书通过大量实践示例介绍了Kafka与Pulsar的使用方式,包括管理脚本与客户端(生产者、消费者)的使用方式、关键的配置项、ACK提交方式等基础应用,以及安全机制、跨地域复制机制、连接器/流计算引擎、常用监控管理平台等高级应用。这些内容可以帮助读者深入掌握Kafka与Pulsar的使用方式,并完成日常管理工作。另外,本书深入分析了Kafka与Pulsar的实现原理,包括客户端(生产者、消费者)的设计与实现、Broker网络模型、主题(分区)分配与负载均衡机制,以及磁盘存储与性能优化方案、数据同步机制、扩容与故障转移机制。最后,本书介绍了Kafka与Pulsar的事务机制,并深入分析了Kafka事务的实现及Kafka最新的分布式协作组件KRaft模块。这部分内容可以帮助读者轻松理解Kafka与Pulsar的架构设计与实现原理。
|
關於作者: |
后端高级开发,源码爱好者,对Netty、Spring、Redis、Kafka、Pulsar等中间件有深入研究,技术公众号binecy作者。
|
目錄:
|
第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 调试Kafka2.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 Broker4.3 调试Pulsar4.3.1 调试Pulsar Broker源码4.3.2 调试BookKeeper4.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 Schema5.5.1 Schema的类型与使用示例5.5.2 Schema演化与兼容5.5.3 管理Schema5.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 Kafka6.4.2 Pulsar6.4.3 BookKeeper6.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 切换Ledger11.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 客户端Recover16.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 Recovery17.5.1 Auditor17.5.2 ReplicationWorker17.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 为什么要移除ZooKeeper20.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 BrokerMetadataListener21.6.3 QuorumMetaLogListener21.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 MirrorMaker23.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 Connect25.1.1 应用示例25.1.2 开发实践25.2 Pulsar IO25.2.1 应用示例25.2.2 开发实践25.3 本章总结第26章 流计算引擎26.1 Kafka Stream26.1.1 应用示例26.1.2 时间窗口26.1.3 语义保证和线程模型26.2 Pulsar Function26.2.1 应用示例26.2.2 部署26.2.3 时间窗口26.2.4 Function运行模式和消息语义保证26.3 本章总结
|
|