raft算法的实现概述

节点的启动和加入:
1. 第一个节点启动,发现没有其他的member节点,则自己变成master
2. 第二个节点启动并加入第一个节点,发现有member节点,并且master节点已经存在了,那么自己就变成follower节点
3. 第三个...
4. 第四个... 节点的选举:
每一个节点都维护一个自己的随机时间计时器,当计时器完成一个周期的时候仍没有收到master节点的ping操作,则自己变成candidate,然后向其他的member发起投票选举的请求(带上当前的轮次),得到其他节点的回复的数量超过一半的时候则变成master节点,然后向member发ping操作 follower:
每一轮,follower只有一次投票的权利 轮次:
递增 http://www.jdon.com/artichect/raft.html

raft扩展算法

为什么要修改raft算法

1. member数量有限的。member数量越多,选举就会越慢,同时master数据转发数据的速度就会越慢,而且越来越慢

修改思路

1. 通过快速传播算法(gossip),让数据达到最终一致
2. 每一个follower都可以写入数据,然后gossip给其他的member
3. 每一个follower在向其他的member gossip数据之前先向master请求一个时间戳作为本次事件的version,而且先把本次事件发送给master 在发送给其他member
4. 每一个member维护一个定时器,定时随机的向member(包括master)验证自己的version是否是最新的,如果是则不修改,如果不是,则向该member请求最新的事件。请求为异步操作,只请求,不用考虑回应。
5. 每一个follower都维护一张member路由表信息,规定路由表为递增序列,表中第一条数据为master节点
6. 当follower发现在向master发出请求一个时间戳请求时,请求失败,则把本次事件放到本地事件循环系统当中,在一段时间内仍未成功,则积压本次事件并报警
8. master功能:全局时间戳,随机指定Verifier(网络,系统性能等比较良好的),如果发现Verifier数量减少,就从新选举一个新的
9. Verifier:随机随时检查member,发现失败者,则标记失败,传播到网络中。Verifier定时向master进行检测,
10. 节点启动的时候,检查master是否存在,检查Verifier数量是否足够,如果是,则自己的身份就是follower
11. master定时检查网络情况,发现有良好的主机,则考虑替换现有的Verifier主机
12. Verifier定时检查master,发现死掉了,则向其他的Verifier节点发出exchange(follower,master)的请求,其他的Verifier得到请求后先检验master,发现master死掉了,则同意请求,同时执行请求事件。如果发现master还活着,则diff_version(req_Verifier,loc_Verifier),小于0则执行请求事件,否则舍弃请求
13. 节点在获取数据为空时,同时随机请求其他节点,查看数据是否完毕

