首页 > 其他分享 >如果防止feign的超时调用造成多次扣减库存

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

时间:2024-09-22 14:24:46浏览次数:8  
标签:feign 调用 服务 库存 扣减 超时

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

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

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

 

标签:feign,调用,服务,库存,扣减,超时
From: https://www.cnblogs.com/gaogao66/p/18425247

相关文章

  • 帝国CMS后台登录超时的解决办法
    帝国CMS后台登录超时的解决办法帝国CMS后台登录超时通常是由多种因素引起的,包括服务器性能、网络延迟、配置文件设置不当等。以下是一些具体的解决办法:1.检查服务器性能CPU和内存使用情况:确保服务器的CPU和内存使用情况正常,没有过载。磁盘I/O:检查磁盘I/O是否正常,没有出现瓶......
  • 微服务架构---Ribbon\Feign
    Ribbon(负载均衡)Ribbon概述在SpringCloud中,Nacos⼀般配合Ribbon进行使用,Ribbon提供了客户端负载均衡的功能,Ribbon利用从Nacos中读取到的服务信息,在调用服务节点提供的服务时,会合理的进行负载。Ribbon作用1.服务调用基于Ribbon实现服务调用,是通过拉取到的所有服务列......
  • Spring Cloud全解析:服务调用之Feign的执行流程
    Feign的执行流程首先通过@EnableFeignClients注解开启Feign功能,程序启动时开启对@FeignClient注解的扫描@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.TYPE)@Documented@Import(FeignClientsRegistrar.class)public@interfaceEnableFeignClients当接口......
  • springcloud组件openfeign超时时间设置
    openfeign超时时间设置有两种方式1、通过配置类;2、通过配置文件1、使用配置类代码如下:@ConfigurationpublicclassFeignConfig{@BeanpublicRequest.Optionsoptions(){//第一个参数是连接超时时间,第二个参数是处理超时时间returnnewReque......
  • 关于springcloud中openfeign中服务调用日志输出
    在使用openfeign进行服务调用的时候,我们可以通过一些配置,获取到服务调用的日志输出,可以从消费端看到日志有两种方法:一、使用配置类;二、使用配置文件配置日志输出级别有四种:NONE:不输出(默认)BASIC:只输出请求方式、url、请求成功与否HEADERS:输出请求头的部分信息等FULL:BASIC+HEA......
  • msyql排查锁超时和死锁
    一、锁超时先查看当前事务,看看有没有事务时间超时的SELECT*FROMINFORMATION_SCHEMA.INNODB_TRX;查到如下结果:INSERTINTOinformation_schema.INNODB_TRX(trx_id,trx_state,trx_started,trx_requested_lock_id,trx_wait_started,trx_weight,trx_mysql_th......
  • 线上锁超时排查(手动事务transactionTemplate导致的诡异锁超时)---此篇篇幅很长,带好瓜子
    事情起因起因是某天线上突然不停报锁超时,重启后又会变正常,但是在某个时刻又会重复发生。这个是报错的日志(日志对检测这种bug不一定有用,唯一的作用就是告诉我们啥表被锁了,但是看不出因为啥被锁的)###SQL:INSERTINTOt_check_record(id,create_time,update_time,creator,opera......
  • Spring Cloud 5.4: 将多工程整合成多模块工程-eureka client + openfeign二合一
    截至目前,还剩eurekaclient和openfeign两个工程没有整合,但这两个工程本来就应该是一个工程。想一想,eurekaclient作为微服务的客户端,是真正的微服务业务处理模块;而openfeign工程作为服务间调用的例子,本就应该应用在微服务模块上,所以本章的内容不是单纯移植,而是创建两个服务模块serv......
  • Spring Cloud全解析:服务调用之自定义Feign的配置
    自定义Feign的配置Feign的默认配置类是FeignClientsConfiguration,其内部定义了Feign默认使用的编码器、解码器、契约、重试机制等@Bean@ConditionalOnMissingBeanpublicDecoderfeignDecoder(){//解码器,将字节数组反序列化为方法返回值类型的对象,默认只支持反序列化为St......
  • 优化 OR 条件过多导致的查询超时
    优化OR条件过多导致的查询超时文章目录优化OR条件过多导致的查询超时背景问题分析方案分析方案一:入参去重方案二:分页或者分批查询方案三:UNION代替OR方案四:IN代替OR1.分别对列进行`IN`查询,在代码中进行数据筛选。2.对多列进行`IN`查询。小结方案五:JOIN查......