Raft论文翻译(5.4.2)——安全性-提交之前term的日志entry

news2024/11/24 21:06:18

5.4.2 Committing entries from previous terms

提交之前term的日志entry

As described in Section 5.3, a leader knows that an entry from its current term is committed once that entry is stored on a majority of the servers. If a leader crashes before committing an entry, future leaders will attempt to finish replicating the entry. However, a leader cannot immediately conclude that an entry from a previous term is committed once it is stored on a majority of servers. Figure 8 illustrates a situation where an old log entry is stored on a majority of servers, yet can still be overwritten by a future leader.

如 5.3 所述, 一旦当前任期内的某个日志条目已经存储到过半的服务器节点上,leader 就知道该日志条目已经被提交了。???

如果 leader 在提交一个 entry 之前 crash 了,新的 leader 将尝试 完成这个 entry 的复制;

然而, 如果是之前任期内的某个日志条目已经存储到过半的服务器节点上,leader 也无法立即断定该日志条目已经被提交了。图 8 展示了一种情况,一个已经被存储到过半节点上的老日志条目,仍然有可能会被未来的 leader 覆盖掉。

To eliminate problems like the one in Figure 8, Raft never commits log entries from previous terms by counting replicas. Only log entries from the leader’s current term are committed by counting replicas;

once an entry from the current term has been committed in this way, then all prior entries are committed indirectly because of the Log Matching Property. There are some situations where a leader could safely conclude that an older log entry is committed (for example, if that entry is stored on every server), but Raft takes a more conservative approach for simplicity.

为了排除 图 8 的问题,Raft 从不通过计算副本来提交之前任期的日志条目,只有 leader 当前任期内的日志条目才通过计算副本数目的方式来提交;

一旦当前 term 的某个日志条目以这种方式被提交,那么由于日志匹配特性,之前的所有日志条目也都会被间接地提交。在某些情况下,领导人可以安全地断定一个老的日志条目已经被提交(例如,如果该条目已经存储到所有服务器上),但是 Raft 为了简化问题使用了一种更加保守的方法。

Figure 8: A time sequence showing why a leader cannot determine commitment using log entries from older terms.

In (a) S1 is leader and partially replicates the log entry at index 2.

(a)S1 是 leader 并且部分复制了 log 到 index2

In (b) S1 crashes; S5 is elected leader for term 3 with votes from S3, S4, and itself, and accepts a different entry at log index 2.

(b)S1 crash;S5 被选为term3 的 leader(s3,s4,和 S5 自己的投票);并且接受了不同搞的 entry 在 index2 的位置;  
In (c) S5 crashes; S1 restarts, is elected leader, and continues replication. At this point, the log entry from term 2 has been replicated on a majority of the servers, but it is not committed.

(c)s5 crash,s1 重启,被选为 leader,并且继续复制。此时, term 2的 log entry 已经被复制到了大多数 server 上,但是还没有提交 

If S1 crashes as in (d), S5 could be elected leader (with votes from S2, S3, and S4) and overwrite the entry with its own entry from term 3.

(d)S1 crash ,S5 可以被选为 leader(S2,S3,S4 投票)并且使用 term3 的数据覆盖了 entry 

However, if S1 replicates an entry from its current term on a majority of the servers before crashing, as in (e), then this entry is committed (S5 cannot win an election). At this point all preceding entries in the log are committed as well. 

(e)然而,如果 S1 crash 前复制一个 entry (在大多数 server 上)从当前 term。然后 entry 被提交(S5 就不可能选举成功)。在这种情况下,之前的所有日志('2')也被提交了。

(图8主要是说明实际情况,d或者e都有可能产生,所以“leader 也无法立即断定该日志条目已经被提交了”)

Raft incurs this extra complexity in the commitment rules because log entries retain their original term numbers when a leader replicates entries from previous terms. In other consensus algorithms, if a new leader rereplicates entries from prior “terms,” it must do so with its new “term number.” Raft’s approach makes it easier to reason about log entries, since they maintain the same term number over time and across logs. In addition, new leaders in Raft send fewer log entries from previous terms than in other algorithms (other algorithms must send redundant log entries to renumber them before they can be committed).

