原文链接:https://segmentfault.com/a/1190000038171007

一、客户端如何找到Leader

Raft算法规定客户端将所有请求发送给Leader。客户端启动的时候,如何知道哪一个节点是Leader呢?具体办法是客户端随机挑选一个服务器进行通信,如果客户端选的服务器不是领导人,那么被挑选的服务器会拒绝客户端的请求,并且提供它最近接收到的领导人的信息,即通过收到Leader发送的心跳的RPC得到Leader的网络地址。

还有一种情况,如果领导人已经崩溃了,那么客户端的请求就会超时,客户端之后会再次重试随机挑选服务器的过程。

二、如何确保命令只执行1次

Raft算法是可能多次执行同一条命令的,官方也举了一个例子:

如果领导人在提交了这条日志之后,但是在响应客户端之前崩溃了,那么客户端会和新的领导人重试这条指令,导致这条命令就被再次执行了,因为日志已经提交,只是这个响应没有被发送到客户端。

解决方案

客户端对于每一条指令都赋予一个唯一的序列号,状态机跟踪每条指令最新的序列号和相应的响应。如果接收到一条指令,它的序列号已经被执行了,那么就立即返回结果,而不重新执行指令。

即由状态机来保证不重复执行,因为这不是Raft算法中的内容,而是如何保证幂等性了,行业内也有很多方案,大概原理都是为请求生成唯一ID,然后服务端判重&#

关于Raft的一些问题解答相关推荐

  1. 如歌芳华,编剧柯伊玟获奖后畅谈从影历程

    从作家到编剧,再到演员,是什么促使年轻的她实现了文学艺术事业的"三栖"融合? 从2014到2018短短四年,一名"新人"凭什么赢得全球华人影响力文化艺术年度盛典 ...

  2. MIT 6.824 Lab2A (raft) -- Leader Election

    文章目录 实验要求 Leader Election流程 及详细实现介绍 基本角色 关键超时变量 关键的两个RPC实现 RequestVote RPC AppendEntries RPC Go并发编程实 ...

  3. 从paxos到raft zab,为何raft能够“独领风骚”

    文章目录 RAFT出现的缘由 RAFT 的实现 STATE MACHINE Log Replicated State Machine Leader Election 基本角色 关键变量 基本选举过程 ...

  4. 分布式一致性(共识)算法(Paxos,raft,ZAB)的一些总结

    文章目录 前言 CAP理论 C consistency 一致性 A availability 可用性 P partition tolerance 分区容错性 一致性模型 弱一致性 强一致性 强一致性算 ...

  5. btf-raft共识算法_了解Raft共识算法:学术文章摘要

    btf-raft共识算法 by Shubheksha 通过Shubheksha 了解Raft共识算法:学术文章摘要 (Understanding the Raft consensus algorith ...

  6. 超详细解析 | 一致性协议算法-2PC、3PC、Paxos、Raft、ZAB、NWR

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 来源:r6d.cn/VMW9 背景 在常见的分布式系统中, ...

  7. Paxos、Raft不是一致性算法/协议?

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作为互联网中的一员,我们时常沉浸在"分布式"的 ...

  8. 图解:什么是Raft算法?

    导读 在之前的文章<基于SpringCloud的微服务架构演变史?>中我们介绍了分布式注册中心Consul集群中使用了Raft这种分布式一致性算法,那么在这一篇的内容中就给大家详细介绍下什 ...

  9. 分布式一致性算法Raft

    导语 | 对于很多工程人员来说,Paxos算法不容易理解和落地实现.因此斯坦福学者提出了一个更易理解和实现的共识算法Raft.本文主要介绍Raft的基本原理.算法流程以及和Paxos的区别. 一.Ra ...

最新文章

  1. c++.net 托管类封装非托管类
  2. java检测安卓程序退出_java-我的Android应用程序的gameLoop线程在退出...
  3. 《现代操作系统》第1章读书笔记-- 引论(未完成)
  4. android+ebook控件,Android 自定义控件 eBook 翻书效果
  5. 编程之美之控制cpu线
  6. shopex证书无法安装解决方法探讨
  7. radiobutton怎么变成竖排_衣服如此凌乱?怎么能忍受的了?衣柜收纳,试试这些神器吧...
  8. 转载 Android入门学习_代码常用布局
  9. Netty工作笔记0068---Protobuf机制简述
  10. Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix
  11. 机器学习入门——图解集成学习(附代码)
  12. 孙鑫VC学习笔记:第十四讲 (一) 网络的基本概念
  13. C语言打印结构体的值,怎么才能把结构体里面的二维数组打印出来?
  14. 合并两个有序链表-python
  15. 微信小程序SEO优化策略
  16. 资源池、虚拟机、集群的关系
  17. class uesrfun.php,帝国cms教程:在列表页面批量添加Tags的方法
  18. 用文件流下载文件( Blob)时各种类型文件的 type 整理
  19. 安卓打包:jks Invalid keystore format 报错解决
  20. 大聪明教你学Java | EasyExcel - 用更简单的方式操作Excel

热门文章

  1. 知识表示学习(KG Embedding)—— TransX系列
  2. Mob 秒验 实测评
  3. iphone健康数据统计_如何控制哪些应用程序可以访问iPhone的健康数据
  4. 蝴蝶效应、青蛙现象、鳄鱼法则、鲇鱼效应、羊群效应、刺猬法则、手表定律、破窗理论、二八定律、木桶理论、马太效应
  5. 如何快速将一张彩色图片变成黑白图片
  6. 美团-外卖骑手背后的AI技术
  7. 基于头条新闻数据的文本分类系统实战
  8. 骑士cms任意代码执行(CVE-2020-35339)
  9. 计时函数clock()与数据类型clock_t
  10. R语言逻辑回归的预测概率怎么算