etcd技术内幕豆瓣在线阅读免费版|百度网盘下载

时间: 2022-05-06 10:47:41  18 Raft Raft 模块

编辑评论:

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

etcd技术内幕豆瓣在线阅读

简介

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

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

本书适合 Go 开发者和对 etcd 技术感兴趣的读者。

如何阅读这本书

由于篇幅所限,本书并未详细介绍Go语言的基础知识,但为了方便读者理解eted的设计思路和实现细节,作者介绍了一些必要且重要的基础内容,以供参考例如,Go 语言提供了 HTTP 功能。

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

第一章简单介绍了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 机制。键值对存储支持多个版本,具有“看”历史事件的功能。这里简单介绍一下多版本存储的含义。假设key K1对应的值为V1,当我们将K1对应的值修改为v2时,etcd并没有直接将V1修改为V2,而是同时记录V1和V2、值,并由不同的版本号区分。另外Watch历史事件的意思是我们可以给Key添加Watcher,同时指定一个历史版本,从这个版本开始的所有事件都会触发Watcher。

随着应用的不断运行,key-value对不断的修改,每个key在etcd中存储了多个版本,数据量会越来越大。为了缓解压力,eted会定期压缩清理旧数据。

在许多现代数据库系统中,B-tree 索引用于加速查询,etcd 也是如此,它在其存储中维护一个按字段排序的 B-tree 索引。在B-tree索引的每个索引项中都存储了一个key值,可以快速定位到指定的key或者进行范围查询。每个键值对应多个版本号。在 etcd 中维护一个全局自增版本号,为每个事务分配一个全局唯一的版本号(主修订版),事务中的每个操作也有一个唯一的编号。 (sub revision),通过这两部分可以确定一个唯一的Value。

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

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

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

  • 声明:本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,以上内容仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站内容来自网络收集整理或网友投稿,所提供的下载链接也是站外链接,版权争议与本站无关。您必须在下载后的24个小时之内,从您的设备中彻底删除上述内容。如果您喜欢该程序和内容,请支持正版!我们非常重视版权问题,如有侵权请邮件与我们联系处理。敬请谅解!邮箱:121671486@qq.com,微信:diqiuren010101

学习考试资源网-58edu © All Rights Reserved.  湘ICP备12013312号-3 
站点地图| 免责说明| 合作请联系| 友情链接:学习乐园