当前位置: 首页 > news >正文

网站建设商城 买模板长沙公司做网站

网站建设商城 买模板,长沙公司做网站,百度推广竞价技巧,wordpress 前台帖子Raft算法用于保证分布式环境下多节点数据的一致性。 原理 Raft算法的主要思想是一个 选主(leader selection) 的算法思想,集群种每个节点都有可能成为三种角色。 三种角色 leader 对客户端通信的入口,对内数据同步的发起者,一个集群通常只…

Raft算法用于保证分布式环境下多节点数据的一致性。

原理

Raft算法的主要思想是一个 选主(leader selection) 的算法思想,集群种每个节点都有可能成为三种角色。

三种角色

  • leader
    对客户端通信的入口,对内数据同步的发起者,一个集群通常只有一个leader节点。
  • follower
    非leader节点,被动接收来自leader的数据请求
  • candidate
    一种临时角色,只存在于leader选举阶段。
    某个节点想要变为leader,就要发起投票请求(vote),同时自己变为candidate。
    如果选举成功,则变为leader,否则退回为follower。

数据提交过程

分为三个阶段,分别是日志复制和多数节点确认、提交日志、应用状态机。

日志复制和多数节点确认

leader从客户端接收到写请求后,会将其封装成日志条目, 然后通过AppendEntriesRPC将日志条目并行发送给所有follower节点。

  • leader维护了每个follower的nextIndex,表示下一个要发送给改follower日志索引。
  • leader发送从nextIndex开始的日志条目给follower。
  • follower收到日志后,会检查‘
    • 前一条日志的TermIndex是否与本地日志匹配(确保连续性)
    • 如果匹配,follower将日志追加到本地日志中,并返回成功
    • 若不匹配,则返回失败,leader将nextIndex递减并重试,直到找到一致的位置

leader需等待 多数节点(包括自己) 确认已成功复制该条目,才可进行下一步提交。

日志提交(commit)

  • leader节点提交并发送给follower节点
    leader确认日志已被大多数节点复制后,会更新本地的commitIndex,leader在后续的AppendEntriesRPC(包括心跳)中,将commitIndex 发送给follower节点。
  • follower节点提交
    follower节点收到commitIndex后,会将本地日志中所有Index<=commitIndex的日志提交。

应用状态机

已提交的日志条目会被应用到状态机。

  • leader和follower会按Index顺序执行日志中的命令
  • 执行后更新lastApplied
    leader在应用状态机后,返回结果给客户端。

选举过程

candidate的诞生

初始状态下,所有节点都是follower,每个follower都有一个timer,当follower在timer结束也没有收到其它节点的vote,该follower就会变成candidate,同时向其它节点发送vote

选举规则

大致过程
  1. 每个follower每轮只有一次投给candidate的机会。
  2. follower采用先来先投票策略
  3. 超过半数的follower都认为该candidate适合做leader,那么新的leader产生
  4. leader通过心跳联系follower。若在follower的timer期间没有收到leader的心跳,则会认为leader宕机,该follower变为candidate,并开始新的一轮选举。
具体选举过程

当candidate节点向自己发送vote后,会根据条件判断是否进行投票(要保证candidate节点的日志条目要新于自己)

follower节点投票规则
  • 任期检查
    如果请求中的Term小于自身节点的Term,则认为其日志条目还没有自身新,拒绝投票。
  • 投票承诺
    每个节点每轮选举,只能投一票(先到先服务)
  • 日志新旧对比
    • Candidate的最后一条日志的Term必须>=接收者最后一条日志的Term
    • Term相同,Candidate的日志Index必须>=接收者的日志Index

各消息体

vote

  1. term,自身处于的选举周期
  2. lastLogIndex,log中最新的index值
  3. lastLogTerm,log中最近的index是在哪个term中产生的

每个节点保存的数据信息

  1. currentTerm,节点处于的term号
  2. log[ ],自身的log集合
  3. commitIndex,log中最后一个被提交的index值
http://www.dtcms.com/a/485434.html

相关文章:

  • 购物商城网站开发公司网站建设验收报告模板
  • ppt接单兼职网站广州旅游网络营销
  • 安徽茶叶商城网站建设易天时代网站建设
  • 网站建设教学设计小米手机网站架构
  • 网站建设金手指霸屏化工网站开发
  • 热烈祝贺网站上线银川网站建设推广
  • 家具网站开发ip形象设计排版
  • 交互式网站开发技术长春做网站网站
  • 福州网站设计知名乐云seo顺德购物网站建设
  • 2014年沈阳建设银行网站极验 wordpress 表单
  • 物流网站的建设论文在线制作图片的免费软件
  • 广西医疗网站建设网站广告图片设计教程
  • 建筑网站设计大全网页平台制作流程
  • 网站建设与制作企业网站维护需要关闭网站么
  • 杭州网站制作蒙特网站前台用什么做
  • 泰州网站建设制作电子商务网站建设的问题
  • 设计师 必备的网站wordpress主页添加meta
  • 佛山外贸网站建设精英济南网app
  • 淘宝有WordPress网站搭建吗品牌网站建设c股j东大蝌蚪
  • 代做网站在哪找活在长沙做网站需要多少钱
  • 网站开发配置状态报告成app短视频源码下载
  • 网站模板定制tp5网站开发逻辑架构
  • 做直播券的网站有多少接收新网站如何做诊断
  • 互动营销网站建设找别人做网站的注意事项
  • 建设局网站买卖合同东莞房产网站建设
  • 只做衬衫的网站用dw做网站的基本步骤
  • 网站建站免费网站建设前准备
  • 网站内容保护设计云网站建设
  • 手机app开发网站模板网站里面的导航图标怎么做的
  • 做网站公司排名电话网站推广的策略方法