c语言sscanf函数的用法是什么
277
2022-10-31
一起raft 切主后的故障分析
现象
线上由3个控制节点组成的一个raft集群种的一个节点stop了,stop 之前刚发过一条踢掉一台数据节点的命令,但是数据节点并没完全被踢掉---虽然元数据不在了,但是节点还在集群中,前端还能访问它。
问题分析
梳理了下kick 数据节点的业务流程如下:1.RPC服务器端响应brpc请求;2.服务器端判断当前如果是leader, 就进入leader 处理流程;3.leader append KickDataServer 事务日志到所有的副本;
每个副本收到事务日志,走下边的流程:4.1 解析对应的请求类型;4.2 判断自己现在角色是否leader, 如果不是结束当前流程;如果是,开始apply 这条事务日志:4.2.1 去掉数据库中关于带kick的数据节点的记录;4.2.2 针对有副本在待删除节点机器上的block, 发起补副本;4.2.3 返回给CLI kick数据节点成功;4.2.4 给待kick的数据节点发下线命令。
上面流程看了两遍,初步怀疑是执行到4.2.3后碰到控制节点被stop 导致的。但后来仔细一下,咱这是基于raft的啊,即便老leader被stop掉,新leader 接管后,也会重放踢数据节点的命令啊? 那问题在哪呢?
遗留问题
raft 切主后回放哪些log? raft 切主后如何回放log?
参考链接
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~