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。只有消息被消费,整个交易才能算是完整完结。

     

  • 相关阅读:
    《软件需求十步走》读书笔记二
    《软件需求十步走》读书笔记一
    FJUTOJ-周赛2016-12-16
    FJUTOJ-周赛2016-11-25
    网络爬虫
    树链剖分讲解
    HDU 5266 pog loves szh III
    HDU 3518 Boring counting
    HDU 5929 Basic Data Structure
    HDU 1055 Color a Tree
  • 原文地址:https://www.cnblogs.com/MasterLin/p/15343328.html
Copyright © 2011-2022 走看看