加入VIP
etcd技术内幕电子版PDF下载-etcd技术内幕豆瓣在线阅读免费版

etcd技术内幕电子版PDF下载-etcd技术内幕豆瓣在线阅读免费版

编辑点评:

etcd技术内幕主要从源码角度深入剖析etcd:etcd的背景知识,如何搭建源码环境及相关命令、Raft协议的背景,如何处理各种异常场景及相关扩展、etcd-raft模块对Raft协议的实现,etcd自带的raftexample示例、HTTP编程基础,etcd-rafthttp模块的工作原理和具体实现

etcd技术内幕豆瓣在线阅读

内容简介

eted是一个可靠的分布式KV存储产品,由CoreOs公司开发,其底层使用Rat算法保证一致性,主要用于共享配置和服务发现。

本书主要从源码角度深入剖析eted,首先介绍etcd的背景知识,如何搭建源码环境及相关的命令。接着从基本的Raft协议开始介绍,帮助读者了解Raft协议的背景、如何处理各种异常场景及相关扩展。然后分析etcd-raft模块对Raft协议的实现,同时介绍etcd自带的raftexample示例,帮助读者了解etcd-raft模块的基本使用方法。本书还介绍HTTP编程基础和etcd-rafthttp模块的工作原理及具体实现,以及etcd中如何处理WAL日志文件及快照数据文件,并且详细分析eted的底层存储,对v2版本和v3版本的存储都做了详细的介绍。最后重点介绍etcd服务端和客户端的相关内容,eted服务端会组装并协调前面介绍的各个组件,并且在它们的基础上扩展出了更多的功能,此外还详细分析v2和v3两个版本客户端的具体实现。

本书适合Go语言开发者,以及对etcd技术感兴趣的读者阅读。

如何阅读本书

由于篇幅限制,本书并没有详细介绍Go语言的基础知识,但为了便于理解读者理解eted的设计思想和实现细节,笔者介绍了一些必需且重要的基础内容,例如,Go语言提供的HTTP功能。

本书共8章,主要从源码角度深入剖析eted的原理和实现。建议读者先阅读前两章,了解Raft协议之后,再开始学习etcd的工作原理和代码实现。

第1章简要介绍etcd的背景知识及其基本的数据模型,然后介绍如何搭建源码环境及相关的命令。

第2章从基本的Raft协议开始介绍,帮助读者了解Raft协议的背景知识、大致工作原理、如何处理各种异常场景,以及几个比较重要的扩展点。

第3章着重分析etcd中的raft模块对Raft协议的实现,etcd-raft模块是etcd的核心模块之一,GitHub上很多其他项目直接使用etcd-raft模块作为其Raft协议的底层实现。同时,本章也介绍了eted自带的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两个版本客户端的具体实现。

数据模型

etcd支持可靠的键值对存储并且提供了可靠的Watcher机制,其中的键值对存储支持多版本,并且具备能够"Watch"历史事件的功能。这里简单介绍多版本存储的含义,假设键K1对应的值为V1,当我们将K1对应的值修改成v2时,etcd并不会直接将V1修改成V2,而是同时记录V1和V2两个值,并通过不同的版本号进行区分。另外,Watch历史事件的含义是,我们可以向一个Key添加Watcher,同时可以指定一个历史版本,从该版本开始的所有事件都会触发该Watcher.

随着应用不断运行,键值对不断修改,每个Key都在etcd中保存了多个版本,数据量也会越来越大。为了缓解压力,eted会定期进行压缩,清理过旧的数据。

在很多现代数据库系统中,都用了B树索引加速查询,etcd也是如此,其存储中会维护一个字段序的B树索引。在B树索引的每个索引项中,都存储了一个Key值,这样可以快速定位指定的Key或是进行范围查询。而每个Key值对应了多个版本号,etcd中维护了一个全局自增的版本号,为每次事务分配一个全局唯一的版本号(main revision),事务中的每个操作也有唯一的编号(sub revision),通过这两部分可以确定一个唯一的Value值。

每个Key会对应多个generation,当Key首次创建时,会同时创建一个与之关联的generation实例,当该Key被修改时,会将对应的版本记录到generation中,当Key被删除时,会向generation中添加tombstone,并创建新的generation,会向新generation中写入后续的版本信息。

在查询时,先在内存索引中通过用户指定的Key值,查找到该Key值对应的全部版本号,然后根据用户指定的版本号,从底层存储中查找到具体的Value值。当然,如果指定的版本号已经被etcd压缩删除,则无法再查询到该版本的Value值.

在etcd v3版本中,底层存储使用的是BoltDB,其中的Key是版本信息(main revisiontsub revision),这样,在查询时先通过上述B树索引查找到对应的版本信息,然后在BolDB中通过版本信息查找相应的Value值。

etcd技术内幕豆瓣在线阅读截图

etcd技术内幕电子版PDF下载-etcd技术内幕豆瓣在线阅读免费版插图(1)etcd技术内幕电子版PDF下载-etcd技术内幕豆瓣在线阅读免费版插图(2)etcd技术内幕电子版PDF下载-etcd技术内幕豆瓣在线阅读免费版插图(3)etcd技术内幕电子版PDF下载-etcd技术内幕豆瓣在线阅读免费版插图(4)

评分及评论

无用户评分

来评个分数吧

  • 5 分
    0
  • 4 分
    0
  • 3 分
    0
  • 2 分
    0
  • 1 分
    0

评论