zoukankan      html  css  js  c++  java
  • 分布式事务

    随着我们系统变大,我们进行了微服务架构的改造,因为每个微服务独占了一个数据库实例,从 user_id = 1 发起的转帐动作,跨越了两个微服务:pay 和 balance 服务。
    我们需要保证,跨多个服务的步骤数据一致性:
    微服务 pay 的支付宝表扣除1万;
    微服务 balance 的余额宝表增加1万
    每个系统都对应一个独立的数据源,且可能位于不同机房,同时调用多个系统的服务很难保证同时成功,这就是跨服务分布式事务问题。
    我们系统应该能保证每个服务自身的 ACID,基于这个假设,我们事务消息解决分布式事务问题。

     

    如何可靠的保存消息凭证?
    要解决消息可靠存储,我们实际上需要解决的问题是,本地的 mysql 存储和 message 存储的一致性问题。
    Transactional outbox
    Polling publisher
    Transaction log tailing
    2PC Message Queue
    事务消息一旦被可靠的持久化,我们整个分布式事务,变为了最终一致性,消息的消费才能保障最终业务数据的完整性,所以我们要尽最大努力,把消息送达到下游的业务消费方,称为:Best Effort。只有消息被消费,整个交易才能算是完整完结。

     

  • 相关阅读:
    SpringDataRedis 常用命令
    Java 连接 Redis
    Java 循环标记
    初学Docker
    线程池,进程和线程的理解
    Linux-定时器任务
    Linux 命令2
    Linux命令
    Java基础整理
    微服务简介
  • 原文地址:https://www.cnblogs.com/MasterLin/p/15343328.html
Copyright © 2011-2022 走看看