handleVote方法判断发起节点、响应节点维护的 team 进行投票“仲裁”如何理解?
如果发起投票节点的 term 小于当前节点的 term 此种情况下投拒绝票,也就是说在 raft 协议的世界中,谁的 term 越大,越有话语权。 如果发起投票节点的 term 等于当前节点的 term 如果两者的 term 相等,说明两者都处在同一个投票轮次中,地位平等,接下来看该节点是否已经投过票。 如果未投票、或已投票给请求节点,则继续后面的逻辑(请看 step3)。 如果该节点已存在的 Leader 节点,则拒绝并告知已存在 Leader 节点。 如果该节点还未有 Leader 节点,但已经投了其他节点的票,则拒绝请求节点,并告知已投票。 如果发起投票节点的 term 大于当前节点的 term。 拒绝请求节点的投票请求,并告知自身还未准备投票,自身会使用请求节点的投票轮次立即进入到 Candidate 状态。 答复内容摘自《Apache RocketMQ 源码解析》,这本电子书收录开发者藏经阁 下载连接:https://developer.aliyun.com/topic/download?id=1140
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
阿里云拥有国内全面的云原生产品技术以及大规模的云原生应用实践,通过全面容器化、核心技术互联网化、应用 Serverless 化三大范式,助力制造业企业高效上云,实现系统稳定、应用敏捷智能。拥抱云原生,让创新无处不在。