NEWS DETAIL

游戏后端分布式学习——etcd

发布时间:2026/9/26 7:34:43 · 栏目:资讯中心

尧图网络原创建站知识分享正文
基础概念是什么强一致的分布式 KV 存储基于 Raft 共识算法定位分布式系统的协调大脑——存元数据、配置、协调状态不存业务热数据对比Redis 是 AP 系统高性能弱一致etcd 是 CP 系统强一致性能次之数据模型强一致的分布式 KV 存储基于 Raft 共识算法定位分布式系统的协调大脑——存元数据、配置、协调状态不存业务热数据对比Redis 是 AP 系统高性能弱一致etcd 是 CP 系统强一致性能次之集群与 Quorum需要补充这里设计的原因奇数节点3/5/7生产最常用 5 节点Quorum n/2 13 节点容忍 1 节点故障5 节点容忍 2 节点故障为什么不能偶数4 节点和 3 节点都只能容忍 1 节点故障但 4 节点需要 3 票75%故障代价更高存储引擎WALWrite-Ahead Log预写日志任何修改先追加到 WAL 并 fsync 到磁盘再应用到状态机作用节点崩溃后能从 WAL 恢复性能关键WAL fsync 延迟直接影响 etcd 写吞吐99分位应 10msSnapshot快照定期将状态机的当前状态序列化到磁盘作用压缩 WAL 大小防止日志无限增长触发–snapshot-count 控制默认 10000 条日志触发一次Copy-on-Write快照过程中不阻塞正常读写v3的底层存储引擎BoltDB存储KV 数据 索引 MVCC 版本读路径内存中的 BTree 索引 → 定位到数据文件偏移 → 读取写路径WAL 先写 → BoltDB 事务提交、MVCC 多版本每次写操作生成新的 revision全局递增revision 由 main 和 sub 组成{main: 全局版本, sub: 同一事务内的序号}Watch 机制的基础通过 revision 可以精确订阅从某个版本开始的所有变更核心原语待详细学习Lease租约带 TTL 的租约对象TTL 到点自动过期一个 Lease 可绑定多个 keyLease 过期则所有绑定的 key 全部删除KeepAlive客户端定期续租防止 Lease 过期游戏场景服务注册TTL5s KeepAlive 心跳 1s、选主Txn事务IF-Then-Else​ 结构IF compare THEN success ops ELSE failure ops比较操作version / ! / / / modCompare-and-Swap (CAS)​ 的基础IF version 0 THEN PUTkey 不存在才能 put所有 etcd 操作都是原子 TxnWatch监听监听 key 或 key 前缀的变化基于 MVCC可以指定 start_revision从历史事件开始回放事件类型PUT创建/更新、DELETE删除Watch 流长连接服务端持续推送事件游戏场景配置推送、状态变更通知、选主 key 删除事件Compact压缩定期压缩旧版本的 MVCC 数据防止历史版本无限增长压缩后Watch 只能从压缩点之后的 revision 开始生产配置–auto-compaction-moderevision --auto-compaction-retention1000关键操作选主流程etcd 实现1. 创建 LeaseTTL10s 2. Txn: IF key 不存在 THEN PUT(key, node_id, lease) 3. 成功 → 成为 Leader启动 KeepAlive 续租 4. 失败 → 成为 FollowerWatch key 的 DELETE 事件 5. Leader 续租失败 → Lease 过期 → key 自动删除 → Follower 通过 Watch 感知 → 重新选主分布式锁流程etcd 实现1. 创建 LeaseTTL5s 2. Txn: IF lock_key 不存在 THEN PUT(lock_key, token, lease) 3. 成功 → 获取锁启动 KeepAlive 4. 失败 → Watch lock_key 的前一个 key公平锁或自旋重试 5. 释放锁 → 删除 lock_key 或撤销 Lease读写路径写路径客户端 PUT → Leader 接收 → 创建 Raft 日志条目 → Raft 广播 AppendEntries → 多数派确认 → 提交 → 应用到 BoltDB 状态机 → 返回客户端读路径线性一致客户端 GET → Leader 接收 → ReadIndex确认自己仍是 Leader心跳确认多数派 → 从 BoltDB 读取 → 返回客户端概念自检清单为什么 etcd 集群节点数必须是奇数3 节点和 4 节点有什么区别WAL 和 Snapshot 各自解决什么问题它们的关系是什么Lease 过期后绑定的 key 会怎样客户端如何防止 Lease 过期Txn 的 IF-Then-Else 结构中compare 可以比较哪些条件Watch 机制为什么能精确订阅历史事件MVCC revision 在其中起什么作用etcd 的线性一致性读是如何保证的ReadIndex 和 Lease Read 有什么区别选主时如果 Leader 崩溃Lease 过期后 Follower 如何感知并重新选主分布式锁的公平锁是如何通过 Watch 实现的网络分区时etcd 集群会怎样数据会不一致吗为什么游戏后端中哪些数据应该存 etcd哪些应该存 Redis判断标准是什么
✦

