分布式系统-Consistency

➤ 分布式系统的一致性(概念):

  • 分布式系统中, 每个节点(或者副本)的数据保持一致;
  • 「数据一致性其实是数据库系统中的概念。我们可以简单的把一致性理解为正确性或者完整性,那么数据一致性通常指关联数据之间的逻辑关系是否正确和完整」

➤ 强一致性、弱一致性、最终一致性:

  • 强一致性: 当更新操作完成之后,任何多个后续进程或者线程的访问都会返回最新的更新过的值。但是这种实现对性能影响较大,因为这意味着,只要上次的操作没有处理完,就不能让用户读取数据。
  • 弱一致性: 系统并不保证进程或者线程的访问都会返回最新的更新过的值。系统在数据写入成功之后,不承诺立即可以读到最新写入的值,也不会具体的承诺多久之后可以读到。但会尽可能保证在某个时间级别(比如秒级别)之后,可以让数据达到一致性状态。
  • 最终一致性: 弱一致性的特定形式。系统保证在没有后续更新的前提下,系统最终返回上一次更新操作的值。在没有故障发生的前提下,不一致窗口的时间主要受通信延迟,系统负载和复制副本的个数影响。DNS是一个典型的最终一致性系统。
  • 最终一致性模型的变种:
    • 因果一致性:如果A进程在更新之后向B进程通知更新的完成,那么B的访问操作将会返回更新的值。如果没有因果关系的C进程将会遵循最终一致性的规则。
    • 读己所写一致性:因果一致性的特定形式。一个进程总可以读到自己更新的数据。
    • 会话一致性:读己所写一致性的特定形式。进程在访问存储系统同一个会话内,系统保证该进程读己之所写。
    • 单调读一致性:如果一个进程已经读取到一个特定值,那么该进程不会读取到该值以前的任何值。
    • 单调写一致性:系统保证对同一个进程的写操作串行化。

@ref: