随笔分类 - etcd-raft
摘要:【参考】 https://blog.csdn.net/qq_40859492/article/details/124428555 【主要原理】 1)写EntryConfChangeV2 2)apply时,进入联合共识阶段,用Cold_new决策,创建一个空EntryConfChangeV2日志Ent
阅读全文
摘要:【用例内容】 【主要逻辑】 applyConfChange的时候 1)通过之前的changer类做检查 2)替换cfg和prs为新的值
阅读全文
摘要:【leave-joint处理前】 【leave-joint处理结果】 voters=(2)&&(1) learners_next=(1)处理后 voters=(2) learners=(1)【逻辑】
阅读全文
摘要:【时序】 【疑问1--为什么voters是3和1】 删除1,只删incoming 【疑问2--为什么learners_next是1】 如果outgoing里有,则加入learner_next
阅读全文
摘要:【主要时序】 【类图】
阅读全文
摘要:【TestProgressLeader】 测试leader的progress.match 1)写5条消息 2)生成ready(模拟本地盘写) 3)advance(ready) leader的match变为6,next=7 【TestProgressResumeByHeartbeatResp】 测试心
阅读全文
摘要:1)rawnode是raft模块的外层接口类 为什么需要rawNode这一层?
阅读全文
摘要:1)发几个消息 2)调用advance(ready)触发commit
阅读全文
摘要:1)TestProposal
阅读全文
摘要:【用例TestCandidateResetTermMsgHeartbeat】 1)c.randomizedElectionTimeout=13 2)调用13次raft.tick() 3)tickElection里检测出pastElectionTimeout r.electionElapsed》= 1
阅读全文
摘要:【参考】 https://www.jianshu.com/p/267e1d626c22 【主要逻辑】 MsgHup用于开启选举 【MsgApp】 https://pkg.go.dev/go.etcd.io/raft/v3#hdr-MessageType 'MsgApp' contains log e
阅读全文
摘要:【流程】 1)第一轮1节点发起选举,自己的发送邮箱r.msgs包含两个消息,给2和3的 2)框架里取出这两条消息 3)通过消息的msgTo找到2节点的状态机,执行 【对象】 【逻辑】 【TestLeaderCycle】
阅读全文
摘要:1)17k代码 核心代码看上去只有4k行 2)主要类图
阅读全文

浙公网安备 33010602011771号