ImageVerifierCode 换一换
格式:DOC , 页数:6 ,大小:453.50KB ,
资源ID:3201787      下载积分:15 文币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.wenkunet.com/d-3201787.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(微服务架构-分布式事务设计方案.doc)为本站会员(顺腾)主动上传,文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文库网(发送邮件至13560552955@163.com或直接QQ联系客服),我们立即给予删除!

微服务架构-分布式事务设计方案.doc

1、.微服务分布式事务概念澄清 事务补偿机制: 在事务链中的任何一个正向事务操作, 都必须存在一个完全符合回滚规则的可逆事务. CAP理论: CAP(Consistency, Availability, Partition Tolerance), 阐述了一个分布式系统的三个主要方面, 只能同时择其二进行实现. 常见的有CP系统, AP系统. 幂等性: 简单的说,业务操作支持重试, 不会产生不利影响. 常见的实现方式: 为消息额外增加唯一ID. BASE(Basically avaliable, soft state, eventually consistent): 是分布式事务实现的一种理论标准.

2、柔性事务 vs. 刚性事务刚性事务是指严格遵循ACID原则的事务, 例如单机环境下的数据库事务.柔性事务是指遵循BASE理论的事务, 通常用在分布式环境中, 常见的实现方式有: 两阶段提交(2PC), TCC补偿型提交, 基于消息的异步确保型, 最大努力通知型.通常对本地事务采用刚性事务, 分布式事务使用柔性事务.最佳实践先上结论, 再分别介绍分布式事务的各种实现方式. 如果业务场景需要强一致性, 那么尽量避免将它们放在不同服务中, 也就是尽量使用本地事务, 避免使用强一致性的分布式事务. 如果业务场景能够接受最终一致性, 那么最好是使用基于消息的最终一致性的方案(异步确保型)来解决. 如果业

3、务场景需要强一致性, 并且只能够进行分布式服务部署, 那么最好是使用TCC方案而不是2PC方案来解决.注意: 以下每种方案都有不同的适用场合, 需要根据实际业务场景来选择.两阶段提交(2PC)两阶段提交(Two Phase Commit, 2PC), 具有强一致性, 是CP系统的一种典型实现.两阶段提交, 常见的标准是XA, JTA等. 例如Oracle的数据库支持XA.示意图图的上半是两阶段提交成功的演示, 下半是两阶段提交失败的演示. 关于两阶段提交网上有很多经典的讲解, 这里就不细说了, 可以参考前面的链接.缺点 两阶段提交中的第二阶段, 协调者需要等待所有参与者发出yes请求, 或者一

4、个参与者发出no请求后, 才能执行提交或者中断操作. 这会造成长时间同时锁住多个资源, 造成性能瓶颈, 如果参与者有一个耗时长的操作, 性能损耗会更明显. 实现复杂, 不利于系统的扩展, 不推荐.TCC (Try-Confirm-Cancle)TCC, 是基于补偿型事务的AP系统的一种实现, 具有最终一致性.下面以客户购买商品时的付款操作为例进行讲解: Try:完成所有的业务检查(一致性),预留必须业务资源(准隔离性);体现在本例中, 就是确认客户账户余额足够支付(一致性), 锁住客户账户, 商户账户(准隔离性). Confirm:使用Try阶段预留的业务资源执行业务(业务操作必须是幂等的),

5、 如果执行出现异常, 要进行重试.在这里就是执行客户账户扣款, 商户账户入账操作. Cancle:释放Try阶段预留的业务资源, 在这里就是释放客户账户和商户账户的锁;如果任一子业务在Confirm阶段有操作无法执行成功, 会造成对业务活动管理器的响应超时, 此时要对其他业务执行补偿性事务. 如果补偿操作执行也出现异常, 必须进行重试, 若实在无法执行成功, 则事务管理器必须能够感知到失败的操作, 进行log(用于事后人工进行补偿性事务操作或者交由中间件接管在之后进行补偿性事务操作).优点对比与前面提到的两阶段提交法, 有两大优势: TCC能够对分布式事务中的各个资源进行分别锁定, 分别提交与

6、释放,例如, 假设有AB两个操作, 假设A操作耗时短, 那么A就能较快的完成自身的try-confirm-cancel流程, 释放资源. 无需等待B操作. 如果事后出现问题, 追加执行补偿性事务即可. TCC是绑定在各个子业务上的(除了cancle中的全局回滚操作), 也就是各服务之间可以在一定程度上”异步并行”执行.注意事项 事务管理器(协调器)这个节点必须以带同步复制语义的高可用集群(HAC)方式部署. 事务管理器(协调器)还需要使用多数派算法来避免集群发生脑裂问题.适用场景 严格一致性 执行时间短 实时性要求高举例: 红包, 收付款业务.异步确保型通过将一系列同步的事务操作变为基于消息执

7、行的异步操作, 避免了分布式事务中的同步阻塞操作的影响.这个方案真正实现了两个服务的解耦, 解耦的关键就是异步消息和补偿性事务.这里以一个例子作为讲解:执行步骤如下:1. MQ发送方发送远程事务消息到MQ Server;2. MQ Server给予响应, 表明事务消息已成功到达MQ Server.3. MQ发送方Commit本地事务.4. 若本地事务Commit成功, 则通知MQ Server允许对应事务消息被消费; 若本地事务失败, 则通知MQ Server对应事务消息应被丢弃.5. 若MQ发送方超时未对MQ Server作出本地事务执行状态的反馈, 那么需要MQ Servfer向MQ发送方

8、主动回查事务状态, 以决定事务消息是否能被消费.6. 当得知本地事务执行成功时, MQ Server允许MQ订阅方消费本条事务消息.需要额外说明的一点, 就是事务消息投递到MQ订阅方后, 并不一定能够成功执行. 需要MQ订阅方主动给予消费反馈(ack) 如果MQ订阅方执行远程事务成功, 则给予消费成功的ack, 那么MQ Server可以安全将事务消息移除; 如果执行失败, MQ Server需要对消息重新投递, 直至消费成功.注意事项 消息中间件在系统中扮演一个重要的角色, 所有的事务消息都需要通过它来传达, 所以消息中间件也需要支持 HAC 来确保事务消息不丢失. 根据业务逻辑的具体实现不

9、同,还可能需要对消息中间件增加消息不重复, 不乱序等其它要求.适用场景 执行周期较长 实时性要求不高例如: 跨行转账/汇款业务(两个服务分别在不同的银行中) 退货/退款业务 财务, 账单统计业务(先发送到消息中间件, 然后进行批量记账)最大努力通知型这是分布式事务中要求最低的一种, 也可以通过消息中间件实现, 与前面异步确保型操作不同的一点是, 在消息由MQ Server投递到消费者之后,允许在达到最大重试次数之后正常结束事务.适用场景交易结果消息的通知等.小结不管是同步事务中的事务管理器(协调者), 还是异步事务中使用的消息中间件,若要达到一致性保证,都需要使用带有同步复制语义的 HAC 提供的高可用和高可靠特性,这些都是以性能为代价的,无疑成为了SOA 架构中的典型性能瓶颈之一.;.

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:文库网官方知乎号:文库网

经营许可证编号: 粤ICP备2021046453号世界地图

文库网官网©版权所有2025营业执照举报