etcd 实战课
etcd 核心原理到大规模实践
唐聪  腾讯云资深工程师,etcd 活跃贡献者
专栏
已完结·共 28 讲
|
2.8w 人已学
|
收藏
每个节点等待发起选举的时间点不一致,优雅的解决了潜在的竞选活锁,同时易于理解
来自:04 | Raft协议:etcd如何实现高可用、数据强一致的?
11 人划过
etcd 通过引入一个 consistent index 的字段,来存储系统当前已经执行过的日志条目索引,实现幂等性。
来自:03 | 基础架构:etcd一个写请求是如何执行的?
8 人划过
如上图所示,在读事务中,它首先需要根据 key 从 treeIndex 模块获取版本号,因我们未带版本号读,默认是读取最新的数据。treeIndex 模块从 B-tree 中,根据 key 查找到 keyIndex 对象后,匹配有效的 generation,返回 generation 的 revisions 数组中最后一个版本号{2,0}给读事务对象。
来自:07 | MVCC:如何实现多版本并发控制?
6 人划过
一方面可能是你的磁盘 IO 比较慢。因为 etcd 从 Raft 的 Ready 结构获取到相关待提交日志条目后,它需要将此消息写入到 WAL 日志中持久化。你可以通过观察 etcd_wal_fsync_durations_seconds_bucket 指标来确定写 WAL 日志的延时。若延时较大,你可以使用 SSD 硬盘解决
来自:17 | 性能及稳定性(下):如何优化及扩展etcd性能?
5 人划过
etcd 启动的时候,会通过 mmap 机制将 db 文件映射到内存,后续可从内存中快速读取文件中的数据。
来自:10 | boltdb:如何持久化存储你的key-value数据?
5 人划过
而无需全量同步,它是 etcd Watch 机制数据增量同步的核心。
来自:08 | Watch:如何高效获取数据变化通知?
3 人划过
将有效的版本号保存到 map 数据结构中
来自:11 | 压缩:如何回收旧版本数据?
3 人划过
优化方案是 compact 的时候会将 treeIndex 克隆一份,以空间来换时间,尽量降低锁阻塞带来的超时问题
来自:16 | 性能及稳定性(上):如何优化及扩展etcd性能?
3 人划过
通过 Watch 机制各自监听 prefix 相同,revision 比自己小的 key,因为只有 revision 比自己小的 key 释放锁,我才能有机会,获得锁
来自:21 | 分布式锁:为什么基于etcd实现分布式锁比Redis锁更安全?
3 人划过
最后你要注意的是,此特性对性能有一定影响,目前仍然是试验特性。你可以通过 experimental-enable-lease-checkpoint 参数开启。
来自:06 | 租约:如何检测你的客户端存活?
3 人划过
*精彩内容为该课程各文章中划线次数最多的内容
免费试读
讲师

唐聪

腾讯云资深工程师,etcd 活跃贡献者

唐聪,腾讯云资深工程师,etcd 活跃贡献者。 唐聪一直从事于内部公共组件建设,曾负责大规模排行榜、Redis 平台建设,目前负责腾讯云及内部公共 etcd 平台的建设与维护,是腾讯云 etcd 负责人。 他主导了腾讯 etcd 平台从 0 到 1 的建设,解决过众多大规...查看更多
编辑推荐
包含这门课的学习路径

架构师

28门课程 151.9w人学习

运维工程师

32门课程 149.2w人学习

云原生工程师

14门课程 86.5w人学习

后端工程师

27门课程 184.1w人学习
看过的人还看了
MySQL 实战 45 讲
林晓斌
网名丁奇,前腾讯云数据库负责人

49讲 | 224956 人已学习

¥68¥199
深入剖析 Kubernetes
张磊
Kubernetes 社区资深成员与项目维护者

57讲 | 116785 人已学习

¥68¥199
Redis 核心技术与实战
蒋德钧
中科院计算所副研究员

53讲 | 81764 人已学习

¥68¥199
数据结构与算法之美
王争
前 Google 工程师

81讲 | 283825 人已学习

¥68¥199
左耳听风
陈皓
网名“左耳朵耗子”,资深技术专家

119讲 | 181019 人已学习

¥98¥399
从 0 开始学架构
李运华
网名“华仔”,前阿里资深技术专家(P9)

66讲 | 152645 人已学习

¥68¥199