本文为尧图网络原创建站知识分享。想针对自身行业获取定制化建站方案?欢迎咨询,资深顾问免费为你出思路。

RELATED

相关 资讯推荐

MORE

更多 新鲜资讯

JMeter入门实战:从零构建HTTP接口性能测试脚本与结果分析
2026/9/25 20:15:57

JMeter入门实战:从零构建HTTP接口性能测试脚本与结果分析

1. 项目概述:从零开始,用JMeter搞定HTTP性能测试 刚接触性能测试的新手,或者是从功能测试转过来的朋友,一听到“压测”两个字,心里可能就有点发怵。工具那么多,概念那么杂,从哪儿下手呢&#xf…

Earendel: 一个纯TS写的POSIX兼容的微内核Web操作系统
2026/9/25 19:05:45

Earendel: 一个纯TS写的POSIX兼容的微内核Web操作系统

最近我用TypeScript写了一个运行在浏览器里的Web操作系统 Earendel(目前已知的距离地球最遥远的恒星)。开发它的初衷主要是为了Linux和操作系统课程的教学。市面上绝大多数Web OS项目,要么只是做了一个长得像Windows/macOS的网页UI拼盘&#…

5分钟掌握Windows防撤回神器:让微信QQ撤回消息无处遁形[特殊字符]
2026/9/25 16:12:04

5分钟掌握Windows防撤回神器:让微信QQ撤回消息无处遁形[特殊字符]

5分钟掌握Windows防撤回神器:让微信QQ撤回消息无处遁形🚀 【免费下载链接】RevokeMsgPatcher :trollface: A hex editor for WeChat/QQ/TIM - PC版微信/QQ/TIM防撤回补丁(我已经看到了,撤回也没用了) 项目地址: http…

从零制作同人动画:技术路线、流程与实战避坑指南
2026/9/25 7:54:32

从零制作同人动画:技术路线、流程与实战避坑指南

1. 先搞清楚这个“粉丝动画”到底是什么,以及它能解决什么问题看到“五条悟VS宿傩/咒术回战粉丝动画”这个标题,很多人的第一反应可能是去找一个现成的视频。但如果你是一个想自己动手创作、或者想了解这类作品背后技术流程的创作者,这个标题…

闭源降价80%,开源却在涨价:AI定价的交叉路口
2026/9/25 16:10:12

闭源降价80%,开源却在涨价:AI定价的交叉路口

8月6日,两条价格曲线悄然交汇。 一条向下:OpenAI把GPT-5.6 Luna的输出价格从6美元砍到1.2美元/百万Token,降幅80%。另一条向上:同一天,DeepSeek公告全线涨价,措辞是"涨幅较大",非试探…

产线三防平板选哪个牌子?5个品牌实测告诉你别瞎买
2026/9/25 20:15:12

产线三防平板选哪个牌子?5个品牌实测告诉你别瞎买

产线三防平板选哪个牌子?5个品牌实测告诉你别瞎买经常有工厂朋友拿着网上的"三防平板十大品牌排行榜"来问我:到底选哪个?说实话排行榜看看就行,真正选型得看你产线什么场景。今天挑五个在产线数字化里用得比较多的品牌—…

看完这篇,还想了解更多?

预约尧图网络顾问一对一沟通,针对你的行业与现状给出建站建议,全程免费。

免费咨询