- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
大白话聊聊分布式事务本文章来自于阿里云云栖社区摘要:?# 大白话聊聊分布式事务 ## 什么是分布式事务简单的来说就是,一个大的操作由两个或者更多的小的操作共同完成。而这些小的操作又分布在不同的网络主机上。这些操作,要么全部成功执行,要么全部不执行。拿转账的例子来说下什么是分布式事务。张三和李四在不同的城市,存储他们账户信息的服务器也在不同的网络主机上。张三有30元钱,李四有30元钱。张三给李四转账5元就是一个事务。完成这个事务,需要两个大白话聊聊分布式事务什么是分布式事务简单的来说就是,一个大的操作由两个或者更多的小的操作共同完成。而这些小的操作又分布在不同的网络主机上。这些操作,要么全部成功执行,要么全部不执行。拿转账的例子来说下什么是分布式事务。张三和李四在不同的城市,存储他们账户信息的服务器也在不同的网络主机上。张三有30元钱,李四有30元钱。张三给李四转账5元就是一个事务。完成这个事务,需要两个操作。首先得从张三账户上扣5元,然后再给李四账户上加5元。事务执行完毕后,必须是两个操作都执行成功,要么都失败。事务的特性分布式事务本身就是事务,所以也有事务的特性。事务有四个特征ACID:A:原子性(Atomicity)事务中的各个操作单元要么全部做,要么就全部不做。不能事务执行后,处于只做一半的状态。C:一致性(Consistency)事务执行后,必须由一个一致状态变为另外一个一致状态。I:隔离性(Isolation)事务之间不能相互干扰。D:持久性(Durability)一旦事务完成,对于数据的变更是永久的。分布式事务实现方式下面我们就以上面转账的例子来说下实现分布式事务的几种方式。两阶段提交两阶段提交的大概流程:第一阶段:正常情况下的操作过程如下:在第一阶段,主要是事务管理者(经理)发起事务,让各个事务资源方(职员甲乙)确认资源是否满足,并做预处理(冻结)。资源方的操作有可能失败也可能成功。如,张三账户不足5元钱,没办法冻结,就是失败。资源方把操作结果反馈给事务管理者。异常情况下的操作过程如下:如果预提交过程中出现任何问题,导致事务不能执行。将会通知资源方进行撤销预提交操作。第二阶段:如果是职员甲和职员乙都告诉经理,操作成功了。正常情况下的操作过程如下:这个时候,张三账户上的金额是25元。李四账户上的金额是35元。异常情况下的操作过程如下:这个时候,张三账户上的金额是30元。李四账户上的金额也是30元。总而言之,事务的执行会分为预提交和提交两步进行。任何一个小操作出问题,导致事务不能完成,将会进行回滚操作。两阶段提交需要注意的两阶段提交,要有一个事务管理者协调各方的操作。各方对资源的占用要到整个事务结束后才能释放。这样会影响事务的效率。当并发量大的时候,系统的性能会严重下滑。事务管理者和资源方存在通信。有可能存在通信不通畅。如,职员甲接受到扣钱的命令后,职员甲扣完了钱。由于电话故障等原因,导致没办法通知经理已经操作成功。因此,各方还要处理通信超时问题。整个流程需要事务管理者协调各个资源方进行操作。但是,事务管理者可能出现问题。导致没办法进行协调。如,经理生病了。注意幂等性问题。可能存在对资源方重复调用的情况。这种情况下,资源方被调用多次和调用一次的效果要一样。如上例中,经理第二次通知职员甲扣5元的时候,职员甲要像上次一样,告诉经理扣款已经完成。但是,职员甲不能再进行扣款的动作。基于消息实现基于消息的实现大概过程如下:基于消息的分布式事务实现中,引入了消息中间件(助理),负责消息的传递和事务执行状态的询问。这样就降低了系统间的耦合度。为什么职员甲在进行扣款前,要告诉助理?主要是怕自己扣款成功了,又忘记告诉助理。这个时候,助理也就没办法通知职员乙操作了。告诉助理后,如果职员甲忘记了,助理可以询问职员甲,是否执行成功。进而决定是否该通知职员乙进行加钱操作。如果职员甲扣款失败,则应该通知助理。助理在这种情况下,就不英再通知职员乙加钱。基于消息实现的问题基于消息的分布式事务实现,讲究的是最终一致性。也即所有的本地事务执行完毕后,整个状态的一致。整个事务一般不会有回滚操作。如,当职员乙操作失败的时候,职员应该是再次通知职员乙重试。
您可能关注的文档
最近下载
- 论文写作与学术规范答案_论文写作与学术规范答案资源.doc VIP
- QCSG-GXPG2084037-2021 分布式光伏并网服务业务指导书.docx VIP
- 宁海博物馆红妆馆设计说明(扩初).doc VIP
- 4.2依法履行义务课件 -2024-2025学年统编版道德与法治八年级下册.pptx VIP
- 2025年国开行政法与行政诉讼法形考任务2试题及答案 .pdf VIP
- 2024-2025学年甘肃省小升初数学试卷及解答参考.pdf VIP
- 工业产品主数据标准通用规范.pdf VIP
- 三龄两历一身份认定表填写标准规范及样表.doc VIP
- 试油气操作规程 课件.ppt VIP
- 5《大学物理学》静电场练习题(马).doc VIP
文档评论(0)