HelloCoder HelloCoder
首页
《Java小白求职之路》
《小白学Java》
计算机毕设
  • 一些免费计算机资源
  • 脚手架工具
  • 《从0到1学习Java多线程》
  • 《从0到1搭建服务器》
随笔
关于作者
首页
《Java小白求职之路》
《小白学Java》
计算机毕设
  • 一些免费计算机资源
  • 脚手架工具
  • 《从0到1学习Java多线程》
  • 《从0到1搭建服务器》
随笔
关于作者
  • 《LearnJavaToFindAJob》

    • 导读

    • 【初级】6~12k档

    • 【中级】12k-26k档

      • JVM进阶

      • Java进阶

      • MySQL

      • 中间件

      • 算法

      • 高阶

        • select、poll、epoll的区别
        • 什么是mmap?
        • 零拷贝
        • 项目深度

          • A调用B,B调用C,如何确保一致性?
          • 你知道怎么分库分表吗?如何做到永不迁移数据和避免热点吗?
          • 在读多写少的情况下,如何优化MySQL的数据查询方案
          • 对分库分表的理解,为什么要分库分表?
          • 对读写分离的理解,为什么要读写分离?
          • 线上死锁怎么排查?
          • 高并发系统的设计
    • 【高级】26k+档

    • 大厂面试题

    • 求职建议

    • 面经

  • LearnJavaToFindAJob
  • 【中级】12k-26k档
  • 高阶
  • 项目深度
#A #BB #C #调用
码农阿雨
2022-06-02

A调用B,B调用C,如何确保一致性?

\1. MQ:无论A、B、C监听事件失败消息,并针对不同业务类型和业务id进行回滚操作即可

\2. TCC:每个服务都开发T、C、C三种类型的接口,A调用B的Try操作成功,当B调用C的Try失败次数达到阈值后,先执行自己的业务Cancel方法,然后调用A的Cancel接口

Try—Confirm—Cancel

参考:https://zhuanlan.zhihu.com/p/61129707

\3. 软状态:A调用B的时候执行为预操作状态,B调用C如果成功也执行为预操作状态,这样无论哪一环出了问题,都不会影响业务数据的一致性。因为中间状态的数据,对于业务一定是不可用的状态。我们只需要在调用失败的时候做出相应的通知等其他处理策略即可(比如通知+人工,定时任务处理软状态等)。如果都执行为预操作状态成功,再触发修改为执行状态

允许重试,比如说马上重试,重试多次后无果则判定失败,又或者通过定时任务查询。

阅读全文
×

(为防止恶意爬虫)
扫码或搜索:HelloCoder
发送:290992
即可永久解锁本站全部文章

解锁
#A#BB#C#调用
上次更新: 2025-02-21 06:04:57
最近更新
01
《LeetCode 101》
02-21
02
IDEA、Golang、Pycharm破解安装
02-21
03
《LeetCode CookBook》
02-21
更多文章>
Theme by Vdoing | Copyright © 2020-2025 码农阿雨
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式