raft加速日志回退算法以及理解的基础_一些举例
创始人
2024-02-12 05:37:21
0

算法思想

加速日志回溯优化:

  • 如果一个追随者在其日志中没有prevLogIndex,它应该返回conflictIndex = len(log)和conflictTerm = None。
  • 如果一个追随者prevLogIndex在它的日志中确实有,但是term不匹配,它应该返回conflictTerm = log[prevLogIndex].Term,然后在它的日志中搜索第一个条目具有term等于 conflictTerm 的索引。
  • 收到冲突响应后,领导者应首先在其日志中搜索conflictTerm。如果它在其日志中找到具有该term的条目,则应将其nextIndex设置为超出其日志中该term中最后一个条目的索引的条目。
  • 如果它没有找到包含该term的条目,它应该设置nextIndex = conflictIndex.

一个折衷的解决方案是只使用conflictIndex(并忽略 conflictTerm),这简化了实现,但领导者有时最终会向跟随者发送比更新它们所必需的更多的日志条目。

理解的基础

理解上面的核心是要知道: raft机制保证了同位置同任期的内容一定是一样的.

例子

S1:3455
S2:3567
先发7过去,然后经过上面过程,发67过去,发现4,5还是不匹配,再发567过去,然后发现3匹配了,然后就可以直接覆盖了,因为之前3在同样的位置,都是raft机制保证了同位置同任期的内容一定是一样的,单独的leader保证了单独的任期里面发送给单独的位置一定是相同的内容。(这一点很重要)

S1: 4444
S2: 4455
所以确实返回5的下标,然后去覆盖

S1:33
S2:34555
先跳转到3的位置,把555发过去,然后发现冲突任期是3,S2就把4555发过去

相关内容

热门资讯

保存时出现了1个错误,导致这篇... 当保存文章时出现错误时,可以通过以下步骤解决问题:查看错误信息:查看错误提示信息可以帮助我们了解具体...
汇川伺服电机位置控制模式参数配... 1. 基本控制参数设置 1)设置位置控制模式   2)绝对值位置线性模...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
表格中数据未显示 当表格中的数据未显示时,可能是由于以下几个原因导致的:HTML代码问题:检查表格的HTML代码是否正...
本地主机上的图像未显示 问题描述:在本地主机上显示图像时,图像未能正常显示。解决方法:以下是一些可能的解决方法,具体取决于问...
表格列调整大小出现问题 问题描述:表格列调整大小出现问题,无法正常调整列宽。解决方法:检查表格的布局方式是否正确。确保表格使...
不一致的条件格式 要解决不一致的条件格式问题,可以按照以下步骤进行:确定条件格式的规则:首先,需要明确条件格式的规则是...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...