大佬们,一个业务调用多个第三方接口 推荐使用seata哪种模式?

大佬们,一个业务调用多个第三方接口 推荐使用seata哪种模式?

展开
收起
真的很搞笑 2023-03-18 19:19:15 720 分享 版权
3 条回答
写回答
取消 提交回答
  • at+tcc,此回答整理自钉群“Seata(分布式事务)”

    2023-03-22 10:23:31
    赞同 展开评论
  • 发表文章、提出问题、分享经验、结交志同道合的朋友

    Seata 是一个开源的分布式事务解决方案,支持多种模式,比较适合调用多个第三方接口的模式是** TCC 模式**。

    在 TCC 模式下,业务逻辑会被拆分成三个阶段:Try、Confirm 和 Cancel。当你需要调用多个第三方接口时,可以将每个第三方接口的调用拆分成一个个单独的 Try 阶段。在每个 Try 阶段中,你需要对当前调用的第三方接口进行预留资源或者进行检查,确保当前业务能够完成。如果所有的 Try 都执行成功,那么就会进行 Confirm 阶段,用来确认预留资源并提交结果。如果其中一个 Try 执行失败,那么就会执行 Cancel 阶段,用来撤销之前的操作。

    使用 TCC 模式的好处在于可以控制事务的粒度,避免了因为单个接口调用失败而导致整个业务流程的回滚,提高了分布式事务的效率和可靠性。

    2023-03-19 20:18:40
    赞同 展开评论
  • 十年摸盘键,代码未曾试。 今日码示君,谁有上云事。

    Seata 是阿里开源的分布式事务框架,属于二阶段提交模式。

    Seata 目前支持 AT 模式、XA 模式、TCC 模式和 SAGA 模式,AT是阿里首推的模式,因为AT模式是一个阉割版本,阿里云有上有的GTS。

    AT模式很多功能都依赖于SDK的实现,在面向云原生时代,AT 模式方向将是 SDK 的轻量化和标准化,把大部分能力下沉到代理层(Agent 或 Sidecar 的形式),让应用只需要很简单的 SDK 和标准的 SQL 就可以工作。同时AT模式的条件是数据库本身必须支持本地事务,还有表必须定义主键,用来生成前置镜像和后置镜像进行回滚。

    TCC 是分布式事务中的二阶段提交协议,它的全称为 Try-Confirm-Cancel,即资源预留(Try)、确认操作(Confirm)、取消操作(Cancel),他们的具体含义如下: 1. Try:对业务资源的检查并预留; 2. Confirm:对业务处理进行提交,即 commit 操作,只要 Try 成功,那么该步骤一定成功; 3. Cancel:对业务处理进行取消,即回滚操作,该步骤回对 Try 预留的资源进行释放。

    TCC 是一种侵入式的分布式事务解决方案,以上三个操作都需要业务系统自行实现,对业务系统有着非常大的入侵性,设计相对复杂,但优点是 TCC 完全不依赖数据库,能够实现跨数据库、跨应用资源管理,对这些不同数据访问通过侵入式的编码方式实现一个原子操作,更好地解决了在各种复杂业务场景下的分布式事务问题。

    TCC 模式在 Seata 中也是遵循 TC、TM、RM 三种角色模型的,

    2023-03-18 21:21:48
    赞同 1 展开评论
问答标签:
问答地址:

阿里云拥有国内全面的云原生产品技术以及大规模的云原生应用实践,通过全面容器化、核心技术互联网化、应用 Serverless 化三大范式,助力制造业企业高效上云,实现系统稳定、应用敏捷智能。拥抱云原生,让创新无处不在。

收录在圈子:
+ 订阅
阿里云 云原生应用平台 肩负阿里巴巴集团基础设施云化以及核心技术互联网化的重要职责,致力于打造稳定、标准、先进的云原生产品,成为云原生时代的引领者,推动行业全面想云原生的技术升级,成为阿里云新增长引擎。商业化产品包括容器、云原生中间件、函数计算等。
还有其他疑问?
咨询AI助理