点击上方“朱小厮的博客”,选择“设为星标”

后台回复”加群“获取公众号专属群聊入口

欢迎跳转到本文的原文链接:https://honeypps.com/architect/why-is-raft-called-raft/

Raft 是用来管理复制日志(replicated log)的共识算法。(共识,即consenus,关于consistency和consensus的争论可以参考《Paxos、Raft不是一致性算法/协议?》。)Raft 跟 multi-Paxos 作用相同,效率也相当,但是它的组织结构跟 Paxos 不同,Raft 也比 Paxos 更容易理解并且更容易在工程实践中实现。为了使 Raft 协议更易懂,Raft 将一致性的关键元素分开,如 leader 选举、日志复制和安全性,并且它实施更强的一致性以减少必须考虑的状态的数量。用户研究的结果表明,Raft 比 Paxos 更容易学习。Raft 还包括一个用于变更集群成员的新机制,它使用重叠的大多数(overlapping majorities)来保证安全性。

你第一次接触Raft的时候,有没有打开字典查一下 Raft 是什么意思?会不会好奇会类似于Zookeeper、Apollo、Janus、Kafka、Hadoop之类的命名?Raft直译成中文就是“木筏”的意思。有网友起初是这样将“木筏”和“共识算法”关联起来的:

I'd been thinking that a raft is something that allows its different components to achieve buoyancy together and survive collectively. But that would apply to any consensus algorithm.

简单解释一下:木筏是一种让它的各个组成部分共同获得浮力、共同生存的东西,共识是让它的所有节点达成共识,牵强附会一下好像有那么点意思哦。比如,当初 RabbitMQ 的取名就是因为它的作者觉得它像 Rabbit 一样迅速。

真实情况是不是这样呢?

