我们知道,应用系统在分布式的情况下,在通信时会有着一个显著的问题,即一个业务流程往往需要组合一组服务,且单单一次通信可能会经过 DNS 服务,网卡、交换机、路由器、负载均衡等设备,而这些服务于设备都不一定是一直稳定的,在数据传输的整个过程中,只要任意一个环节出错,都会导致问题的产生。
这样的事情在微服务下就更为明显了,因为业务需要在一致性上的保证。也就是说,如果一个步骤失败了,要么不断重试保证所有的步骤都成功,要么回滚到以前的服务调用。
因此我们可以对业务补偿的过程进行一个定义,即当某个操作发生了异常时,如何通过内部机制将这个异常产生的「不一致」状态消除掉。
一、关于业务补偿机制
1、什么是业务补偿
我们知道,应用系统在分布式的情况下,在通信时会有着一个显著的问题,即一个业务流程往往需要组合一组服务,且单单一次通信可能会经过 DNS 服务,网卡、交换机、路由器、负载均衡等设备,而这些服务于设备都不一定是一直稳定的,在数据传输的整个过程中,只要任意一个环节出错,都会导致问题的产生。
这样的事情在微服务下就更为明显了,因为业务需要在一致性上的保证。也就是说,如果一个步骤失败了,要么不断重试保证所有的步骤都成功,要么回滚到以前的服务调用。
因此我们可以对业务补偿的过程进行一个定义,即当某个操作发生了异常时,如何通过内部机制将这个异常产生的「不一致」状态消除掉。
2、业务补偿设计的实现方式
业务补偿设计的实现方式主要可分为两种:
回滚(事务补偿) ,逆向操作,回滚业务流程,意味着放弃,当前操作必然会失败;
重试 ,正向操作,努力地把一个业务流程执行完成,代表着还有成功的机会。
一般来说,业务的事务补偿都是需要一个工作流引擎的。这个工作流引擎把各式各样的服务给串联在一起,并在工作流上做相应的业务补偿,整个过程设计成为最终一致性的。
Ps:因为「补偿」已经是一个额外流程了,既然能够走这个额外流程,说明时效性并不

本文探讨了分布式系统中业务补偿的重要性,包括回滚和重试的实现方式。业务补偿旨在消除异常操作导致的不一致状态,回滚通过事务补偿和逆向操作恢复服务调用前的状态,而重试则尝试在临时故障时确保业务流程的完成。文中还讨论了重试策略如立即重试、固定间隔、增量间隔、指数间隔和抖动策略,并强调了幂等性和补偿设计的注意事项。
最低0.47元/天 解锁文章
1199

被折叠的 条评论
为什么被折叠?



