之前开发springCloud微服务,遇到微服务之间调用事务回滚问题,网上浏览存在多种解决方案。但是最后发现,实现服务回滚的多个服务必须要在同一个注册中心下,也就是说,必须要有一个主服务管理者所有的分布式服务。
如果!两个服务之间不存在任何关联,如何实现事务回滚?
苦思冥想,终于想到了一个不是办法的办法。
在服务A调用服务B时,先获取当前时间,将当前时间作为调用服务B的请求参数。
服务B获取服务A的参数时,先执行一系列逻辑业务操作,到接口执行到最后,服务B也获取当前时间。然后和服务A请求参数
的时间做差运算。得到时间差
我们进行服务调用无非是使用rest或者rpc ,可以设置调用接口限时。
在服务B判断得到的时间差是否大于等于接口限时,如果大于等于则服务B抛出异常,由于服务B抛出了异常,则调用者服务A‘
也自然抛出异常,这样就避免了因为网络延迟,或者业务复杂执行时间长而造成的事务为题。
当然这样做,被调用服务需要写判断代码。