谷粒商城实战笔记-285~290-分布式事务

文章目录

包含从285~290的内容,不详细,可忽略。

一,285、商城业务-分布式事务-分布式CAP&Raft原理

1,CAP简介

CAP定理,由加州大学伯克利分校的教授埃里克·布鲁尔(Erich Brewer)提出,并由塞思·吉尔伯特(Seth Gilbert)和南希·林奇(Nancy Lynch)证明,是分布式系统设计中的一个基础理论。

这个理论指出,在一个分布式系统中,不可能同时实现一致性(Consistency)、可用性(Availability)和分区容忍性(Partition tolerance)这三个特性。

因此,分布式系统必须在这三个特性中做出权衡。

在实际应用中,根据系统的具体需求,通常会选择满足其中的两个特性而牺牲第三个。

2,三种常见的组合

2.1 CA 模型 - 一致性 + 可用性

这种模型下,当网络分区发生时,系统将停止工作,即无法保证分区容忍性。在没有网络分区的情况下,CA系统能够提供强一致性和高可用性。

例子

数据库事务处理系统,这类系统需要确保数据的一致性,因此在网络出现问题时,它可能会拒绝服务来保持一致性。

2.2 CP 模型 - 一致性 + 分区容忍性

在这种情况下,系统可以容忍网络分区,并且在分区发生时仍能保持数据的一致性。但是,这可能意味着某些请求不会立即得到响应,即牺牲了可用性。

例子

银行转账系统,为了保证资金转移的一致性,即使在网络不稳定时,系统也可能延迟操作直到确认数据的一致性。

2.3 AP 模型 - 可用性 + 分区容忍性

AP系统选择在任何情况下都提供服务,即使这意味着在分区期间返回的可能是陈旧的数据,即牺牲了一致性。

例子

大型的Web应用程序或缓存系统,如亚马逊的商品详情页面,即使部分数据没有立即更新,用户仍然可以访问到大部分功能和服务。

3,CAP最小必要知识

  • 讨论的对象是单一的分布式部署的存储服务
  • 一般情况下,必须要保证分区容错性

4,Raft算法资料

二,286、商城业务-分布式事务-BASE

BASE理论是对 CAP 理论的延伸,思想是即使无法做到强一致性(CAP 的一致性就是强一致性),但可以采用适当的采取弱一致性,即最终一致性,保证服务可用。

BASE 是指:

  • 基本可用(Basically Available)

基本可用是指分布式系统在出现故障的时候,允许损失部分可用性(例如响应时间、功能上的可用性),允许损失部分可用性。需要注意的是,基本可用绝不等价于系统不可用。

响应时间上的损失:正常情况下搜索引擎需要在 0.5 秒之内返回给用户相应的查询结果,但由于出现故障(比如系统部分机房发生断电或断网故障),查询结果的响应时间增加到了 1~2 秒。

功能上的损失:购物网站在购物高峰(如双十一)时,为了保护系统的稳定性,部分消费者可能会被引导到一个降级页面。

  • 软状态( Soft State)

软状态是指允许系统存在中间状态,而该中间状态不会影响系统整体可用性。分布式存储中一般一份数据会有多个副本,允许不同副本同步的延时就是软状态的体现。mysql replication 的异步复制也是一种体现。

  • 最终一致性( Eventual Consistency)

最终一致性是指系统中的所有数据副本经过一定时间后,最终能够达到一致的状态。弱一致性和强一致性相反,最终一致性是弱一致性的一种特殊情况。

三,287、商城业务-分布式事务-分布式事务常见解决方案

1,2PC-两阶段提交

2,柔性事务

3,柔性事务-最大努力通知型方案

4,柔性事务-可靠消息+最终一致性方案(异步确保型)

四,288、商城业务-分布式事务-Seata&环境准备

在商城服务中,使用 Seata 这种基于两阶段提交(2PC)协议的分布式事务管理方案并不是最佳选择,原因有以下几个方面:

1. 性能开销

Seata 或任何基于 2PC 的方案都会引入额外的网络延迟和计算开销。对于高并发的商城系统来说,每次请求都需要经过额外的事务协调步骤,这会显著增加系统的响应时间,降低吞吐量。

2. 数据库压力

在高并发场景下,频繁地使用全局事务可能会导致数据库锁竞争加剧,尤其是在涉及多个表或者多个数据库的情况下。这会导致更多的等待时间,从而影响整体性能。

3. 复杂性和维护成本

实现全局事务需要对应用程序进行改造,使其能够支持 Seata 的逻辑,例如在业务代码中加入必要的事务控制逻辑。此外,还需要维护额外的 Seata 组件,如 TC(事务协调器),这增加了系统的复杂度和运维成本。

4. 非阻塞需求

现代微服务架构倾向于无阻塞的异步编程模型,而 2PC 是一种阻塞式的协议,在事务未最终提交或回滚之前,参与节点必须保持锁定资源,这对于追求快速响应的应用来说不是一个理想的选择。

5. 最终一致性

对于很多商城服务来说,事务的一致性要求可能并不需要严格的强一致性,而是可以接受最终一致性。在这种情况下,可以采用更轻量级的解决方案,比如补偿事务(TCC)、Saga 模式或者事件驱动架构等,这些方法可以在不牺牲性能的前提下达到业务所需的最终一致性。

6. 分布式系统的特点

在分布式系统中,CAP 定理告诉我们无法同时满足一致性(Consistency)、可用性(Availability)和分区容忍性(Partition tolerance)。对于高可用和高并发的商城系统,通常会选择牺牲一定程度的一致性来换取更高的可用性和扩展性。

五,290、商城业务-分布式事务-最终一致性库存解锁逻辑

动画资料

https://thesecretlivesofdata.com/raft/

相关推荐
Data跳动1 小时前
Spark内存都消耗在哪里了?
大数据·分布式·spark
冷眼看人间恩怨2 小时前
【Qt笔记】QDockWidget控件详解
c++·笔记·qt·qdockwidget
Java程序之猿3 小时前
微服务分布式(一、项目初始化)
分布式·微服务·架构
来一杯龙舌兰3 小时前
【RabbitMQ】RabbitMQ保证消息不丢失的N种策略的思想总结
分布式·rabbitmq·ruby·持久化·ack·消息确认
节点。csn5 小时前
Hadoop yarn安装
大数据·hadoop·分布式
NiNg_1_2346 小时前
基于Hadoop的数据清洗
大数据·hadoop·分布式
Hejjon8 小时前
SpringBoot 整合 SQLite 数据库
笔记
隔着天花板看星星8 小时前
Spark-Streaming集成Kafka
大数据·分布式·中间件·spark·kafka
西洼工作室10 小时前
【java 正则表达式 笔记】
java·笔记·正则表达式
初学者7.10 小时前
Webpack学习笔记(2)
笔记·学习·webpack