45|Master高可用:怎样借助etcd实现服务选主?
郑建勋
你好,我是郑建勋。
上一节课,我们搭建起了 Master 的基本框架。这一节课,让我们接着实现分布式 Master 的核心功能:选主。
etcd 选主 API
我们在讲解架构设计时提到过,可以开启多个 Master 来实现分布式服务的故障容错。其中,只有一个 Master 能够成为 Leader,只有 Leader 能够完成任务的分配,只有 Leader 能够处理外部访问。当 Leader 崩溃时,其他的 Master 将竞争上岗成为 Leader。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
etcd实现分布式选主的方法在分布式系统设计中扮演着重要角色。本文深入介绍了利用etcd的分布式协调服务实现分布式选主的原理和实现细节。通过etcd选主API的核心功能,包括创建带租约的会话、创建选举对象Election以及开启选举等方法,读者可以快速了解分布式选主算法的核心逻辑和实现细节。文章详细解析了Master的选主逻辑和代码实现过程,以及在实际运行中的效果展示。利用etcd实现分布式Master的选主,确保了在同一时刻只能存在一个Leader,并实现了Master的故障容错能力。通过监听最近的Key的DELETE事件,实现了所有节点对同一个Key的抢占,同时避免了集群可能出现的惊群效应。总之,本文为读者提供了深入了解分布式选主算法及其实现细节的有益参考,为实际项目中的分布式系统设计提供了指导。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Go 进阶 · 分布式爬虫实战》,新⼈⾸单¥68
《Go 进阶 · 分布式爬虫实战》,新⼈⾸单¥68
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(4)
- 最新
- 精选
- 無所畏这段话是不是有问题? "waitDeletes 函数会调用 client.Get 获取到当前争抢的 /resources/election/ 路径下具有最大版本号的 Key" 看waitDeletes 源码的注释是: "waitDeletes efficiently waits until all keys matching the prefix and no greater than the create revision."
作者回复: waitDeletes分为了2步,第一步是获取之前具有最大版本号的 Key,第二步是监听这个最大key的删除事件。 你截取我的文字部分,漏掉了监听这一步。 我想表达的是和注释一样的
2023-01-30归属地:广东 - Realm请问老师: “当前 Master 需要监听这个最大版本号 Key 的删除事件。当这个特定的 Key 被删除,就意味着已经没有比当前 Master 创建的 Key 更早的 Key 了,因此当前的 Master 理所当然就排队成为了 Leader。” 1 是所有master监听的内容都相同吗? 2 这里如何避免惊群?
作者回复: 其实每一个Master都是监听的前一个Mater创建的key,所以master监听的内容是不同的,也就没有了惊群了
2023-01-26归属地:浙江3 - Geek_2c2c44选主那里, for loop里面的time.After建议改一下, 每次调用time.After会返回一个channel, 可能有内存泄漏的风险;改成Ticker或者context.WithTimeout来实现2024-01-30归属地:浙江
- Geek_7e6c5e太酷了,etcd让普通程序员也有了开发分布式系统的能力2023-01-23归属地:陕西
收起评论