RAFT是一个通俗易懂,更容易落地的分布式协议。分布式协议一般都比较难懂,但是看了几个协议之后发现画PPT是理解一个协议比较好的办法,如果喜欢欢迎转发,后续会补充其他协议的PPT。

节点的状态

每个节点有三个状态,他们会在这三个状态之间进行变换。客户端只能从主节点写数据,从节点里读数据。

选主流程

​初始是Follwer状态节点,等100-300MS没有收到LEADER节点的心跳就变候选人。候选人给大家发选票,候选人获得大多数节点的选票就变成了LEADER节点。

日志复制流程

每次改变数据先记录日志,日志未提交不能改节点的数值。然后LEADER会复制数据给其他follower节点,并等大多数节点写日志成功再提交数据。

选举超时

每个节点随机等150到300MS,如果时间到了就开始发选票,因为有的节点等的时间短,所以它会先发选票,从而当选成主节点。但是如果两个候选人获得的票一样多,它们之间就要打加时赛,这个时候又会重新随机等150到300MS,然后发选票,直到获得最多票当选成主节点。

心跳超时

每个节点会记录主节点是谁,并且和主节点之间维持一个心跳超时时间,如果没有收到主节点回复,从节点就要重新选举候选人节点。

集群中断

当集群之间的部分节点失去通讯时,主节点的日志不能复制给多个从节点就不能进行提交。

集群恢复

当集群恢复之后,原来的主节点发现自己不是选票最多的节点,就会变成从节点,并回滚自己的日志,最后主节点会同步日志给从节点,保持主从数据的一致性。

raft协议 java_图解分布式协议-RAFT相关推荐

  1. rtmp协议 java_基于rtmp协议的java多线程服务器

    打算设计这个半开源服务的计划已经有很长时间了,大概在两年多前吧,由于一直没有时间,所以拖到现在,最近有时间,可以开始实行这个计划了,当然,现在写的这个服务器还有很多不足的地方,无论是设计方面,还是在实 ...

  2. smartqq协议java_基于SmartQQ协议的QQ聊天机器人-3

    今天的主题是:针对[消息回复模块]的代码分析及问题记录. 1. 核心文件分析: 核心是:QQService.java.SmartQQClient.java.Application.java.需要搞清楚 ...

  3. 理解分布式一致性:Raft协议

    理解分布式一致性:Raft协议 什么是分布式一致性 Leader选举 日志复制流程 term选举周期 timeout 选举和选举timeout 选举分裂 日志复制和心跳timeout 在分布式系统中, ...

  4. raft算法_学习分布式一致性协议:自己实现一个Raft算法

    前言 MIT6.824是麻省理工学院开设的一个很棒的分布式系统公开课程,课程的Schedule在这里 ,这门课程的学习方式主要是通过教授的 lecture 讲解.Paper阅读.FAQ答疑,以及实践l ...

  5. raft协议 MySQL 切换_Raft 协议实战系列(二)—— 选主

    注:本文原创,转载请标明出处. 欢迎转发.关注微信公众号:Q的博客. 不定期发送干货,实践经验.系统总结.源码解读.技术原理. 本文目的 笔者期望通过系列文章帮助读者深入理解Raft协议并能付诸于工程 ...

  6. 架构成长之路 | 图解分布式共识算法Paxos议会协议

    作者:码途   阿里云智能-全球技术服务部 在系列的前一篇文章中,阐述了 Paxos 的单法令教会协议,也在文章的总结中提到了教会协议只是作为 Paxos 最核心的共识算法,并不具备实际的单独应用场景 ...

  7. Raft与MongoDB复制集协议比较

    在一文搞懂raft算法一文中,从raft论文出发,详细介绍了raft的工作流程以及对特殊情况的处理.但算法.协议这种偏抽象的东西,仅仅看论文还是比较难以掌握的,需要看看在工业界的具体实现.本文关注Mo ...

  8. 架构成长之路 | 图解分布式共识算法Paxos教会协议

    作者:码途   阿里云智能-全球技术服务部 分布式共识算法是保证分布式一致性的基础,本文主要以简化类比的方式阐述了Paxos算法中的单法令教会会议(The Single-decree SYNOD)的算 ...

  9. 图解分布式一致性协议 Paxos 算法【BAT 面试题宝库附详尽答案解析】

    0. 问题场景 1.Paxos 简介 Paxos is a family of protocols for solving consensus in a network of unreliable p ...

最新文章

  1. WPF使用IDataErrorInfo进行数据校验
  2. C++ int转string的几种方法比较
  3. org.springframework.amqp.AmqpConnectException java.net.ConnectException的解决办法
  4. VSCode - Beautify 插件配置
  5. C#中的WebSocket服务器
  6. tomcat启动时SecureRandom耗时
  7. hdu 3339 In Action
  8. 量子纠缠可能是真实存在
  9. xcap 发包工具 使用帮助
  10. linux网络lo是什么,Linux基礎必懂:eth0,eth1,eth2,lo是什么意思?
  11. UTF-8、BOM、feff的问题
  12. LeetCode 分割整数数组,分割为两部分的和相等
  13. matlab 矩阵位移法编程 结构力学,matlab-矩阵位移法编程-结构力学
  14. 关于批量取消微博关注
  15. ios闹钟铃声实现代码
  16. 精细化运营探索:基于响应模型场景化应用
  17. iptables使用limit控制新建连接速率
  18. 戴尔 服务器重装后蓝屏,dell inspiron 5490重新安装win10 1903专业工作站版系统后开机频繁蓝屏...
  19. RS232 RS485 串口 电平标准
  20. BI平台能做什么,有哪些功能呢?

热门文章

  1. [脚本] 一个用于BMP到EPS转换的BAT脚本实现(需要安装bmeps)
  2. 保险公司在线签名 html5,html5手写签名
  3. 修改mysql_MySQL UPDATE:修改数据(更新数据)
  4. android 文件mimetype_android文件关联之mime type
  5. 数组的 sort() 方法详解
  6. 2018-05-16树莓派如何开启UART串口
  7. SpringCloud 2020.x.x工程bootstrap引导配置不生效的解决方案
  8. Kubeadm installation
  9. App Store新规即将到来 你准备好了吗?
  10. 人民币决定页游未来——8166网页游戏行业分析