分布式协议与算法实战 攻克分布式系统设计的关键难题
作 者:韩健 著
定 价:99
出 版 社:机械工业出版社
出版日期:2022年08月01日
页 数:248
装 帧:平装
ISBN:9787111710226
(1)作者背景权威:作者先后就职于Intel、腾讯等互联网大厂,担任重要工作。
(2)作者经验丰富:作者在大规模分布式系统领域有10余年工作经验,曾担任腾讯QQ后端基础设施技术负责人。
(3)理论直指核心:深刻、详细剖析分布式的4大基础理论和10种常用协议和算法,帮助读者透彻理解分布式的本质和精髓。
(4)实战工程落地:通过10余个小案例和3大综合案例,详细演示了如何在工程实践中将分布式的基础理论和协议与算法落地。
(5)12位专家推荐:来自腾讯、华为、阿里等企业的12位专家高度评价并一致推荐。
这是一本以实战为导向、系统讲解分布式协议与算法、深刻揭示分布式系统精髓与本质的著作。作者以自己在腾讯和Intel的多年分布式系统工程经验为基础,用图文并茂、通俗易懂的方式详细讲解了分布式的基础理论、协议、算法,以及它们如何在工程实践中落地。通过本书,你将掌握如下核心知识:(1)4大分布式基础理论详细讲解分布式架构设计的核心基础理论,包括拜占庭将军问题、CAP理论、ACID理论、BASE理论,这些理论能指导你在实战中根据场景特点选择合适的分布式算法。(2)10种常用的分布式协议和算法详细讲解了Paxos算法、Raft算法、一致哈希算法、ZAB协议、Gossip协议、QuorumNWR协议、MySQLXA规范、TCC、PBFT算法、PoW算法等常用分布式协议和算法的的原理、特点、适用场景和常见误区等。(3)3大综合实战案例通过3个综合案例讲解了分布式基础理论和分布式算法在工程实践中的应用,教你null
韩健
资深架构师,现就职于腾讯,担任监控大数据平台技术负责人,曾先后担任创业公司CTO、Intel资深工程师。既对分布式系统、InfluxDB的架构设计和开发有深刻的理解,又在海量服务分布式组件架构设计、高性能架构设计、高质量代码编写等方面有深厚的积累,经验丰富。
在腾讯先后负责了监控大数据平台、QQ后台海量服务分布式组件(微服务开发框架、名字服务、配置中心等)等项目的相关工作。曾经主导和参与了多个高并发分布式系统、Linux内核、高性能网络操作系统等大型项目。
当前专注于下一代具有成本优势的高性能监控大数据平台、海量服务分布式组件、DPDK高性能TCPIP协议栈的创新和研发。
维护有微信订阅号influxdb-dev。
无
赞誉
序
前言
理论篇
第1章拜占庭将军问题
1.1什么是拜占庭将军问题
1.1.1苏秦的困境
1.1.2二忠一叛难题
1.2口信消息,我们该如何处理呢
1.3如何解决□的
1.3.1什么是签名消息
1.3.2签名消息型拜占庭问题之解
1.4拜占庭容错算法和非拜占庭容错算法,该如何选择呢
1.5本章小结
第2章CAP理论
2.1CAP理论:分布式系统的ph试纸,用它来测酸碱度
2.1.1CAP三指标
2.1.2CAP不可能三角
2.1.3如何使用CAP理论
2.2ACID理论:CAP的“酸”,追求一致性
2.2.1二阶段提交协议
2.2.2TCC
2.3BASE理论:CAP的“碱”,追求可用性
2.3.1实现基本可用的4板斧
2.3.2终一致性
2.3.3如何使用BASE理论
2.4本章小结
协议与算法篇
第3章Paxos算法
3.1BasicPaxos:如何在多个节点间确定某变量的值
3.1.1你需要了解的3种角色
3.1.2如何达成共识
3.2Multi-Paxos:Multi-Paxos不是一个算法,而是统称
3.2.1兰伯特关于Multi-Paxos的思考
3.2.2Chubby是如何实现Multi-Paxos算法的
3.3本章小结
第4章Raft算法
4.1Raft是如何选举领导者的
4.1.1有哪些成员身份
4.1.2选举领导者的过程
4.1.3选举过程四连问
4.2Raft是如何复制日志的
4.2.1如何理解日志
4.2.2如何复制日志
4.2.3如何实现日志的一致性
4.3Raft是如何解决成员变更问题的
4.3.1成员变更问题
4.3.2如何通过单节点变更解决成员变更问题
4.4Raft与一致性
4.5本章小结
第5章一致哈希算法
5.1使用哈希算法有什么问题
5.2如何使用一致哈希算法实现哈希寻址
5.3本章小结
第6章ZAB协议
6.1如何实现操作的顺序性
6.1.1为什么Multi-Paxos无法保证操作的顺序性
6.1.2ZAB协议是如何实现操作的顺序性的
6.2主节点崩溃了,怎么办
6.2.1ZAB协议是如何选举领导者的
6.2.2ZooKeeper是如何选举领导者的
6.3如何从故障中恢复
6.3.1ZAB集群如何从故障中恢复
6.3.2ZooKeeper如何从故障中恢复
6.4ZAB协议:如何处理读写请求
6.4.1ZooKeeper处理读写请求的原理
6.4.2ZooKeeper处理读写请求的代码实现
6.5ZAB协议与Raft算法
6.6本章小结
第7章Gossip协议
7.1Gossip的三板斧
7.2如何使用反熵实现终一致性
7.3本章小结
第8章QuorumNWR算法
8.1QuorumNWR的三要素
8.2如何实现QuorumNWR
8.3本章小结
第9章MySQLXA
9.1什么是XA规范
9.2如何通过MySQLXA实现分布式事务
9.3本章小结
第10章TCC
10.1什么是TCC
10.2如何通过TCC实现指令执行的原子性
10.3本章小结
第11章PBFT算法
11.1口信消息型拜占庭问题之解的局限
11.2PBFT算法是如何达成共识的
11.3如何替换作恶的主节点
11.3.1主节点作恶会出现什么问题
11.3.2如何替换作恶的主节点
11.4PBFT算法的局限、解决办法和应用
11.5本章小结
第12章PoW算法
12.1如何理解工作量证明
12.2区块链是如何实现PoW算法的
12.3本章小结
实战篇
第13章InfluxDB企业版一致性实现剖析
13.1什么是时序数据库
13.2如何实现META节点一致性
13.3如何实现DATA节点一致性
13.3.1自定义副本数
13.3.2Hinted-handoff
13.3.3反熵
13.3.4QuorumNWR
13.4本章小结
第14章HashicorpRaft
14.1如何跨过理论和代码之间的鸿沟
14.1.1HashicorpRaft如何实现领导者选举
14.1.2HashicorpRaft如何复制日志
14.2如何以集群节点为中心使用API
14.2.1如何创建Raft节点
14.2.2如何增加集群节点
14.2.3如何移除集群节点
14.2.4如何查看集群节点状态
14.3本章小结
第15章基于Raft的分布式KV系统开发实战
15.1如何设计架构
15.1.1如何设计接入协议
15.1.2如何设计KV操作
15.1.3如何实现分布式集群
15.2如何实现代码
15.2.1如何实现接入协议
15.2.2如何实现KV操作
15.2.3如何实现分布式集群
15.3本章小结