关于Raft的一些问题解答
原文链接:https://segmentfault.com/a/1190000038171007
一、客户端如何找到Leader
Raft算法规定客户端将所有请求发送给Leader。客户端启动的时候,如何知道哪一个节点是Leader呢?具体办法是客户端随机挑选一个服务器进行通信,如果客户端选的服务器不是领导人,那么被挑选的服务器会拒绝客户端的请求,并且提供它最近接收到的领导人的信息,即通过收到Leader发送的心跳的RPC得到Leader的网络地址。
还有一种情况,如果领导人已经崩溃了,那么客户端的请求就会超时,客户端之后会再次重试随机挑选服务器的过程。
二、如何确保命令只执行1次
Raft算法是可能多次执行同一条命令的,官方也举了一个例子:
如果领导人在提交了这条日志之后,但是在响应客户端之前崩溃了,那么客户端会和新的领导人重试这条指令,导致这条命令就被再次执行了,因为日志已经提交,只是这个响应没有被发送到客户端。
解决方案
客户端对于每一条指令都赋予一个唯一的序列号,状态机跟踪每条指令最新的序列号和相应的响应。如果接收到一条指令,它的序列号已经被执行了,那么就立即返回结果,而不重新执行指令。
即由状态机来保证不重复执行,因为这不是Raft算法中的内容,而是如何保证幂等性了,行业内也有很多方案,大概原理都是为请求生成唯一ID,然后服务端判重&#
关于Raft的一些问题解答相关推荐
- 如歌芳华,编剧柯伊玟获奖后畅谈从影历程
从作家到编剧,再到演员,是什么促使年轻的她实现了文学艺术事业的"三栖"融合? 从2014到2018短短四年,一名"新人"凭什么赢得全球华人影响力文化艺术年度盛典 ...
- MIT 6.824 Lab2A (raft) -- Leader Election
文章目录 实验要求 Leader Election流程 及详细实现介绍 基本角色 关键超时变量 关键的两个RPC实现 RequestVote RPC AppendEntries RPC Go并发编程实 ...
- 从paxos到raft zab,为何raft能够“独领风骚”
文章目录 RAFT出现的缘由 RAFT 的实现 STATE MACHINE Log Replicated State Machine Leader Election 基本角色 关键变量 基本选举过程 ...
- 分布式一致性(共识)算法(Paxos,raft,ZAB)的一些总结
文章目录 前言 CAP理论 C consistency 一致性 A availability 可用性 P partition tolerance 分区容错性 一致性模型 弱一致性 强一致性 强一致性算 ...
- btf-raft共识算法_了解Raft共识算法:学术文章摘要
btf-raft共识算法 by Shubheksha 通过Shubheksha 了解Raft共识算法:学术文章摘要 (Understanding the Raft consensus algorith ...
- 超详细解析 | 一致性协议算法-2PC、3PC、Paxos、Raft、ZAB、NWR
点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 来源:r6d.cn/VMW9 背景 在常见的分布式系统中, ...
- Paxos、Raft不是一致性算法/协议?
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作为互联网中的一员,我们时常沉浸在"分布式"的 ...
- 图解:什么是Raft算法?
导读 在之前的文章<基于SpringCloud的微服务架构演变史?>中我们介绍了分布式注册中心Consul集群中使用了Raft这种分布式一致性算法,那么在这一篇的内容中就给大家详细介绍下什 ...
- 分布式一致性算法Raft
导语 | 对于很多工程人员来说,Paxos算法不容易理解和落地实现.因此斯坦福学者提出了一个更易理解和实现的共识算法Raft.本文主要介绍Raft的基本原理.算法流程以及和Paxos的区别. 一.Ra ...
最新文章
- c++.net 托管类封装非托管类
- java检测安卓程序退出_java-我的Android应用程序的gameLoop线程在退出...
- 《现代操作系统》第1章读书笔记-- 引论(未完成)
- android+ebook控件,Android 自定义控件 eBook 翻书效果
- 编程之美之控制cpu线
- shopex证书无法安装解决方法探讨
- radiobutton怎么变成竖排_衣服如此凌乱?怎么能忍受的了?衣柜收纳,试试这些神器吧...
- 转载 Android入门学习_代码常用布局
- Netty工作笔记0068---Protobuf机制简述
- Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix
- 机器学习入门——图解集成学习(附代码)
- 孙鑫VC学习笔记:第十四讲 (一) 网络的基本概念
- C语言打印结构体的值,怎么才能把结构体里面的二维数组打印出来?
- 合并两个有序链表-python
- 微信小程序SEO优化策略
- 资源池、虚拟机、集群的关系
- class uesrfun.php,帝国cms教程:在列表页面批量添加Tags的方法
- 用文件流下载文件( Blob)时各种类型文件的 type 整理
- 安卓打包:jks Invalid keystore format 报错解决
- 大聪明教你学Java | EasyExcel - 用更简单的方式操作Excel