zoukankan      html  css  js  c++  java
  • 分布式及分布式事务解决方案

    分布式产生的背景

    1. 传统项目多数据源时;

    2. RPC远程调用中发起方A调用远程接口B成功后,发起方A突然报错(此时B方可能已经提交,A报错后无法再回滚B);

    解决思路:采用最终一致性和2PC或3PC(两阶段提交、三阶段提交),短暂的数据延迟是允许的,但是最终数据要保持一致。

    解决方案

    1. JTA+Atomic,适用于传统项目

    2. 基于MQ补偿解决分布式事务,RabbitMQ

    3.RocketMQ中自带事务消息;
    4.基于LCN解决分布式事务,原理:代理我们自己的数据源重写连接Commit和Rollback方法实现假关闭,传递事务的全局ID;
    5.基于Seata解决分布式事务,原理和LCN一致,
    两者区别:在于回滚的方式,LCN回滚是假关闭容易造成死锁,但是
    seata采用undo log日志逆向生成sql语句实现回滚。

    以上5种方案适合于企业内部项目的服务实现。


    如果是外部和外部的接口解决分布式事务问题,可以采用类似支付宝异步回调方式+主动查询

  • 相关阅读:
    文件拖放
    有关函数传参的结构赋值的理解
    js_点击弹出图片
    js 比较网址与a链接
    css——鼠标经过按钮时样式(radial-gradient)
    文字跳动
    kafka 数据存储和发送
    kafka 消息存储分析
    Kafka 内存管理类BufferPool
    聊聊kafka-client的源码
  • 原文地址:https://www.cnblogs.com/long2050/p/12694690.html
Copyright © 2011-2022 走看看