新書推薦:
《
知宋·宋代之科举
》
售價:HK$
102.4
《
那本书是(吉竹伸介与又吉直树 天才联动!)
》
售價:HK$
102.4
《
传播的跃迁:人工智能如何革新人类的交流
》
售價:HK$
113.9
《
纯粹·古代中国的历史与制度
》
售價:HK$
64.4
《
生活来来往往 别等来日方长 新版(伍佰:“讲好了这一辈子,再度重相逢。”别等,别遗憾!珍惜当下才是最好的解药)
》
售價:HK$
59.8
《
一个英国军事顾问眼中的二战
》
售價:HK$
285.2
《
就业、利息和货币通论(徐毓枬译本)(经济学名著译丛)
》
售價:HK$
69.0
《
瘦肝
》
售價:HK$
102.4
|
編輯推薦: |
本书主要从源码角度深入剖析etcd:
etcd的背景知识,如何搭建源码环境及相关命令
Raft协议的背景,如何处理各种异常场景及相关扩展
etcd-raft模块对Raft协议的实现,etcd自带的raftexample示例
HTTP编程基础,etcd-rafthttp模块的工作原理和具体实现
etcd中如何处理WAL日志文件及快照数据文件
etcd的底层存储(v2和v3版本)
etcd服务端及扩展
|
內容簡介: |
etcd是一个可靠的的分布式KV存储,由CoreOS公司开发,其底层使用Raft算法保证一致性,主要用于共享配置和服务发现。本书主要从源码角度深入剖析etcd,首先介绍etcd的背景知识,并介绍如何搭建起源码环境以及相关的命令。然后从基本的Raft协议开始介绍,帮助读者了解Raft协议的背景。接着分析etcd-raft模块对Raft协议的实现,etcd-raft模块是etcd的核心模块之一,该模块也被很多其他的项目中直接作为Raft协议的底层实现。然后介绍Http编程基础以及etcd-rafthttp模块的工作原理和具体实现,介绍etcd中如何处理WAL日志文件以及快照数据文件,详细分析了etcd的底层存储。*后重点介绍etcd服务端和etcd客户端的相关内容。
|
關於作者: |
2015至今,负责XS云平台的基础架构设计及研发工作,XS云平台以Kafka为消息总线,收集用户产生操作日志,为后台多个数据分析平台提供数据源。
|
目錄:
|
目录
第1章 etcd入门
1.1 etcd简介
1.2 数据模型
1.3 环境搭建
1.3.1 环境变量
1.3.2 代码结构
1.3.3 运行
本章小结
第2章 Raft协议
2.1 Leader选举
2.2 日志复制
2.3 网络分区的场景
2.4 日志压缩与快照
2.5 其他技术点
2.5.1 linearizable语义
2.5.2 只读请求
2.5.3 PreVote状态
2.5.4 Leader节点转移
本章小结
第3章 etcd-raft模块详解
3.1 raft结构体
3.1.1 Config结构体
3.1.2 Storage接口及其实现
3.1.3 unstable结构体
3.1.4 raftLog结构体
3.1.5 raft实现
3.2 Node接口
3.2.1 node结构体
3.2.2 初始化
3.2.3 run方法
3.2.4 Node接口实现
3.3 raftexample示例分析
3.3.1 raftNode
3.3.2 HTTP服务端
3.3.3 kvstore
本章小结
第4章 网络层
4.1 Go语言网络编程基础
4.1.1 http.Server
4.1.2 RoundTripper
4.2 etcd-rafthttp模块详解
4.2.1 rafthttp.Transporter接口
4.2.2 Peer接口
4.2.3 pipeline
4.2.4 streamWriter实例
4.2.5 streamReader实例
4.2.6 snapshotSender
4.3 Handler实例
4.3.1 pipelineHandler
4.3.2 streamHandler
4.3.3 snapshotHandler
本章小结
第5章 WAL日志与快照
5.1 WAL日志
5.1.1 初始化
5.1.2 打开日志
5.1.3 读取日志
5.1.4 追加日志
5.1.5 文件切换
5.2 SnapShotter
本章小结
第6章 storage
6.1 etcd v2版本存储
6.1.1 node
6.1.2 Event
6.1.3 watcher和watcherHub
6.1.4 store
6.2 etcd v3版本存储
6.2.1 backend
6.2.2 watcher机制
6.2.3 Lessor
本章小结
第7章 etcd-server详解
7.1 raftNode结构体
7.2 RaftCluster
7.3 EtcdServer
7.3.1 初始化
7.3.2 注册Handler
7.3.3 启动
7.4 ApplierV2和applierV3
7.4.1 ApplierV2
7.4.2 applierV3
7.5 AlarmStore
本章小结
第8章 etcd客户端详解
8.1 GRPC基础
8.1.1 定义proto文件
8.1.2 服务端
8.1.3 创建客户端
8.2 Client v3
8.2.1 kvServer
8.2.2 EtcdServer
8.2.3 Client
8.3 Client v2
8.3.1 KeysAPI接口
8.3.2 httpClient接口
本章小结
参考文献
|
內容試閱:
|
前言
etcd是一个可靠的分布式KV存储,其底层使用Raft算法保证一致性,主要用于共享配置和服务发现。etcd是CoreOS公司发起的一个开源项目,其源代码地址为https:github.com coreosetcd。
目前提供配置共享和服务发现功能的组件还是比较多的,其中应用最广泛、大家最熟悉的应该就是ZooKeeper了,很多开源项目都在不同程度上依赖了ZooKeeper,例如,Dubbo、Kafka。在Golang社区中,etcd是唯一一个可以媲美ZooKeeper的组件,在有些方面,etcd甚至超越了ZooKeeper,给开发者眼前一亮的感觉。
etcd作为一个优秀的分布式KV存储产品,其底层的etcd-raft模块实现了Raft协议,可以帮助开发者快速实现最终一致性功能。etcd以其高性能、易维护、Raft实现等优点,受到越来越多的开发人员的青睐,在Golang社区中声名大噪。
etcd的代码中有很多亮点,为了提高整体性能,其实现中使用了大量的goroutine和Channel。etcd 3 中开始使用BoltDB作为底层的持久存储,使用BTree索引加速查询,还提供了可靠的Watcher功能,同时提供了基于GRPC的新版本客户端。当然,etcd 3依然兼容etcd 2的内存存储和HTTP API。
etcd 3中有很多令人称赞的功能和优秀的设计,但至今还没有深入剖析etcd 3的内部设计和实现细节的图书,本书以etcd 3为基础,详细分析了etcd的架构设计和实现细节,其中穿插介绍了etcd源码中涉及的基础知识,以及笔者在实践中的思考。
如何阅读本书
由于篇幅限制,本书并没有详细介绍Go语言的基础知识,但为了便于理解读者理解etcd的设计思想和实现细节,笔者介绍了一些必需且重要的基础内容,例如,Go语言提供的HTTP功能。
本书共8章,主要从源码角度深入剖析etcd的原理和实现。建议读者先阅读前两章,了解Raft协议之后,再开始学习etcd的工作原理和代码实现。
第1章简要介绍etcd的背景知识及其基本的数据模型,然后介绍如何搭建源码环境及相关的命令。
第2章从基本的Raft协议开始介绍,帮助读者了解Raft协议的背景知识、大致工作原理、如何处理各种异常场景,以及几个比较重要的扩展点。
第3章着重分析etcd中的raft模块对Raft协议的实现,etcd-raft模块是etcd的核心模块之一,GitHub上很多其他项目直接使用etcd-raft模块作为其Raft协议的底层实现。同时,本章也介绍了etcd自带的raftexample示例,帮助读者了解etcd-raft模块的基本使用方法,方便读者在实践中直接使用etcd-raft模块。
第4章简单介绍HTTP编程基础,以及etcd-rafthttp模块的工作原理和具体实现,其中涉及RoundTripper的基本原理、rafthttp.Transporter的实现及多种Handler的实现。
第5章介绍etcd中如何处理WAL日志文件和快照数据文件,其中分析了WAL结构体和Snapshotter的具体实现。
第6章详细分析etcd的底层存储,对etcd v2和etcd v3两个版本的存储都做了详细的介绍,不仅分析了底层的KV存储,还分析了watcher机制和Lessor的实现原理。
第7章重点介绍etcd服务端的内容,etcd服务端会组装并协调前面介绍的各个组件,并且在它们的基础上扩展出了更多的功能。
第8章主要介绍etcd客户端的相关内容,详细分析了v2和v3两个版本客户端的具体实现。
如果读者在阅读本书的过程中,发现任何不妥之处,请将您宝贵的意见和建议发送到邮箱shen_baili @163.com,也欢迎读者朋友通过此邮箱与我进行交流。
致谢
感谢我的母亲,谢谢您的付出和牺牲!
感谢白酱陪我看过一盏盏亮起的路灯,感谢三十在技术上提供的帮助。
感谢电子工业出版社博文视点的陈晓猛老师,是您的辛勤工作让本书的出版成为可能。同时还要感谢许多我不知道名字的幕后工作人员为本书付出的努力。
百里燊
|
|