序
前言
第一部分 分布式系统基础与理论
第1章 分布式系统基础
1.1 概述
1.2 分布式设计目标
1.2.1 一致性
1.2.2 可用性
1.2.3 分区容错性
1.2.4 可扩展性
1.3 数据模型
1.3.1 关系模型
1.3.2 文档模型
1.3.3 图状数据模型
1.4 数据存储
1.4.1 数据库内部的数据结构
1.4.2 列式存储
1.5 数据冗余与副本
1.6 本章小结
第2章 分布式数据处理语言
2.1 SQL
2.1.1 SQL基础
2.1.2 SQL的查询语句
2.1.3 SQL表的连接
2.1.4 SQL的其他语句
2.2 NoSQL
2.2.1 键值数据库处理语言
2.2.2 文档数据库处理语言
2.2.3 列族数据库处理语言
2.2.4 图数据库处理语言
2.3 本章小结
第3章 分布式查询过程
3.1 分布式连接问题
3.1.1 直接连接算法
3.1.2 半连接算法
3.1.3 布隆连接算法
3.2 多关系连接
3.2.1 分布式查询优化的目标
3.2.2 分布式查询优化的基本方法
3.2.3 局部处理优化
3.2.4 基于直接连接的多连接查询优化
3.2.5 基于半连接的多连接查询优化
3.3 关系连接算法
3.3.1 嵌套循环连接算法
3.3.2 哈希连接算法
3.3.3 排序归并连接算法
3.4 本章小结
第4章 分布式环境下的事务处理
4.1 深入理解事务
4.1.1 本地事务
4.1.2 全局事务
4.1.3 分布式事务
4.2 原子提交协议和分布式事务解决方案
4.2.1 2PC协议
4.2.2 3PC协议
4.2.3 Best Efforts 1 PC事务
4.2.4 TCC事务
4.2.5 SAGA事务
4.3 并发控制协议
4.3.1 悲观并发控制协议
4.3.2 乐观并发控制协议
4.3.3 多版本并发控制协议
4.4 本章小结
第5章 分布式数据服务一致性
5.1 数据同步方法
5.1.1 主从复制
5.1.2 多主复制
5.1.3 无主复制
5.2 分布式数据一致性级别
5.2.1 线性一致性
5.2.2 顺序一致性和PRAM一致性
5.2.3 因果一致性
5.2.4 最终一致性和弱一致性
5.3 分布式数据一致性/共识算法
5.3.1 ViewStamped Replication算法
5.3.2 Paxos算法
5.3.3 Practical Byzantine Fault Tolerance算法
5.3.4 Raft算法
5.4 本章小结
第二部分 分布式系统经典案例学习与实战
第6章 分布式系统案例分析——GFS
6.1 GFS的设计目标
6.2 GFS的master节点
6.3 GFS读文件
6.4 GFS写文件
6.5 GFS的一致性
6.6 本章小结
第7章 面向分布式系统设计的Go语言基础知识
7.1 Go语言的优势
7.2 切片
7.2.1 Go语言中的数组
7.2.2 切片的声明
7.2.3 切片的追加
7.2.4 切片的截取
7.2.5 修改切片元素
7.3 Goroutine和通道
7.3.1 Goroutine简介
7.3.2 Goroutine的使用
7.3.3 通道简介
7.3.4 通道实现同步
7.4 调度器
7.4.1 调度器的设计决策
7.4.2 Go语言调度器模型
7.5 本章小结
第8章 构建强一致性算法库
8.1 核心数据结构设计
8.2 协程模型
8.3 RPC定义
8.3.1 日志条目:Entry
8.3.2 投票请求:Request-Vote
8.3.3 追加日志:Append-Entries
8.4 Leader选举实现分析
8.5 日志复制实现分析
8.6 Raft快照实现分析
8.7 本章小结
第9章 基于强一致性算法库构建分布式键值存储系统
9.1 eraftkv架构及运行流程
9.2 eraftkv环境配置
9.3 让系统运行起来
9.4 对外接口定义
9.5 服务端核心实现分析
9.6 本章小结
第10章 强一致性算法Raft的优化设计与实现:Multi-Raft
10.1 设计思考
10.2 配置服务器实现分析
10.3 分片服务器实现分析
10.4 客户端实现分析
10.5 本章小结
参考文献
展开