书籍详情
分布式协议与算法实战:攻克分布式系统设计的关键难题
作者:韩健 著
出版社:机械工业出版社
出版时间:2022-08-01
ISBN:9787111710226
定价:¥99.00
购买这本书可以去
内容简介
这是一本以实战为导向、系统讲解分布式协议与算法、深刻揭示分布式系统精髓与本质的著作。作者以自己在腾讯和Intel的多年分布式系统工程经验为基础,用图文并茂、通俗易懂的方式详细讲解了分布式的基础理论、协议、算法,以及它们如何在工程实践中落地。 通过本书,你将掌握如下核心知识:(1)4大分布式基础理论 详细讲解分布式架构设计的核心基础理论,包括拜占庭将军问题、CAP理论、ACID理论、BASE理论,这些理论能指导你在实战中根据场景特点选择合适的分布式算法。(2)10种常用的分布式协议和算法 详细讲解了Paxos算法、Raft算法、一致哈希算法、ZAB协议、Gossip协议、Quorum NWR协议、MySQL XA规范、TCC、PBFT算法、PoW算法等常用分布式协议和算法的的原理、特点、适用场景和常见误区等。(3)3大综合实战案例 通过3个综合案例讲解了分布式基础理论和分布式算法在工程实践中的应用,教你将所学知识真正落地。包括InfluxDB企业版的CP架构和AP架构的设计和背后思考,以及Raft、Quorum NWR、Anti-Entropy等分布式算法的具体实现。
作者简介
作者:韩健资深分布式技术专家,拥有10余年技术研发和管理经验。曾就职于腾讯(前腾讯QQ后端基础设施技术负责人)和Intel,从事与大规模分布式系统和云计算相关的工作。在大规模分布式系统领域有非常深厚的积累,擅长分布式、高性能、高并发、高可用的海量服务中间件的架构设计和开发,尤其是与大数据中间件相关的各种技术。在操作系统和计算机网络领域也有非常丰富的实践经验,对Linux内核、TCP/IP等技术有深入的理解。热衷于技术分享,是FreeTSDB(业界第一个补齐了InfluxDB分布式能力的开源时序数据库)的发起人和核心贡献者。极客时间专栏作家,《分布式协议与算法实战》专栏作者,著有畅销书《InfluxDB原理与实战》。维护有微信公众号influxdb-dev。 技术审校:朱仪姣腾讯资深架构师,腾讯监管业务研发负责人。对分布式设计、海量服务之道、高性能架构设计有深刻的理解和丰富的实战经验,主导了万亿级安全监测大数据分析平台的分布式架构设计和性能优化等项目。
目录
【理论篇】
第1章 拜占庭将军问题2
1.1 什么是拜占庭将军问题2
1.1.1 苏秦的困境3
1.1.2 二忠一叛难题3
1.2 口信消息,我们该如何处理呢5
1.3 如何解决n>(3f +1)的限制8
1.3.1 什么是签名消息8
1.3.2 签名消息型拜占庭问题之解10
1.4 拜占庭容错算法和非拜占庭容错算法,该如何选择呢16
1.5 本章小结17
第2章 CAP理论19
2.1 CAP理论:分布式系统的ph试纸,用它来测酸碱度20
2.1.1 CAP三指标20
2.1.2 CAP不可能三角24
2.1.3 如何使用CAP理论25
2.2 ACID理论:CAP的“酸”,追求一致性28
2.2.1 二阶段提交协议30
2.2.2 TCC32
2.3 BASE理论:CAP的“碱”,追求可用性35
2.3.1 实现基本可用的4板斧36
2.3.2 终一致性37
2.3.3 如何使用BASE理论39
2.4 本章小结40
【协议与算法篇】
第3章 Paxos算法44
3.1 Basic Paxos:如何在多个节点间确定某变量的值45
3.1.1 你需要了解的3种角色46
3.1.2 如何达成共识48
3.2 Multi-Paxos:Multi-Paxos不是一个算法,而是统称52
3.2.1 兰伯特关于Multi-Paxos的思考53
3.2.2 Chubby是如何实现Multi-Paxos算法的55
3.3 本章小结58
第4章 Raft算法59
4.1 Raft是如何选举领导者的60
4.1.1 有哪些成员身份60
4.1.2 选举领导者的过程61
4.1.3 选举过程四连问64
4.2 Raft是如何复制日志的68
4.2.1 如何理解日志68
4.2.2 如何复制日志69
4.2.3 如何实现日志的一致性71
4.3 Raft是如何解决成员变更问题的73
4.3.1 成员变更问题74
4.3.2 如何通过单节点变更解决成员变更问题75
4.4 Raft与一致性79
4.5 本章小结80
第5章 一致哈希算法82
5.1 使用哈希算法有什么问题83
5.2 如何使用一致哈希算法实现哈希寻址85
5.3 本章小结90
第6章 ZAB协议92
6.1 如何实现操作的顺序性93
6.1.1 为什么Multi-Paxos无法保证操作的顺序性93
6.1.2 ZAB协议是如何实现操作的顺序性的97
6.2 主节点崩溃了,怎么办101
6.2.1 ZAB协议是如何选举领导者的101
6.2.2 ZooKeeper是如何选举领导者的107
6.3 如何从故障中恢复111
6.3.1 ZAB集群如何从故障中恢复112
6.3.2 ZooKeeper如何从故障中恢复119
6.4 ZAB协议:如何处理读写请求125
6.4.1 ZooKeeper处理读写请求的原理126
6.4.2 ZooKeeper处理读写请求的代码实现127
6.5 ZAB协议与Raft算法134
6.6 本章小结136
第7章 Gossip协议137
7.1 Gossip的三板斧138
7.2 如何使用反熵实现终一致性141
7.3 本章小结144
第8章 Quorum NWR算法145
8.1 Quorum NWR的三要素146
8.2 如何实现Quorum NWR149
8.3 本章小结150
第9章 MySQL XA151
9.1 什么是XA规范152
9.2 如何通过MySQL XA实现分布式事务155
9.3 本章小结157
第10章 TCC158
10.1 什么是TCC159
10.2 如何通过TCC实现指令执行的原子性161
10.3 本章小结163
第11章 PBFT算法165
11.1 口信消息型拜占庭问题之解的局限166
11.2 PBFT算法是如何达成共识的167
11.3 如何替换作恶的主节点171
11.3.1 主节点作恶会出现什么问题171
11.3.2 如何替换作恶的主节点172
11.4 PBFT算法的局限、解决办法和应用176
11.5 本章小结177
第12章 PoW算法178
12.1 如何理解工作量证明179
12.2 区块链是如何实现PoW算法的181
12.3 本章小结183
【实战篇】
第13章 InfluxDB企业版一致性实现剖析186
13.1 什么是时序数据库186
13.2 如何实现META节点一致性188
13.3 如何实现DATA节点一致性188
13.3.1 自定义副本数188
13.3.2 Hinted-handoff189
13.3.3 反熵190
13.3.4 Quorum NWR191
13.4 本章小结192
第14章 Hashicorp Raft194
14.1 如何跨过理论和代码之间的鸿沟195
14.1.1 Hashicorp Raft如何实现领导者选举195
14.1.2 Hashicorp Raft如何复制日志201
14.2 如何以集群节点为中心使用API205
14.2.1 如何创建Raft节点205
14.2.2 如何增加集群节点208
14.2.3 如何移除集群节点209
14.2.4 如何查看集群节点状态210
14.3 本章小结211
第15章 基于Raft的分布式KV系统开发实战213
15.1 如何设计架构214
15.1.1 如何设计接入协议215
15.1.2 如何设计KV操作216
15.1.3 如何实现分布式集群218
15.2 如何实现代码220
15.2.1 如何实现接入协议220
15.2.2 如何实现KV操作222
15.2.3 如何实现分布式集群224
15.3 本章小结229
第1章 拜占庭将军问题2
1.1 什么是拜占庭将军问题2
1.1.1 苏秦的困境3
1.1.2 二忠一叛难题3
1.2 口信消息,我们该如何处理呢5
1.3 如何解决n>(3f +1)的限制8
1.3.1 什么是签名消息8
1.3.2 签名消息型拜占庭问题之解10
1.4 拜占庭容错算法和非拜占庭容错算法,该如何选择呢16
1.5 本章小结17
第2章 CAP理论19
2.1 CAP理论:分布式系统的ph试纸,用它来测酸碱度20
2.1.1 CAP三指标20
2.1.2 CAP不可能三角24
2.1.3 如何使用CAP理论25
2.2 ACID理论:CAP的“酸”,追求一致性28
2.2.1 二阶段提交协议30
2.2.2 TCC32
2.3 BASE理论:CAP的“碱”,追求可用性35
2.3.1 实现基本可用的4板斧36
2.3.2 终一致性37
2.3.3 如何使用BASE理论39
2.4 本章小结40
【协议与算法篇】
第3章 Paxos算法44
3.1 Basic Paxos:如何在多个节点间确定某变量的值45
3.1.1 你需要了解的3种角色46
3.1.2 如何达成共识48
3.2 Multi-Paxos:Multi-Paxos不是一个算法,而是统称52
3.2.1 兰伯特关于Multi-Paxos的思考53
3.2.2 Chubby是如何实现Multi-Paxos算法的55
3.3 本章小结58
第4章 Raft算法59
4.1 Raft是如何选举领导者的60
4.1.1 有哪些成员身份60
4.1.2 选举领导者的过程61
4.1.3 选举过程四连问64
4.2 Raft是如何复制日志的68
4.2.1 如何理解日志68
4.2.2 如何复制日志69
4.2.3 如何实现日志的一致性71
4.3 Raft是如何解决成员变更问题的73
4.3.1 成员变更问题74
4.3.2 如何通过单节点变更解决成员变更问题75
4.4 Raft与一致性79
4.5 本章小结80
第5章 一致哈希算法82
5.1 使用哈希算法有什么问题83
5.2 如何使用一致哈希算法实现哈希寻址85
5.3 本章小结90
第6章 ZAB协议92
6.1 如何实现操作的顺序性93
6.1.1 为什么Multi-Paxos无法保证操作的顺序性93
6.1.2 ZAB协议是如何实现操作的顺序性的97
6.2 主节点崩溃了,怎么办101
6.2.1 ZAB协议是如何选举领导者的101
6.2.2 ZooKeeper是如何选举领导者的107
6.3 如何从故障中恢复111
6.3.1 ZAB集群如何从故障中恢复112
6.3.2 ZooKeeper如何从故障中恢复119
6.4 ZAB协议:如何处理读写请求125
6.4.1 ZooKeeper处理读写请求的原理126
6.4.2 ZooKeeper处理读写请求的代码实现127
6.5 ZAB协议与Raft算法134
6.6 本章小结136
第7章 Gossip协议137
7.1 Gossip的三板斧138
7.2 如何使用反熵实现终一致性141
7.3 本章小结144
第8章 Quorum NWR算法145
8.1 Quorum NWR的三要素146
8.2 如何实现Quorum NWR149
8.3 本章小结150
第9章 MySQL XA151
9.1 什么是XA规范152
9.2 如何通过MySQL XA实现分布式事务155
9.3 本章小结157
第10章 TCC158
10.1 什么是TCC159
10.2 如何通过TCC实现指令执行的原子性161
10.3 本章小结163
第11章 PBFT算法165
11.1 口信消息型拜占庭问题之解的局限166
11.2 PBFT算法是如何达成共识的167
11.3 如何替换作恶的主节点171
11.3.1 主节点作恶会出现什么问题171
11.3.2 如何替换作恶的主节点172
11.4 PBFT算法的局限、解决办法和应用176
11.5 本章小结177
第12章 PoW算法178
12.1 如何理解工作量证明179
12.2 区块链是如何实现PoW算法的181
12.3 本章小结183
【实战篇】
第13章 InfluxDB企业版一致性实现剖析186
13.1 什么是时序数据库186
13.2 如何实现META节点一致性188
13.3 如何实现DATA节点一致性188
13.3.1 自定义副本数188
13.3.2 Hinted-handoff189
13.3.3 反熵190
13.3.4 Quorum NWR191
13.4 本章小结192
第14章 Hashicorp Raft194
14.1 如何跨过理论和代码之间的鸿沟195
14.1.1 Hashicorp Raft如何实现领导者选举195
14.1.2 Hashicorp Raft如何复制日志201
14.2 如何以集群节点为中心使用API205
14.2.1 如何创建Raft节点205
14.2.2 如何增加集群节点208
14.2.3 如何移除集群节点209
14.2.4 如何查看集群节点状态210
14.3 本章小结211
第15章 基于Raft的分布式KV系统开发实战213
15.1 如何设计架构214
15.1.1 如何设计接入协议215
15.1.2 如何设计KV操作216
15.1.3 如何实现分布式集群218
15.2 如何实现代码220
15.2.1 如何实现接入协议220
15.2.2 如何实现KV操作222
15.2.3 如何实现分布式集群224
15.3 本章小结229
猜您喜欢