美文网首页
分布式事务方案

分布式事务方案

作者: Ethan_zyc | 来源:发表于2021-07-29 12:31 被阅读0次

    XA方案/两阶段提交方案

    这个可以看我之前发的分布式事务之2PC和3PC
    2PC主要使用场景是一个系统中有多个数据源,这多个数据源之间需要事务去保证数据的一致性,具体方案就是JTA 使用JTA实现多数据源的事务管理。 但开发中不建议直接操作别的数据库,多数据源很多都是为了查询数据,不会设计到增删改数据,所以不常用。

    TCC方案

    try - confirm - cancel 拿银行转账举例子:

    1. try:资金校验、冻结

    2. confirm:转账

    3. cancel:如果转账失败手动补偿/恢复数据

    适用场景,对一致性要求极高

    本地消息表方案

    image
    1. A系统先插入业务表处理A系统中的业务逻辑,再插入消息表,状态是待确认,在zk中对orderId=xx的node进行监听

    2. 通过mq发消息给B系统

    3. B系统先插入消息表,并且防止重复消费,必须保证幂等性

    4. B系统进行业务操作,如果成功,修改消息表中的值,修改zk中的值,A系统监听到后,修改消息表中的值

    5. B系统如果失败了,就不会修改消息表,A系统会轮询A系统的消息表,超时没有成功的会再次发送,超时时间和重试次数根据自己业务情况来定

    缺点:大量依赖消息表,高并发场景下不适用

    可靠消息最终一致性方案

    image

    为了高并发,舍弃消息表,基于MQ来实现事务,阿里的RocketMQ就支持事务

    最大努力通知方案

    image

    系统A执行完会发送消息到MQ,MQ通知最大努力通知系统,然后最大努力通知系统会记录这个消息,发给系统B,直到成功,或者到达最大重试次数。

    总结

    尽量避免分布式事务。

    相关文章

      网友评论

          本文标题:分布式事务方案

          本文链接:https://www.haomeiwen.com/subject/sgbxvltx.html