随笔分类 -  etcd-raft

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