再看BASE理论之前,轻先移步大名鼎鼎的Cap理论究竟是什么了解一下什么是CAP理论。正因为CAP理论存在一些局限性,eBay的架构师Dan Pritchett基于他在大规模分布式系统中的实践经验,总结出了BASE理论。BASE理论是对CAP理论的进一步扩展,其核心思想是,即便无法实现强一致性(Strong Consistency),应用程序也可以通过适当的方法达到最终一致性(Eventual Consistency)。
BASE理论是一个更具工程实践意义的理论,它弥补了CAP理论过于抽象的问题,同时也为AP系统提供了整体的工程实践思想。目前BASE理论已经成为分布式系统中的核心理论之一
1. 数据一致性分类
BASE理论对数据一致性做了一些更细致的分类,从而对CAP理论作了进一步的扩展。数据一致性大致可以分为以下几类:
1.1 强一致性
数据更新操作完成之后,数据立即生效,后续的所有访问当中都能得到最新的结果
1.2 弱一致性
数据更新操作完成之后,不要求立即可以读到最新写入的值,能容忍在更新发生之后,部分情况下无法访问到新数据的情况
1.3 最终一致性
数据更新操作完成之后,能容忍更新后一段时间内无法访问到最新数据,不需要实时保证系统数据的强一致性,但是经过一段时间的同步之后,最终可以达到一个一致的状态。所以,最终一致性可以看作是弱一致性的一个特例
而在CAP理论中的C指的是强一致性,所以要分析什么样的系统适合AP,什么样的系统适合CP,其实就是在强一致性和可用性之间做权衡,根据业务情况,看那些业务能够容忍最终一致性,而很在乎用户体验,这样的业务就适合AP。而对于强一致性要求高的业务则适合用CP
2. 什么是BASE理论
Base理论是由 eBay 的架构师 Dan Pritchett 在 ACM 上发表的一套分布式设计理论,BASE 理论全称是** "Basically Available, Soft state, Eventual consistency"**,即 "基本可用,软状态,最终一致性"。它是由CAP 定理逐步演化而来的,是对 CAP 中一致性 C 和可用性 A 权衡的结果
2. 基本可用(Basically Available)
系统在遇到不可预知的故障时,允许损失部分可用性,就是说即使系统不能完全正常工作,但是仍然有部分功能可用。换句话说,,但至少能够提供部分服务。例如,响应时间比平时长或者某些功能暂时不可用。
2.1.1 怎么理解部分功能可用:
- 响应性能变弱
-
比如正常情况下请求响应为0.3s,但是出现了某个故障之后,虽然还能正常响应,但是响应时长变为了2s
-
- 系统功能有损
-
比如商城双十一活动时,评论模块出现故障,但不会影响交易、商品等核心模块的流程使用
-
2.2 软状态(Soft state)
指允许系统中的数据存在中间状态,这种状态可能是不一致的,但是这种中间状态的存在不会影响系统的整体可用性,因为数据在不同节点之间的同步可能存在延迟
2.3 最终一致性(Eventual Consistency)
系统不要求数据实时地达到一致性,而是允许数据在一段时间后最终达到一致状态。这意味着在经过一定的时间之后,所有副本的数据会最终到达一致的状态
2.4 Base理论的核心思想
既然在分布式系统中分区容错性我们无法回避,而根据CAP理论,我们要么选择AP模型,要么选择CP模型。但是在很多的场景中,尤其是对可以用性要求高的场景往往既需要可用性,又想保证一致性,这里就出现了矛盾。所以这里可以在选择可用性的同时,弱化强一致性,但是并不是永远放弃一致性,在分区故障恢复后,根据各自的业务特点,经过一段时间系统应该达到最终一致性。而系统中一部分不一致时,系统仍需要保持系统整体“主要可用”,也就是基本可用。其实Base理论可以理解为:分区容错性 + 基本可用性 + 最终一致性, 其实就是对CAP理论的一种延伸
交流学习
如果您觉得文章有帮助,请帮忙转发给更多好友,或关注公众号:IT杨秀才,持续更新更多硬核文章,一起聊聊互联网网那些事儿!