欢迎访问中国建设银行网站,中国制造网网站建设的优势,网站建设专业性的评价,北京网站建设过程概念
基础概念#xff1a;事务ACID • A#xff08;Atomic#xff09;#xff1a;原子性#xff0c;构成事务的所有操作#xff0c;要么都执行完成#xff0c;要么全部不执行#xff0c;不可能出现部分成功部分失 败的情况。 • C#xff08;Consistency#xff09;…概念
基础概念事务ACID • AAtomic原子性构成事务的所有操作要么都执行完成要么全部不执行不可能出现部分成功部分失 败的情况。 • CConsistency一致性在事务执行前后数据库的一致性约束没有被破坏。比如张三向李四转100元 转账前和转账后的数据是正确状态这叫一致性如果出现张三转出100元李四账户没有增加100元这就出现了数 据错误就没有达到一致性。 • IIsolation隔离性数据库中的事务一般都是并发的隔离性是指并发的两个事务的执行互不干扰一个事 务不能看到其他事务运行过程的中间状态。通过配置事务隔离级别可以避脏读、重复读等问题。 • DDurability持久性事务完成之后该事务对数据的更改会被持久化到数据库且不会被回滚。
事务
• 本地事务同一数据库和服务器称为本地事务 在计算机系统中更多的是通过关系型数据库来控制事务这是利用数据库本身的事务特性来实现的因此叫数据库事务由于应用主要靠关系数据库来控制事务而数据库通常和应用在同一个服务器所以基于关系型数据库的事务又被称为本地事务。 • 分布式事务 分布式事务指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上且属于不同的应用分布式事务需要保证这些操作要么全部成功要么全部失败。本质上来说分布式事务就是为了保证不同数据库的数据一致性。 • 举例 分布式系统会把一个应用系统拆分为可独立部署的多个服务因此需要服务与服务之间远程协作才能完成事务操 作这种分布式系统环境下由不同的服务之间通过网络远程协作完成事务称之为分布式事务例如用户注册送积分事务、创建订单减库存事务银行转账事务等都是分布式事务。
通过以上的图中我们可以看出其实只要涉及到操作多个数据源就可能会产生事务问题当然在实际开发中我们要尽量避免这种问题的出现当然如果避免不了我们就需要进行解决在我们的微服务系统架构中目前比较好比较常用的解决方案就是Seata。
分布式事务理论
随着互联化的蔓延各种项目都逐渐向分布式服务做转换。如今微服务已经普遍存在本地事务已经无法满足分布式的要求由此分布式事务问题诞生。 分布式事务被称为世界性的难题目前分布式事务存在两大理论依据CAP定律 BASE理论。
CAP定律
这个定理的内容是指的是在一个分布式系统中、Consistency一致性、 Availability可用性、Partition tolerance分区容错性三者不可得兼。 • 一致性C 在分布式系统中的所有数据备份在同一时刻是否同样的值。等同于所有节点访问同一份最新的数据副本 • 可用性A 在集群中一部分节点故障后集群整体是否还能响应客户端的读写请求。对数据更新具备高可用性 • 分区容错性P 以实际效果而言分区相当于对通信的时限要求。系统如果不能在时限内达成数据一致性就意味着发生了分区的情况必须就当前操作在C和A之间做出选择 CAP是无法同时存在的一下通过这个例子来说明
当库存服务减库存以后那么需要将数据同步到其他的服务上这是为了保证数据一致性C但是网络是不可靠的所以我们系统就需要保证分区容错性P也就是我们必须容忍网络所带来的的一些问题此时如果我们想保证C那么就需要舍弃A也就是说我们在保证C的情况下就必须舍弃A也就是CP无法保证高可用。如果为了保证A高可用的情况下也就是必须在限定时间内给出响应同样由于网络不可靠P订单服务就有可能无法拿到新的数据但是也要给用户作出响应那么也就无法保证C一致性。所以AP是无法保证强一致性的。如果我们想保证CA也就是高可用和一致性也就是必须保证网络良好才能实现那么也就是说我们需要将库存、订单、用户放到一起但是这种情况也就丧失了P这个保证这个时候系统也就不是分布式系统了。总结在分布式系统中p是必然的存在的所以我们只能在C和A之间进行取舍在这种条件下就诞生了BASE理论。
BASE理论
BASE是Basically Available基本可用、Soft state软状态和 Eventually consistent最终一致性三个短语的缩写。BASE理论是对CAP中一致性和可用性权衡的结果其来源于对大规模互联网系统分布式实践的总结 是基于CAP定理逐步演化而来的。BASE理论的核心思想是即使无法做到强一致性但每个应用都可以根据自身业务特点采用适当的方式来使系统达到最终一致性。 • 基本可用 基本可用是指分布式系统在出现不可预知故障的时候允许损失部分可用性—-注意这绝不等价于系统不可用。比如 1响应时间上的损失。正常情况下一个在线搜索引擎需要在0.5秒之内返回给用户相应的查询结果但由于出现故障查询结果的响应时间增加了1~2秒 2系统功能上的损失正常情况下在一个电子商务网站上进行购物的时候消费者几乎能够顺利完成每一笔订单但是在一些节日大促购物高峰的时候由于消费者的购物行为激增为了保护购物系统的稳定性部分消费者可能会被引导到一个降级页面 • 软状态 软状态指允许系统中的数据存在中间状态并认为该中间状态的存在不会影响系统的整体可用性即允许系统在不同节点的数据副本之间进行数据同步的过程存在延时 • 最终一致性 最终一致性强调的是所有的数据副本在经过一段时间的同步之后最终都能够达到一个一致的状态。因此最终一致性的本质是需要系统保证最终数据能够达到一致而不需要实时保证系统数据的强一致性。 那这个位置我们依旧可以用我们刚才的例子来进行说明 基本可用保证核心服务是可以使用的至于其他的服务可以适当的降低响应时间甚至是服务降级
软状态存在中间状态不影响整体系统使用数据同步存在延时 最终一致性再过了流量高峰期以后经过一段时间的同步保持各服务数据的一致