java不是分布式的两个服务之间调用,如何实现事务回滚?

       之前开发springCloud微服务,遇到微服务之间调用事务回滚问题,网上浏览存在多种解决方案。但是最后发现,实现服务回滚的多个服务必须要在同一个注册中心下,也就是说,必须要有一个主服务管理者所有的分布式服务。

       如果!两个服务之间不存在任何关联,如何实现事务回滚?

       苦思冥想,终于想到了一个不是办法的办法。

       在服务A调用服务B时,先获取当前时间,将当前时间作为调用服务B的请求参数。

       服务B获取服务A的参数时,先执行一系列逻辑业务操作,到接口执行到最后,服务B也获取当前时间。然后和服务A请求参数

的时间做差运算。得到时间差

        我们进行服务调用无非是使用rest或者rpc  ,可以设置调用接口限时。

        在服务B判断得到的时间差是否大于等于接口限时,如果大于等于则服务B抛出异常,由于服务B抛出了异常,则调用者服务A‘

也自然抛出异常,这样就避免了因为网络延迟,或者业务复杂执行时间长而造成的事务为题。

        当然这样做,被调用服务需要写判断代码。

          

         

       

猜你喜欢

转载自blog.csdn.net/zhanglei082319/article/details/82594195