什么是Raft的日志数据

日志是 Raft 的核心概念。Raft 保证日志是连续且一致的,并且最终能够被所有进程按照日志索引的顺序提交。

日志记录者节点的每一个变化,例如客户端发送5个数据过来,那么节点中就必须有5这条日志。

raft日志5


Raft日志包含内容

每个节点都有自己的本地日志,每条日志记录包含:

  • 任期term:生成该条记录的 Leader 对应的任期
  • 索引index:日志在日志表中的顺序
  • 命令command:可执行的状态机指令 一旦某条日志中的命令被状态机执行了,那么我们称这条记录为已提交committed,Raft 保证已提交的记录不会丢失。

如下图:

日志数据

仔细看上图,我们能够知道以下需要你深入记忆的知识:

  1. 每一个节点都是自己的日志文件,我们称为本地日志文件。
  2. 每条日志都有索引
  3. 每条日志由任期和命令组成,例如上面的1,2,3都是任期,代表某个Leader执政的那个任期。 x<-3,这就是命令,代表把x的值设置为3。