如果防止feign的超时调用造成多次扣减库存-牛翰网

如果防止feign的超时调用造成多次扣减库存

问题:订单服务在通过feign调用库存服务进行库存扣减的时候,我们知道feign是有超时重试机制的。当出现feign超时,或者网络抖动的时候,订单服务以为上次调用没有成功,即使实际上调用成功了,还是会再次调用。库存服务无法区分是否为同一个操作,导致             相同操作被执行多次,造成多次扣减库存。

解决方案:调用库存服务前,先在redis生成一个操作标识。库存服务真正扣减库存前删除redis中的操作标识,如果删除成功,继续执行,否则直接返回。

  • 分布式系统中,并发请求下保证安全的扣减库存,使用zk分布式锁。
  • 服务间超时重复调用,使用操作标识保证幂等。zk锁是不能区分是否同一个请求的

 

请登录后发表评论

    没有回复内容