开发者社区> 问答> 正文

什么是Raft协议?

什么是Raft协议?

展开
收起
1658458755422780 2020-03-31 16:51:30 1346 0
2 条回答
写回答
取消 提交回答
  • raft是一致性协议,是用来保障servers上副本一致性的一种算法.

    2020-03-31 17:17:44
    赞同 展开评论 打赏
  • 1. 角色
    	a. Follower、Candidate、Leader
    2. leader行为
    	a. 向follower同步日志
    	b. 定时向follower发送heartbeat
    3. election-timeout:150ms - 300ms
    4. 原理
    	a. 正常选举
    		i. 初始节点都是follower,并设定election-timeout
    		ii. 如果timeout周期内没有收到heartbeat,节点转变为candidate
    		iii. candidate向其他follower询问是否选举自己为leader,在收到过半数投票后,节点转变为leader,步进数+1
    	b. leader不可用
    		i. 与正常选举情况相同
    		ii. 当老leader复活后,因为步进数小于新leader,老leader转变为follower,丢弃所有uncommitted数据
    	c. follower不可用:follower复活后,重新从leader拉取日志
    	d. 多candidate
    		i. 如果多candidate得到的投票数相同时,candidate会随机选择等待间隔再次发起投票
    		ii. 直到多candidate的投票数不相同时,leader被选举出来
    	e. 多leader:步进数大的leader继续是leader,小的转变为follower
    5. 读:节点都存有完整数据,支持读
    6. 写
    	a. follower将uncommitted数据上报leader
    	b. leader发起投票,过半数follower同意后数据转为committed
    	c. leader同步给所有follower
    
    2020-04-01 10:53:08
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载