DLedger技术替换broker的CommitLog,由DLedger来管理CommitLog
每一个broker上都有一个DLedger组件
1.DLedger基于Raft协议选举Leader Broker
Raft协议简单来说是:
如果一轮下来选不出Leader的话,就让大家随机休眠.首先苏醒的投票给自己,其他人苏醒之后发现收到选票,就会跟投
2.DLedger基于Raft协议进行多副本同步
数据同步分为两个阶段,一个是uncommited阶段,一个是commited阶段
Leader Broker上的DLedger收到一条数据后,会标记为uncommited状态,然后会通过自己的DledgerServer把这个uncommited数据发送给follower broker的DLedgerServer
然后follower broker的DLedgerServer收到uncommited之后,会返回一个ack给Leader,然后Leader收到了超过半数的follower返回的ack之后,会将这条消息标记为committed状态
可以理解为主从同步中的同步双写