Raft共识算法入门教程


1 分布式基础概念

    1.1  数据副本与一致性问题

    1.2  分布式系统的进化史

    1.3  全面解读CAP定理

    1.4  CAP理论为什么不能同时满足?

    1.5  BASE原则

2 全面解读Raft共识算法

    2.1  全面解读Raft共识算法

    2.2  Raft日志的作用

    2.3  Raft日志复制

    2.4  Raft共识算法是否属于二阶段提交?

    2.5  Raft算法中的三种超时时间

    2.6  Raft算法动图展示

3 实战操练Raft共识算法

BASE原则介绍

BASE原则

BASE是Basically Available(基本可用)、Soft state(软状态)和Eventually consistent(最终一致性)三个短语的简写,含义如下所示:

  • 基本可用:保证数据的可用性。任何请求都会有响应(也可能是失败)。
  • 软状态:软状态和硬状态相对,是指允许系统中的数据存在中间状态,并认为该中间状态的存在不会影响系统的整体可用性,即允许系统在不同节点的数据副本之间进行数据传输的过程存在延时。
  • 最终一致性:强调的是系统中所有的数据副本,在经过一段时间的同步后,最终能够达到一个一致的状态。因此,最终一致性的本质是需要系统保证最终数据能够达到一致,而不需要实时保证系统数据的强一致性。

BASE原则是根据CAP原则演变而来。CAP指的是在一个分布式系统中,一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)。CAP原则指的是,这三个要素最多只能同时实现两点,不可能三者兼顾。

BASE原则是对CAP中一致性和可用性的权衡的结果,其核心思想是即使无法做到强一致性,但是每个应用根据自身的业务特点,采用适当的方式来使系统达到最终一致性。

BASE原则中的 Soft State 是什么意思?

BASE中的soft state指的是什么呢?在stack over flow中有个不错的解释:

[soft state] is information (state) the user put into the system that will go away if the user doesn't maintain it. Stated another way, the information will expire unless it is refreshed.

By contrast, the position of a typical simple light-switch is "hard-state". If you flip it up, it will stay up, possibly forever. It will only change back to down when you (or some other user) explicitly comes back to manipulate it.

翻译一下就是:

[软状态]是用户放入系统的信息(状态),如果用户不维护它,这些信息(状态)就会消失。换句话说,除非信息被刷新,否则它将过期。例如电商支付过程中“支付中”状态,最终的结果只有支付成功和支付失败,不会一直存在“支付中”状态的。

相比之下,一个典型的简单灯光开关的位置是“硬状态”。如果你把它翻过来,它会一直翻下去,可能会一直翻下去。只有当你(或其他用户)显式地返回来操纵它时,它才会变回down。

参考:https://stackoverflow.com/questions/4851242/what-does-soft-state-in-base-mean

综上所述,我们可以明白,软状态指的是允许系统中的数据存在中间状态,并认为该中间状态不会影响系统的整体可用性。例如在电商支付过程中,给数据加上一个“支付中”状态。它最终要么是支付完成,要么是支付失败。支付中的状态存留的时间取决下游支付系统完成这笔支付的时间。