美文网首页
微服务下事物一致性

微服务下事物一致性

作者: 太大_453b | 来源:发表于2018-04-25 16:28 被阅读38次

    微服务下事物一致性探究

    什么是微服务

    • 普通IT系统的缺点
    1. 开发维护成本高
    2. 各模块互相调用,导致应用的解耦性差
    3. 容易出现性能瓶颈
    • 微服务概念

    将所有的服务都进行拆分独立,服务之间互相调用这样实现了

    1. 服务解耦
    2. 便于维护
    3. 代码上的吞吐性大大的增加

    微服务架构上结构清晰,但也带来了一定问题比如本文要说的:事物一致性

    在单例上只要Translation即可解决

    @Translation
    public void do(){
        updateA();
        updateB();
    }
    

    但是如果updateA 和 B是分布是不同的服务,对应的数据库也是不同的实例又如何处理呢?

    解决办法

    • Translation Controller


      image

    如图所以在发起一次请求的时候分四步走prepare -> execute -> yes -> 两个都是yes才执行commit

    缺点:性能较差,每次都要请求四次

    • 消息队列解决方案
    1. 在A数据库进行update的时候同时生成一条message(消息)当Acommit后对该消息进行发送
    2. B服务在拿到该消息后验证是否已经执行过,如果没有则执行updateB,然后commit
    3. 如果在消息发送的时候A服务挂了,导致消息没发送,则需要一个《消息确认系统》来做这块的工作,在服务重启后,对该操作进行查找是否发送了消息,如果没有则继续发送
    4. 完美实现了消息和应用的解耦

    相关文章

      网友评论

          本文标题:微服务下事物一致性

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