当前位置:网站首页>分布式事务介绍
分布式事务介绍
2022-07-06 23:41:00 【勤天】
目录
一、分布式事务概念
1、什么是事务
事务可以看做是一次大的活动,它由不同的小活动组成,这些活动要么全部成功,要么全部失败。
2、本地事务
数据库事务的四大特性 ACID:
- A(Atomic): 原子性 ,构成事务的所有操作,要么都执行完成,要么全部不执行,不可能出现部分成功部分失败的情况。
- C(Consistency): 一致性 ,在事务执行前后,数据库的一致性约束没有被破坏。比如:张三向李四转100元,转账前和转账后的数据是正确状态这叫一致性,如果出现张三转出100元,李四账户没有增加100元这就出现了数据错误,就没有达到一致性。
- I(Isolation): 隔离性 ,数据库中的事务一般都是并发的,隔离性是指并发的两个事务的执行互不干扰,一个事务不能看到其他事务运行过程的中间状态。通过配置事务隔离级别可以避脏读、重复读等问题。
- D(Durability): 持久性 ,事务完成之后,该事务对数据的更改会被持久化到数据库,且不会被回滚。
数据库事务在实现时会将一次事务涉及的所有操作全部纳入到一个不可分割的执行单元,该执行单元中的所有操作要么都成功,要么都失败,只要其中任一操作执行失败,都将导致整个事务的回滚。
3、分布式事务
分布式系统会把一个应用系统拆分为可独立部署的多个服务,因此需要服务与服务之间远程协作才能完成事务操作,这种分布式系统环境下由不同的服务之间通过网络远程协作完成事务称之为分布式事务 ,例如用户注册送积分事务、创建订单减库存事务,银行转账事务等都是分布式事务。
4、分布式事务产生的场景
- 典型的场景就是微服务架构,微服务之间通过 远程调用完成事务 操作。比如:订单微服务和库存微服务,下单的同时订单微服务请求库存微服务减库存。 简言之: 跨JVM进程产生分布式事务 。
- 单体系统访问多个数据库实例, 跨数据库实例产生分布式事务 。
- 多服务访问同一个数据库实例 ,比如:订单微服务和库存微服务即使访问同一个数据库也会产生分布式事务,原因就是 跨JVM进程 ,两个微服务持有了不同的数据库链接进行数据库操作,此时产生分布式事务。
二、分布式事务基础理论
1、CAP理论
1)概念
CAP是 Consistency、Availability、Partition tolerance三个词语的缩写,分别表示一致性、可用性、分区容忍性。
2)组合方式
在所有分布式事务场景中不会同时具备CAP三个特性,因为在具备了P的前提下C和A是不能共存的 。
- AP:放弃一致性,追求分区容忍性和可用性。这是很多分布式系统设计时的选择 。Eureka集群就是采用的AP设计思想。
- CP:放弃可用性,追求一致性和分区容错性。zookeeper集群。
- CA:放弃分区容忍性,即不进行分区,不考虑由于网络不通或结点挂掉的问题,则可以实现一致性和可用性。那么系统将不是一个标准的分布式系统,我们最常用的关系型数据就满足了CA。
3)总结
CAP是一个已经被证实的理论:一个分布式系统最多只能同时满足 一致性(Consistency)、可用性(Availability)和分区容忍性(Partition tolerance)这三项中的两项 。
它可以作为我们进行架构设计、技术选型的考量标准。对于多数大型互联网应用的场景,结点众多、部署分散,而且现在的集群规模越来越大,所以节点故障、网络故障是常态,而且要保证服务可用性达到N个9(99.99..%),并要达到良好的响应性能来提高用户体验,因此一般都会做出如下选择: 保证P和A,舍弃C强一致,保证最终一致性 。
2、BASE理论
1)强一致性与最终一致性
- 强一致性:CAP中的一致性要求在任何时间查询每个节点数据都必须一致,它强调的是强一致性。
- 弱一致性:数据更新成功后,系统不承诺立即可以读到最新写入的值,也不承诺具体多久之后可以读到。
- 最终一致性:允许可以 在一段时间内每个节点的数据不一致 ,但是经过一段时间每个结点的数据必须一致,它强调的是 最终数据的一致性 。
2)概念
BASE 是 Basically Available(基本可用)、Soft state(软状态)和 Eventually consistent (最终一致性) 三个短语的缩写。
BASE理论是对CAP中AP的一个扩展,通过牺牲强一致性来获得可用性,当出现故障允许部分不可用但要保证核心功能可用,允许数据在一段时间内是不一致的,但最终达到一致状态。
满足BASE理论的事务,我们称之为“ 柔性事务 ”。
- 基本可用 :分布式系统在出现故障时,允许损失部分可用功能, 保证核心功能可用 。如,电商网站交易付款出现问题了,商品依然可以正常浏览。
- 软状态 :由于不要求强一致性,所以BASE允许系统中 存在中间状态 (也叫软状态),这个状态不影响系统可用性,如订单的 “支付中”、“数据同步中” 等状态,待数据最终一致后状态改为“成功”状态。
- 最终一致性 :最终一致是指 经过一段时间后,所有节点数据都将会达到一致 。如订单的"支付中"状态,最终会变为“支付成功”或者"支付失败",使订单状态与实际交易结果达成一致,但需要一定时间的延迟、等待。
边栏推荐
- [论文阅读] Semi-supervised Left Atrium Segmentation with Mutual Consistency Training
- Aidl and service
- DJ-ZBS2漏电继电器
- Leakage relay llj-100fs
- Mysql database learning (7) -- a brief introduction to pymysql
- Educational Codeforces Round 22 B. The Golden Age
- Y58. Chapter III kubernetes from entry to proficiency - continuous integration and deployment (Sany)
- Talk about mvcc multi version concurrency controller?
- Zero sequence aperture of leakage relay jolx-gs62 Φ one hundred
- 照片选择器CollectionView
猜你喜欢
LabVIEW is opening a new reference, indicating that the memory is full
Life experience of an update statement
10 distributed databases that take you to the galaxy
[JS component] custom select
DOM node object + time node comprehensive case
JHOK-ZBG2漏电继电器
JSP setting header information export to excel
How digitalization affects workflow automation
漏电继电器LLJ-100FS
张平安:加快云上数字创新,共建产业智慧生态
随机推荐
Aidl and service
Y58. Chapter III kubernetes from entry to proficiency - continuous integration and deployment (Sany)
Photo selector collectionview
删除文件时提示‘源文件名长度大于系统支持的长度’无法删除解决办法
漏电继电器JELR-250FG
App clear data source code tracking
[PHP SPL notes]
Addressable pre Download
DJ-ZBS2漏电继电器
app clear data源码追踪
Use Zhiyun reader to translate statistical genetics books
利用OPNET进行网络仿真时网络层协议(以QoS为例)的使用、配置及注意点
Scheduledexecutorservice timer
数字化如何影响工作流程自动化
《5》 Table
pytest测试框架——数据驱动
Zhang Ping'an: accelerate cloud digital innovation and jointly build an industrial smart ecosystem
Is the human body sensor easy to use? How to use it? Which do you buy between aqara green rice and Xiaomi
Pytest testing framework -- data driven
As we media, what websites are there to download video clips for free?