gossip版本raft算法实现的更多相关文章

  1. 学习Raft算法的笔记

    Raft是一种为了管理日志复制的一致性算法.它提供了和Paxos算法相同的功能和性能,但是它的算法结构和Paxos不同,使得Raft算法更加容易理解并且更容易构建实际的系统.为了提升可理解性,Raft ...

  2. 搞懂分布式技术2:分布式一致性协议与Paxos,Raft算法

    搞懂分布式技术2:分布式一致性协议与Paxos,Raft算法 2PC 由于BASE理论需要在一致性和可用性方面做出权衡,因此涌现了很多关于一致性的算法和协议.其中比较著名的有二阶提交协议(2 Phas ...

  3. 分布式一致性算法:Raft 算法(论文翻译)

    Raft 算法是可以用来替代 Paxos 算法的分布式一致性算法,而且 raft 算法比 Paxos 算法更易懂且更容易实现.本文对 raft 论文进行翻译,希望能有助于读者更方便地理解 raft 的 ...

  4. Raft算法,从学习到忘记

    Raft算法,从学习到忘记 --Raft算法阅读笔记. --Github 概述 说到分布式一致性算法,可能大多数人的第一反应是paxos算法.但是paxos算法一直以来都被认为是难以理解,难以实现.S ...

  5. 关于raft算法

    列出一些比较好的学习资料, 可以经常翻一番,加深印象 0 raft官方git 1  raft算法动画演示 2    Raft 为什么是更易理解的分布式一致性算法 3  raft一致性算法 4  Raf ...

  6. 从分布式一致性到共识机制(二)Raft算法

    春秋五霸说开 春秋五霸,是指东周春秋时期相继称霸主的五个诸侯,“霸”,意为霸主,即是诸侯之领袖.典型的比如齐桓公,晋文公,春秋时期诸侯国的称霸,与今天要讨论的Raft算法很像. 一.更加直观的Raft ...

  7. 一文搞懂Raft算法

      raft是工程上使用较为广泛的强一致性.去中心化.高可用的分布式协议.在这里强调了是在工程上,因为在学术理论界,最耀眼的还是大名鼎鼎的Paxos.但Paxos是:少数真正理解的人觉得简单,尚未理解 ...

  8. 手绘raft算法

    手绘raft算法 互联网技术窝 2019-04-07 12:06:05 在现实的分布式系统中,不能可能保证集群中的每一台机器都是100%可用可靠的,集群中的任何机器都可能发生宕机.网络连接等问题导致集 ...

  9. 【转】分布式一致性算法:Raft 算法(Raft 论文翻译)

    编者按:这篇文章来自简书的一个位博主Jeffbond,读了好几遍,翻译的质量比较高,原文链接:分布式一致性算法:Raft 算法(Raft 论文翻译),版权一切归原译者. 同时,第6部分的集群成员变更读 ...

随机推荐

  1. Reading Notes : 180213 计算机的硬件构成与处理流程

    读书<计算机组成原理>,<鸟哥的Linux私房菜基础篇> 基本上接触过计算机的人,都多少知道计算机的具体构成,但是真正能讲明白的却说了很多,本节将讲解一下计算机的基本硬件构成和 ...

  2. LeetCode 中级 -二叉树的层次遍历(102)

    题目描述: 给定一个二叉树,返回其按层次遍历的节点值. (即逐层地,从左到右访问所有节点). 例如:给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 ...

  3. 2018 kali linux install tools

    1.VM setup https://www.vmware.com/products/workstation-pro/workstation-pro-evaluation.html VMware-Wo ...

  4. js中定时器使用方法经验总结

    前言,最近在做一个音频播放项目的时候,碰到播放时间精度的问题,捣鼓了几天,最终巧妙的运用定时器去降低了错误发生频率 正题,下面是对定时器的使用总结,如有错误之处,请读者加以纠正. 延迟执行(1次) s ...

  5. npm install路径

    我们在webpack项目中使用npm install命令安装很多模块 但是很多时候都不知道这些模块安装在哪里,想要删除的时候找不到,所有想要明确的知道npm的安装路径 首先,npm install 安 ...

  6. vue 图片压缩 基于cli3 配置

    chainWebpack: config => { const imagesRule = config.module.rule('images') imagesRule .use('image- ...

  7. HDFS原理

    1 . NameNode 概述 a. NameNode 是 HDFS 的核心. b. NameNode 也称为 Master. c. NameNode 仅存储 HDFS 的元数据:文件系统中所有文件的 ...

  8. 大数据技术原理与应用——大数据处理架构Hadoop

    Hadoop简介 Hadoop是Apache软件基金会旗下的一个开源分布式计算平台,为用户提供了系统底层细节透明的分布式基础架构. Hadoop是基于Java语言开发的,具有很好的跨平台特性,并且可以 ...

  9. 2.1 摄像头V4L2驱动框架分析

    学习目标:学习V4L2(V4L2:vidio for linux version 2)摄像头驱动框架,分析vivi.c(虚拟视频硬件相关)驱动源码程序,总结V4L2硬件相关的驱动的步骤:  一.V4L ...

  10. python爬虫#数据存储#JSON/CSV/MYSQL/MongoDB/

    Json数据处理 JSON支持数据格式: 对象(字典).使用花括号. 数组(列表).使用方括号. 整形.浮点型.布尔类型还有null类型. 字符串类型(字符串必须要用双引号,不能用单引号). 多个数据 ...