包含从285~290的内容,不详细,可忽略。
CAP定理,由加州大学伯克利分校的教授埃里克·布鲁尔(Erich Brewer)提出,并由塞思·吉尔伯特(Seth Gilbert)和南希·林奇(Nancy Lynch)证明,是分布式系统设计中的一个基础理论。
这个理论指出,在一个分布式系统中,不可能同时实现一致性(Consistency)、可用性(Availability)和分区容忍性(Partition tolerance)这三个特性。
因此,分布式系统必须在这三个特性中做出权衡。
在实际应用中,根据系统的具体需求,通常会选择满足其中的两个特性而牺牲第三个。
这种模型下,当网络分区发生时,系统将停止工作,即无法保证分区容忍性。在没有网络分区的情况下,CA系统能够提供强一致性和高可用性。
例子:
数据库事务处理系统,这类系统需要确保数据的一致性,因此在网络出现问题时,它可能会拒绝服务来保持一致性。
在这种情况下,系统可以容忍网络分区,并且在分区发生时仍能保持数据的一致性。但是,这可能意味着某些请求不会立即得到响应,即牺牲了可用性。
例子:
银行转账系统,为了保证资金转移的一致性,即使在网络不稳定时,系统也可能延迟操作直到确认数据的一致性。
AP系统选择在任何情况下都提供服务,即使这意味着在分区期间返回的可能是陈旧的数据,即牺牲了一致性。
例子:
大型的Web应用程序或缓存系统,如亚马逊的商品详情页面,即使部分数据没有立即更新,用户仍然可以访问到大部分功能和服务。
BASE理论是对 CAP 理论的延伸,思想是即使无法做到强一致性(CAP 的一致性就是强一致性),但可以采用适当的采取弱一致性,即最终一致性,保证服务可用。
BASE 是指:
软状态是指允许系统存在中间状态,而该中间状态不会影响系统整体可用性。分布式存储中一般一份数据会有多个副本,允许不同副本同步的延时就是软状态的体现。mysql replication 的异步复制也是一种体现。
最终一致性是指系统中的所有数据副本经过一定时间后,最终能够达到一致的状态。弱一致性和强一致性相反,最终一致性是弱一致性的一种特殊情况。
在商城服务中,使用 Seata 这种基于两阶段提交(2PC)协议的分布式事务管理方案并不是最佳选择,原因有以下几个方面:
Seata 或任何基于 2PC 的方案都会引入额外的网络延迟和计算开销。对于高并发的商城系统来说,每次请求都需要经过额外的事务协调步骤,这会显著增加系统的响应时间,降低吞吐量。
在高并发场景下,频繁地使用全局事务可能会导致数据库锁竞争加剧,尤其是在涉及多个表或者多个数据库的情况下。这会导致更多的等待时间,从而影响整体性能。
实现全局事务需要对应用程序进行改造,使其能够支持 Seata 的逻辑,例如在业务代码中加入必要的事务控制逻辑。此外,还需要维护额外的 Seata 组件,如 TC(事务协调器),这增加了系统的复杂度和运维成本。
现代微服务架构倾向于无阻塞的异步编程模型,而 2PC 是一种阻塞式的协议,在事务未最终提交或回滚之前,参与节点必须保持锁定资源,这对于追求快速响应的应用来说不是一个理想的选择。
对于很多商城服务来说,事务的一致性要求可能并不需要严格的强一致性,而是可以接受最终一致性。在这种情况下,可以采用更轻量级的解决方案,比如补偿事务(TCC)、Saga 模式或者事件驱动架构等,这些方法可以在不牺牲性能的前提下达到业务所需的最终一致性。
在分布式系统中,CAP 定理告诉我们无法同时满足一致性(Consistency)、可用性(Availability)和分区容忍性(Partition tolerance)。对于高可用和高并发的商城系统,通常会选择牺牲一定程度的一致性来换取更高的可用性和扩展性。
因篇幅问题不能全部显示,请点此查看更多更全内容