zoukankan      html  css  js  c++  java
  • 基础理论~raft协议的个人理解

    raft协议
    一 什么是一致性
    所有节点都从同一个state出发,都经过同样的一些操作序列(log),最后到达同样的state。
    二 状态
    1 Leader Leader副本接受client的更新请求,本地处理后再同步至多个其他副本;
    2 Follower 请求的被动更新者,从Leader接受更新请求,然后写入本地日志文件
    3 Candidate 如果Follower副本在一段时间内没有收到Leader副本的心跳,则判断Leader可能已经故障,此时启动选主过程,此时副本会变成Candidate状态,直到选主结束。
    三 日志应用
    1 leader 接受 client请求,追加日志到本地日志文件
    2 然后给其它的server发AppendEntriesRPC请求,发送日志
    3 当Leader确定一个log entry被safely replicated(绝大多数成员)
    4 apply这条log entry到状态机中然后返回结果给客户端
    四 选举
    1 follower转变成Candidate角色
    2 发送给其他follower进行投票选举
    3 投票有三种结果
    1 自己为主 candiate->leader
    2 别人为主 candiate->follower
    3 没有结果 投票超时,继续进行选举
    五 一些疑问
    1 raft协议建议奇数点的目的是避免出现平票现象, 计算方式为 N/2+1 存活节点
    2 raft协议把并发能力变差了,因为只有一份log完全被复制到大多数节点后才会处于commit状态,进行下一份log的写入
  • 相关阅读:
    python -- twisted初探
    python -- redis连接与使用
    redis使用
    python -- 异步编程
    python
    python
    福大软工 · 最终作业
    福大软工 · 第十二次作业
    Beta 冲刺(7/7)
    Beta 冲刺(6/7)
  • 原文地址:https://www.cnblogs.com/danhuangpai/p/14422832.html
Copyright © 2011-2022 走看看