有的,参考:
RocketMQ 中DLedger框架 基于Raft算法实现选主及日志同步
https://blog.csdn.net/xiaqingxue930914/article/details/122343307
与原有Maser/Slave 结构相比,多了 RoleChangeHandler, commitLog变为 DLedgerCommitLog
DLedger 将 原有 commitLog 进行包装,产生一种新的数据格式的log。
不影响原有的commitLog的功能作用。同时实现DLedger自身功能
DLedgerCommitlog 结构: 给原有commitLog 加了一个 head。即commitLog内容作为DLedgerCommitlog 的body
Raft算法:分布式一致性算法。
主要功能体现在三个方面:1)选主; 2)日志复制; 3)安全性
选主
LeaderElector
角色(Role):
1) Leader 主节点:发送心跳,和日志;如果发现比leader更新的任期(term),则变为follower。
2) Candidate 候选节点: 发送投票请求用于成为leader,如果发现比leader更新的任期(term),则变为follower
3) Follower 跟随者: 响应 Leader 和 Candidate的请求。超过选举时间未收到Leader的心跳请求和candidate的选举请求,则成为candidate。Follower 不能发起投票,不能直接成为leader
raft算法,三种状态间的流转过程:
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
涵盖 RocketMQ、Kafka、RabbitMQ、MQTT、轻量消息队列(原MNS) 的消息队列产品体系,全系产品 Serverless 化。RocketMQ 一站式学习:https://rocketmq.io/