文章知识点主要来源于拉钩教育《java高薪训练营》及其他知识扩展,感谢拉钩教育平台提供的优质教育资源,以及各位老师的热情指导!本文仅做学习笔记使用,如有不适,请联系本人。
一、CAP定理
一个分布式系统不可能同事满足一致性(C:Consistency),可用性(A:Avaliability),和分区容错性(P:Partition tolerance)
- 一致性:分布式系统当中的一致性是指所有节点的数据一致,或者说是所有副本的数据一致。
- 可用性:系统一直可用,而且服务一致保持正常
- 分区容错性:系统在遇到一些节点获取这网络分区故障的时候,仍然能够提供满足一致性和可用性的服务(一般不会舍弃,如果舍弃了,那么可以理解为不是分布式,只是一个单体)。
二、Base理论
BASE:以下三点的简称
- Basically Avaliable 基本可用:
分布式系统在出现不可预知故障的时候,允许损失一部分可用性(响应时间上的损失,功能上的损失)但绝不等于不可用。 - Soft state 软状态:
相对于一致性,要求多个节点的数据副本都是一致的,这是一种“硬状态”,软状态指的是,允许系统中的数据存在中间状态,并认为该状态不影响系统的整体可用性,即允许系统在多个不同节点的数据副本之间进行数据同步的过程存在延迟。 - Eventually consistent 最终一致性:
最终一致性强调的是系统中所有数据副本,在经过一段时间的同步后,最终能达到一个一致的状态,因此最终一致性的本质是需要系统保证最终数据能够达到一致,而不需要实时保证系统数据的强一致性。
BASE是对CAP中一致性和可用性权衡的结果,BASE理论的核心思想是:即使无法做到强一致性,但每个应用可以根据自身业务特点,采用适当的方式使系统达到最终一致性。