Raft 会在提交规则上增加额外的复杂性是因为当 leader 复制之前任期内的日志条目时,这些日志条目都保留原来的任期号。在其他的一致性算法中,如果一个新的 leader 要重新复制之前的任期里的日志时,它必须使用当前新的任期号。Raft 的做法使得更加容易推导出(reason about)日志条目,因为他们自始至终都使用同一个任期号。另外,和其他的算法相比,Raft 中的新 leader 只需要发送更少的日志条目(其他算法中必须在它们被提交之前发送更多的冗余日志条目来给它们重新编号)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/126444.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

linux 分析启动时服务时间消耗

工具systemd-analyze systemd-analyze是一个分析启动性能的工具,用于分析启动时服务时间消耗。 1 systemd-analyze使用 1.1 查看启动耗时 rootloongson-pc:/# systemd-analyze 1.2 查看每个服务的启动耗时 rootloongson-pc:/# systemd-analyze blame 1.3 显…

Docker安装配置运行Redis

本文前提是基于已安装Docker容器引擎。Ubuntu安装docker容器引擎_流沙QS的博客-CSDN博客 1.拉取redis镜像 sudo docker pull redis 2.创建文件挂载目录并进入到创建目录,下载官方的redis.conf配置文件 mkdir -p /home/geng/soft/redis wget http://download.re…

如何在每次辩论中都取得胜利,捍卫自己的权力-----苏格拉底产婆术

文章目录苏格拉底的产婆术四步法是:产婆术(art of midwifery)苏格拉底:认识你自己🌸I could be bounded in a nutshell and count myself a king of infinite space. 特别鸣谢:木芯工作室 、Ivan from Rus…

2022年度《中国数字安全能力图谱(精选版)》发布,中睿天下实力入选

近日,国内数字安全领域中立的第三方调研机构数世咨询正式发布《2022年度中国数字安全能力图谱(精选版)》(以下简称能力图谱),中睿天下凭借领先的技术创新实力,成功入选上榜高级威胁防御能力者及…

照片如何加滤镜?一步一步教会你给图片加上滤镜

我们在外出游玩的时候,常常会拍摄一些好看的风景照或者是美食照,有时我们还会将这些不错的照片分享在社交平台上,相信这个时候你们在分享照片之前,都会先给照片添加滤镜,因为一个好的滤镜,不仅能够美化照片…

7的2022年终总结

7&的2022年终总结 文章目录7&的2022年终总结1、前言2、技术3、生活4、展望未来1、前言 2022年,终究是不平凡的一年。 2022年2月4日,中国农历大年初四,这一天,北京冬奥会将拉开大幕。 2022年3月份,疫情还未结束…

Linux小白入门经验

雄关漫道真如铁,而今迈步从头越。我们在单位工作的人都有一个梦想,那就是搞定所有的计算机难题,帮助公司完成更多的电脑维修、软件开发以及系统监测。随着互联网的深入发展,我们都在很努力的学习各种程序和系统,希望能…

20个python编码小技巧-推导式、翻转、排序、迭代器等等

本文分享一些 Python 技巧,它可以让你的代码更简洁、更高效。 1.列表推导式 li [x for x in range(10) if x % 2 0] print(li) # [0, 2, 4, 6, 8]li [i*2 if i%20 else i*3 for i in range(10)] print(li) # [0, 3, 4, 9, 8, 15, 12, 21, 16, 27]# 应用&#xf…

flutter 并不完美的登录完美验证功能

flutter 并不完美的登录完美验证功能前言一、文本输入功能二、验证提示功能三、业务部分总结前言 在一个APP 中,登录页面做为门户,很多时候,我们都需要写一个完善的登录验证页面,本篇文章将记录如何去封装一个并不算完美的登录验…

BurpSuite抓取App包,详细教程

BurpSuite抓取App包,详细教程1.工具准备2.手动代理模拟器3.修改BurpSuite代理4.测试最近有很多粉丝小伙伴反映自己不会使用BurpSuite抓取手机App的流量包,其实很简单,和Web基本是如出一辙的 1.工具准备 夜神模拟器 BurpSuite请自行准备环境…

CISP-DSG证书有效期多久?是否需要续证?

CISP-DSG证书有效期为3年。有效期结束后需向中国信息安全测评中心授权机构进行续证维持,并缴纳证书维持费。如超期半年以上需多交一年年金,以此累计。建议大家在证书到期前三个月提交材料进行续证。那么CISP-DSG续证流程是什么呢?以下是小编整…

Android 教程

Android 是一个开源的,基于 Linux 的移动设备操作系统,主要使用于移动设备,如智能手机和平板电脑。Android 是由谷歌及其他公司带领的开放手机联盟开发的。 本教程将教会你基本的 Android 编程,以及学习一些 Android 应用程序开发…

【Python】sklearn之AP聚类AffinityPropagation

文章目录基本原理sklearn中的实现基本原理 AffinityPropagation按照字面意思就是亲和力传播,可见这个算法的关键就是亲和力与传播。 说到传播,无外乎两件事,第一件事,传的是什么,暂且先不用管,因为名字里…

WORD: 如何在一个word里文档里创建多个目录?

如何在一个word里文档里创建多个目录? 1 目录的创建 引用/目标/自动目录 (同时文章本身需要设置层级标题正文等) 一般不选手动目录,没试过狠麻烦吧2 如何设置2个目录呢? 直接在新的地方插入一个目录,选择…

OpenGL教程一,窗体和图形的渲染(包含OpenGL、GLFW、GLAD)

运行环境:Linux 、C 本教程仅个人学习总结第一个hello world,渲染一个窗体渲染一个矩形本教程仅个人学习总结 一切参考资源:都在官网。 1、安装glfw 首先下载glfw : 点击这里 1、下载 2、解压 3、mkdir build && cd build 4、cmake …

学习poi导出excel之XSSFWorkbook

1 基本介绍 POI提供了HSSF、XSSF以及SXSSF三种方式操作Excel。 HSSF:Excel97-2003版本,扩展名为.xls。一个sheet最大行数65536,最大列数256。 XSSF:Excel2007版本开始,扩展名为.xlsx。一个sheet最大行数1048576&…

电脑桌面主题(28)和动态视频壁纸(31)合集(收藏)

最近就是突然被身边朋友的电脑壁纸给吸引到了,在这之前的我一直遵循着 “大道至简” 的原则,一张Windows原生态静态壁纸走天下,但是作为一个00后我还是 “破戒” 了,其实我认为特别像程序员之类的有一张自己满意的桌面壁纸是非常重…

Mybatis-Plus分页与条件查询

目录 标准分页功能制作 条件查询 条件查询-null值处理 标准分页功能制作 1:设置分页拦截器作为Spring管理的bean Configuration public class MpConfig {Beanpublic MybatisPlusInterceptor mpInterceptor(){//1.定义MP拦截器MybatisPlusInterceptor mpIntercept…

Python中使用的流行数据科学库

Python中使用的流行数据科学库 数据科学是用于采购、组织、打包和以可理解的格式呈现数据的程序和方法。在不同的领域可能有不同种类的数据,这些数据可能是结构化的,也可能是非结构化的。 为什么Python在人们开始他们的编码之旅时如此受欢迎&#xff1…

删除数组中符合指定条件的元素

不符合指定条件&#xff0c;可能是指定数组array中的某一项不符合某一值的要求&#xff1b;或者是拿另一个数组arr对比&#xff0c;要求array只留下复合arr中的值或者删除掉复合arr中的值。 1.不符合某一值的要求 <!DOCTYPE html> <html lang"en"> <…