在网络上有这么一个帖子 —— Why the "Raft" name? (https://groups.google.com/forum/#!topic/raft-dev/95rZqptGpmU)

Raft算法(In Search of an Understandable Consensus Algorithm)的第一作者Diego Ongaro对此做了相关的回答:

大致意思如下:


大家都问我为什么称它为Raft,其实迄今为止,我还没有公开过相关的信息。今天,我借着这个帖子诉说一下,以后谁要问到我我就可以把这个帖子的链接甩给他~

我们想出 Raft 这个名字有以下几个原因:

  • 它不是一个缩写单词,但是当时我们也考虑了与 reliable,replicated,redundant 以及 fault-tolerant这些词的关联性。

  • 我们当时考虑了日志(logs),以及使用它们可以构建什么。

  • 我们当时还考虑了 "the island of Paxos"以及如何逃离它。(注:Leslie Lamport在Paxos的最初论文《The Part-Time Parliament》中提到了the island of Paxos问题,另一篇简化论文《Paxos Made Simple》是Leslie Lamport后来写的)

另外,在2012年9月我们想出 Raft 这个名字之前,我们在论文中使用了随机生成的名字 Cheesomi。那个时候,这个名字在我们提交的论文中出现了100多次,所以改用更短的名字实际上帮助论文缩小了不少。

我们很难想出一个好名字,所以我们在一次RAMCloud会议上把它作为一个明确的议程项目。我发现了两张照片的白板在会议期间/之后,我附上在这里(就是下面的两幅图)。

皮皮注:第一张图上,写了好多名字,分成“Not too bad”、“Pretty good”和“Love it”进行投票。Raft这个名字获得了2个 “Not too bad”,1个“Love it”;Knox这个名字获得了3.5个“Not too bad”以及0.5个“Pretty good”;Redundo获得了2个 “Not too bad”和2个“Pretty good”;Cloudsense获得了3个“Pretty good”。从图上还能看到其它的名字,比如craft、crap等。

看起来最大的竞争者是Raft、Knox(我猜是在Fort Knox)、Redundo和Cloudsense(没有线索)。我不记得我们是如何得到Raft的,因为它显然没有赢得投票,但我记得这个名字很快就流行起来了。人们似乎马上就喜欢上了它。我真他妈高兴(I'm so f**king glad...)它不叫Redundo。


总结一下,按照Diego Ongaro大佬的说法,Raft原本使用了随机生成的名字 Cheesomi,后来觉得这个名字不好,还在一个会上专门探讨了命名问题。会上想了很多个名字,还专门进行了投票,但是Raft其实并没有获选,但是由于后来莫名其妙地迅速fasion了起来就用了这个(就好像某些综艺选秀一样,冠军没火,下面几个火的不行)。

仔细看下Diego Ongaro大佬的第一张图,在raft旁边有个括号,里面写了(Reliable, Replicated, Redundant, And Fault-Tolerant),暗示着Raft其实就是 Re{liable|plicated|dundant} And Fault-Tolerant 的缩写。在Wikipedia中也有类似的说明:It is named after Reliable, Replicated, Redundant, And Fault-Tolerant.

今天的知识点,你Get了嘛?

欢迎跳转到本文的原文链接:https://honeypps.com/architect/why-is-raft-called-raft/

想知道更多?描下面的二维码关注我

后台回复”加群“获取公众号专属群聊入口

【精彩推荐】

  • 咱们从头到尾说一次Java垃圾回收

  • Netty、Kafka中的零拷贝技术到底有多牛?

  • go为什么这么快?

  • 面试前,我们要复习多少Redis知识?

  • 《深入理解Java虚拟机》第2版挖的坑终于在第3版中被R大填平了

  • Redis性能问题分析

  • 浅谈CAP和Paxos共识算法

  • 聊一聊Java中的文件锁

  • Kafka为什么这么快?

  • Paxos、Raft不是一致性算法嘛?

  • 聊聊Java的几把JVM级锁

  • 越说越迷糊的CAP

  • 大公司为什么都有API网关?没你想的这么简单!

>>> 字节跳动社招内推入口 <<<

>>> 字节跳动校招内推入口 <<<

朕已阅 

Raft当初为什么会被命名为Raft?相关推荐

  1. Raft系列文章之一: 什么是Raft?

    简单的说,Raft是一种易于理解的一致性算法,其功能相当于Paxos.目前很多提供一致性服务的系统都采用Paxos, 例如Chubby, ZooKeeper, 那么为何还需要Raft?自Lamport ...

  2. raft协议 java_图解分布式协议-RAFT

    RAFT是一个通俗易懂,更容易落地的分布式协议.分布式协议一般都比较难懂,但是看了几个协议之后发现画PPT是理解一个协议比较好的办法,如果喜欢欢迎转发,后续会补充其他协议的PPT. 节点的状态 每个节 ...

  3. raft java库_结合consul raft库理解raft

    一 入口 github.com/hashicorp/consul/agent/consul/server.go func (s *Server) setupRaft() error { 状态机,用于c ...

  4. Java agent初探

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"加群"获取公众号专属群聊入口 来源:阿里巴巴中间件 在本篇文章中,我会通过几个简单的程 ...

  5. 当我们在谈论内存时,我们在谈论什么

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"加群"获取公众号专属群聊入口 来源:阿里巴巴中间件 内存,是程序员绕不过的一道坎.写过 ...

  6. 蚂蚁金服生产级 Raft 算法库存储模块剖析 | SOFAJRaft 实现原理

    前言 SOFAJRaft 是一个基于 Raft 一致性算法的生产级高性能 Java 实现,支持 MULTI-RAFT-GROUP,适用于高负载低延迟的场景. SOFAJRaft 存储模块分为: Log ...

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

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

  8. 浅谈大数据中的 2PC、3PC、Paxos、Raft、ZAB

    一致性 简述 一致性,是指对每个节点一个数据的更新,整个集群都知道更新,并且是一致的.假设一个具有N个节点的分布式系统,当其满足以下条件时,我们说这个系统满足一致性: 全认同: 所有N个节点都认同一个 ...

  9. 一文搞懂Raft算法

    英文解析: 1 follower : 信徒 2 candidate :候选人 3 majority :多数 4 term :术语 5 election :选举 6 leader :领导 7 repli ...

最新文章

  1. 利用 CoreGraphics 绘制折线图
  2. 计算机科学千分之一高校,69所计算机科学进入ESI世界前1%的高校及排名,西电全国第四!...
  3. 《大话数据结构》第9章 排序 9.8 归并排序(下)
  4. Php基础正则表达式篇
  5. 3-08. 栈模拟队列(25)(ZJU_PAT 模拟)
  6. django简单实现文件上传
  7. c#endread怎么打印出来_C#编程直接发送打印机命令到打印机及ZPL常用的打印命令详解...
  8. 影响PoE交换机不稳定的因素
  9. 关注物业公司信息化建设
  10. html实现让电脑断网的功能,简单几步,即可实现电脑自动断网
  11. android qq 目录,手机qq存储路径在哪可以找到
  12. Linux debian利用ifconfig查看IP地址
  13. 白岩松人生哲学-听后感
  14. Python - 内置函数详解(截至v3.6.x)
  15. [转载]实时 Java,第 5 部分: 编写和部署实时 Java 应用程序
  16. Centos7安装JDK【FinalShell终端本地文件上传失败解决办法】
  17. python吃显卡还是内存不足_解决Pytorch 训练与测试时爆显存(out of memory)的问题
  18. Safari 手机浏览器无法下载的问题
  19. js 前端常用时间操作:时间戳、当前时间
  20. 关于 JS 中,实现在异步代码执行完毕再执行后续代码

热门文章

  1. Semaphore应用及原理
  2. 大归因+小归因,先崛网络帮你还原SEM的真实价值
  3. 介绍几款开源好用的产品
  4. java基础——枚举
  5. 使用subgit进行svn迁移至git(branch,tags)
  6. mysql innodb 数据恢复
  7. ASP.NET“.NET研究”下用URLRewriter重写二级域名
  8. IBOOKS导入EPUB出现-23错误时解决方法
  9. 2021牛客多校7 - xay loves monotonicity(线段树区间合并)
  10. 中石油训练赛 - Get Strong(dfs双向搜索+二分)