《etcd技术内幕》PDF下载

  • 购买积分:14 如何计算积分?
  • 作  者:百里燊编著
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2018
  • ISBN:9787121343865
  • 页数:402 页
图书介绍:etcd是一个可靠的的分布式KV存储,由CoreOS公司开发,其底层使用Raft算法保证一致性,主要用于共享配置和服务发现。本书主要从源码角度深入剖析etcd,首先介绍etcd的背景知识,并介绍如何搭建起源码环境以及相关的命令。然后从基本的Raft协议开始介绍,帮助读者了解Raft协议的背景。接着分析etcd-raft模块对Raft协议的实现,etcd-raft模块是etcd的核心模块之一,该模块也被很多其他的项目中直接作为Raft协议的底层实现。然后介绍Http编程基础以及etcd-rafthttp模块的工作原理和具体实现,介绍etcd中如何处理WAL日志文件以及快照数据文件,详细分析了etcd的底层存储。最后重点介绍etcd服务端和etcd客户端的相关内容。

第1章 etcd入门 1

1.1 etcd简介 1

1.2 数据模型 2

1.3 环境搭建 3

1.3.1 环境变量 3

1.3.2 代码结构 3

1.3.3 运行 4

本章小结 6

第2章 Raft协议 7

2.1 Leader选举 8

2.2 日志复制 15

2.3 网络分区的场景 21

2.4 日志压缩与快照 27

2.5 其他技术点 29

2.5.1 linearizable语义 29

2.5.2 只读请求 29

2.5.3 PreVote状态 30

2.5.4 Leader节点转移 31

本章小结 31

第3章 etcd-raft模块详解 33

3.1 raft结构体 35

3.1.1 Config结构体 37

3.1.2 Storage接口及其实现 38

3.1.3 unstable结构体 43

3.1.4 raftLog结构体 48

3.1.5 raft实现 55

3.2 Node接口 95

3.2.1 node结构体 98

3.2.2 初始化 98

3.2.3 run()方法 100

3.2.4 Node接口实现 109

3.3 raftexample示例分析 110

3.3.1 raftNode 111

3.3.2 HTTP服务端 125

3.3.3 kvstore 128

本章小结 129

第4章 网络层 130

4.1 Go语言网络编程基础 130

4.1.1 http.Server 130

4.1.2 RoundTripper 135

4.2 etcd-rafthttp模块详解 142

4.2.1 rafthttp.Transporter接口 144

4.2.2 Peer接口 148

4.2.3 pipeline 152

4.2.4 streamWriter实例 155

4.2.5 streamReader实例 159

4.2.6 snapshotSender 162

4.3 Handler实例 164

4.3.1 pipelineHandler 164

4.3.2 streamHandler 165

4.3.3 snapshotHandler 166

本章小结 167

第5章 WAL日志与快照 169

5.1 WAL日志 169

5.1.1 初始化 174

5.1.2 打开日志 176

5.1.3 读取日志 177

5.1.4 追加日志 181

5.1.5 文件切换 184

5.2 SnapShotter 186

本章小结 189

第6章 storage 190

6.1 etcd v2版本存储 190

6.1.1 node 192

6.1.2 Event 197

6.1.3 watcher和watcherHub 200

6.1.4 store 205

6.2 etcd v3版本存储 216

6.2.1 backend 217

6.2.2 watcher机制 274

6.2.3 Lessor 292

本章小结 300

第7章 etcd-server详解 302

7.1 raftNode结构体 302

7.2 RaftCluster 311

7.3 EtcdServer 312

7.3.1 初始化 315

7.3.2 注册Handler 326

7.3.3 启动 328

7.4 ApplierV2和applierV3 350

7.4.1 ApplierV2 350

7.4.2 applierV3 353

7.5 AlarmStore 366

本章小结 369

第8章 etcd客户端详解 371

8.1 GRPC基础 371

8.1.1 定义proto文件 371

8.1.2 服务端 373

8.1.3 创建客户端 376

8.2 Client v3 376

8.2.1 kvServer 378

8.2.2 EtcdServer 379

8.2.3 Client 387

8.3 Client v2 394

8.3.1 KeysAPI接口 394

8.3.2 httpClient接口 396

本章小结 401

参考文献 402