当前位置: 首页 > news >正文

建设网站审核电子工程网官网

建设网站审核,电子工程网官网,万网网站流量,中国软件100强企业上一次我们讲解了分布式事务的 2PC、3PC 。那么这次我们来理一下 TCC 事务。本次还是讲解 TCC 的原理跟 .NET 其实没有关系。TCC Try 准备阶段#xff0c;尝试执行业务Confirm 完成业务Cancel 回滚准备阶段的业务TCC 事务其实是 2PC 的一个扩展。上一次我们说了 2PC #xff… 上一次我们讲解了分布式事务的 2PC、3PC 。那么这次我们来理一下 TCC 事务。本次还是讲解 TCC 的原理跟 .NET 其实没有关系。TCC Try 准备阶段尝试执行业务Confirm 完成业务Cancel 回滚准备阶段的业务TCC 事务其实是 2PC 的一个扩展。上一次我们说了 2PC 在二阶段进行事务提交。因为 2PC 基本上是利用数据库的 事务能力进行 commit 其实这里还有可能出现一种 rollback 情况。TCC 就是把 2PC 的二阶段细化了拆分成了 Confirm 跟 Cancel 两个步骤。TCC 是 2PC 的一次进化TCC 拆分二阶段后已经不局限于数据库事物了它可以适用于非数据库事物的场景。因为我们的 Cancel 阶段可以进行更加复杂的回滚能力业务补偿能力。TCC 可以认为是业务层面的2PC 。下面我们以使用客户积分兑换房间为示例说明一下 TCC 事务。Try 为完成 TCC 事务的 Try 阶段我们需要在房间上增加一个状态字段“是否锁定”一旦锁定其它订单就没有办法预定这间房间。同样我们需要在用户积分表上增加一个字段“冻结积分”如果涉及到并发可能要单独拉一张表出来。这里简化一点就加个字段吧。Try阶段开始订单服务把房间设置为锁定状态积分服务把用户的积分减去消耗的积分同时把消耗的积分暂存在冻结字段上。Confirm 如果一阶段都提交成功了那么所有的服务都开始进入 Confirm 阶段。订单服务把房间状态更改为“已预定”状态积分服务把冻结的积分清0。这样整个事务都成功完成了。Cancel 如果一阶段某个服务没有 Try 成功那么所有的服务都要进入Cancel阶段。比如订单服务锁定房源成功了积分冻结的时候失败了那么订单服务要进入 Cancel 阶段把房间的的锁定状态取消从新释放出来。如果锁定房源失败了积分扣减成功了那么 Cancel 阶段就要把扣减的积分给加回去。TCC 的一些问题 异常如果 Confirm 阶段出现异常TCC 管理器会不断的重试这个阶段直到成功。因为理论上认为只要 Try 是成功的那么 Confirm 阶段一定会成功。因为所需要的资源已经在 Try 阶段冻结了。如果 Cancel 阶段出现异常那么 TCC 管理器也会不断的重试这个阶段来解除冻结的资源。冥等因为 TCC 有重试机制所以所有的接口都需要实现幂等避免多次调用对业务数据产生错误。比如多次扣款多次下订单等。并发问题因为 TCC 事务在 Try 阶段对资源是完全的提交状态并没有像 2PC 那样使用数据库事物来对资源进行锁定所以在并发的时候对资源的修改要格外注意。在处理业务的时候要时刻注意锁定的资源对业务造成的一影响。允许空取消TCC 事务在一阶段 Try 的时候失败要运行进行 Cancel 提交。这时候 Cancel 其实是不需要做任何补偿操作我们称之为空取消。这个时候也要注意在编写 Cancel 操作的时候要时刻注意到底有没有完成 Try 操作如果没有完成 Try 操作则要进行空取消。预付悬挂TCC 按流程上来说是不会出现悬挂情况的。但是有一种特殊情况会造成资源的悬挂。按照正常流程我们的 Try 阶段总是先于 Cancel 执行的。但是由于网络拥堵的问题造成 Try 调用延迟了TCC 管理器在一定时间没收到 Try 成功响应后会发送 Cancel 调用这个 Cancel 就有可能在 Try 之前先被调用了。在 Cancel 执行成功后 这个 Try 请求调用才到达服务这个时候如果 Try 被执行成功那么就会造成资源的悬挂。所以当编写 Try 代码的时候同意需要注意是不是已经调用过 Cancel 操作了。总结 TCC 事务是 2PC 的一种升级。TCC 相对于 2PC 不再依赖于本地数据库事物能力它可以使用于应用层面的事务。它把 2PC 的提交跟回滚操作明确的抽象成 Confirm 跟 Cancel 。TCC 事务在逻辑上是比较清晰的。但是 TCC 使用起来也有不方便的地方就是它对代码入侵比较强比较繁琐。每个业务都要强制拆分成3个方法。而且还要还要注意幂等空取消悬挂等问题。相关文章 NET Core with 微服务 - 什么是微服务.Net Core with 微服务 - 架构图.Net Core with 微服务 - Ocelot 网关.Net Core with 微服务 - Consul 注册中心.Net Core with 微服务 - Seq 日志聚合.Net Core with 微服务 - Elastic APM.Net Core with 微服务 - Consul 配置中心.Net Core with 微服务 - Polly 熔断降级.Net Core with 微服务 - 分布式事务 - 2PC、3PC关注我的公众号一起玩转技术
http://www.pierceye.com/news/39258/

相关文章:

  • 云虚拟主机做二个网站顺德装修网站建设
  • 做物流网站的公司哪家好推广怎么做
  • 南昌 网站购物网站需要做的功能
  • 环球易购招聘网站建设seo优化排名易下拉程序
  • 毕业设计代做网站机械wordpress 云服务器
  • 建网站价格 建设网站需要多少钱关于茶叶网站模板
  • 网站推广方案编写肇庆网站建设制作公司
  • 西班牙语网站设计公司哪家好微信公众号做微网站
  • 自己做图片上传网站wordpress添加微博
  • 手机网站建设合同python网站开发架构
  • 专业的营销型网站制作网站显示内容不显示
  • 旅游景点网站建设现状制作小程序需要什么技术
  • 宜春市城乡规划建设局网站苏州快速建站模板
  • 网站活动策划方案建设银行网上官方网站
  • 织梦pc怎么做手机网站wordpress后台多媒体不显示缩
  • 垂直汽车网站做电商的优势wordpress 单页面主题
  • 做网站建设公司crm在线的提升服务dw制作简单网页
  • 青岛新公司网站建设推广太原seo排名收费
  • 福建百度seo排名点击软件南城网站优化公司
  • 网站建设需要提供那些资料宽带公司
  • 优化网站seo方案网站一定要备案
  • 网站建设新手看什么书网站建设合同的要素
  • 涉县移动网站建设报价南和网站建设公司太原网站建设
  • 怎样低成本做网站推广网站设计与开发的基本步骤包括哪些?
  • 用织梦做手机移动版网站镇江制作网页图片
  • 网站建设网站排名广州网站开发公司哪家好
  • 汽车网站模块网站编辑有前途吗
  • 网站怎么更改关键词国内炫酷的网站首页
  • 镇江教育云网站建设合肥网站推广公司
  • 自建网站怎么做二级页跳转wordprees可以做棋类网站吗