持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第23天,点击查看活动详情
1 事务概念
1.1 本地事务
数据库和应用在同一个服务器上,并且使用关系型数据库的事务特性来实现事务,也叫数据库事务。
1.2 分布式事务
事务的参与者,事务管理器位于不同的分布式系统的不同节点上,并且分别属于不同的应用,分布式事务要保证这些操作要么全部成功要么全部失败。
其实分布式事务就是保证不同数据库之间的数据一致性
2 事务特性
2.1 原子性
A(Atomic) 事物中的所有操作,要么全部成功,要么全部失败。
2.2 一致性
C(Consistency) 在事务执行前后,数据库的一致性约束没有被破坏
2.3 隔离性
I(Isolation) 并发的事务之间互相不干扰
2.4 持久性
D(Durability) 事务完成之后,该事务对数据的更改会被持久化到数据库,且当没有错误发生的时候不会被回滚。
3 分布式事务理论
分布式事务存在两大理论依据:CAP定律 BASE理论。
3.1 CAP定律
在一个分布式系统中、Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可得兼。
- 一致性(C) 在分布式系统中的所有数据备份,在同一时刻是否同样的值。也就是无论访问哪一个节点都取到的是最新的值。
- 可用性(A) 在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。
- 分区容错性(P) 以实际效果而言,分区相当于对通信的时限要求。系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在C和A之间做出选择
CAP是无法同时存在的,因为当要求强一致性的时候,在一个节点接收到数据,并且同步给其他节点的时候,整个集群是不可用的。相反当要求高可用性的时候,节点同步数据的时候持续提供服务,那么每个节点的数据将在同步期间是不同的。
所以,在分布式系统中,p是必然的存在的,所以我们只能在C和A之间进行取舍,在这种条件下就诞生了BASE理论。
3.2 BASE理论
BASE是Basically Available(基本可用)、Soft state(软状态) 和 Eventually consistent(最终一致性) 三个短语的缩写。是基于CAP定理逐步演化而来的.
BASE理论的核心思想是:即使无法做到强一致性,但每个应用都可以根据自身业务特点,采用适当的方式来使系统达到最终一致性。
- 基本可用 基本可用是指分布式系统在出现不可预知故障的时候,允许损失部分可用性—-注意,这绝不等价于系统不可用。比如:
- (1)响应时间上的损失:正常情况下,一个在线搜索引擎需要在0.5秒之内返回给用户相应的查询结果,但由于出现故障,查询结果的响应时间增加了1~2秒
- (2)系统功能上的损失:正常情况下,在一个电子商务网站上进行购物的时候,消费者几乎能够顺利完成每一笔订单,但是在一些节日大促购物高峰的时候,由于消费者的购物行为激增,为了保护购物系统的稳定性,部分消费者可能会被引导到一个降级页面
- 软状态 软状态指允许系统中的数据存在中间状态,并认为该中间状态的存在不会影响系统的整体可用性,即允许系统在不同节点的数据副本之间进行数据同步的过程存在延时
- 最终一致性 最终一致性强调的是所有的数据副本,在经过一段时间的同步之后,最终都能够达到一个一致的状态。因此,最终一致性的本质是需要系统保证最终数据能够达到一致,而不需要实时保证系统数据的强一致性。
比如在一个商城系统中,订单,库存和积分服务。
基本可用: 当订单量特别大的时候,需要保证核心服务是可以使用的,对于非核心服务,例如积分服务,可以适当降低响应时间或者降级。
软状态: 存在中间状态,不影响整体系统使用,数据同步存在延时。积分可以在系统负载不高的时候进行计算添加。
最终一致性: 再过了流量高峰期以后,经过一段时间的同步,保持各服务数据的一致。