- DLedger 应用场景
DLedger 其中一个应用就是在分布式消息系统中,RocketMQ 4.5 版本发布后,可以采用 RocketMQ on DLedger 方式进行部署。DLedger commitlog 代替了原来的 commitlog,使得 commitlog 拥有了选举复制能力,然后通过角色透传的方式,raft 角色透传给外部 broker 角色,leader 对应原来的 master,follower 和 candidate 对应原来的 slave。
因此 RocketMQ 的 broker 拥有了自动故障转移的能力。在一组 broker 中, Master 挂了以后,依靠 DLedger 自动选主能力,会重新选出 leader,然后通过角色透传变成新的 Master。
DLedger 还可以构建高可用的嵌入式 KV 存储。我们把对一些数据的操作记录到 DLedger 中,然后根据数据量或者实际需求,恢复到hashmap 或者 rocksdb 中,从而构建一致的、高可用的 KV 存储系统,应用到元信息管理等场景。
总结来说,就是基于raft协议的commitLog存储库,实现了一组broker中可以有多个master。
以达到master节点的高可用。(比如一个master节点挂了,那么会有另一个master来接替)
再看上面那段代码,意思就是,
当DLedger开启后(也就是一组broker中有多个master节点后)
首先区分主从节点:
if (BrokerRole.SLAVE == this.messageStoreConfig.getBrokerRole()) {
如果是从节点,且主节点的地址大于6,认为是高可用集群,否则认为是非高可用集群
如果是主节点,则开始定时任务打印主从信息
|