订单请求接口设计,避免timeout超时问题 下单解决
订单请求接口设计,避免timeout超时问题 下单解决
https://www.cnblogs.com/oktokeep/p/17668039.html
1.第一步
中间表数据 & 取消接口 两件事情分开,不要因为中间表缺失数据,而影响到取消的操作。
2.第二步
中间表数据兼容,不存在的时候才新增,同时兼容存在多条记录的情况 同时兼容多条的记录,按最新的排序取第一条来处理。
测试通过: 下单 》》 订单推送(订单同步到第三方系统) 》》需要流程来测试。 完整流程才可以确保少出错!!! 测试发现下单是成功了,但是订单推送同步因为缺失中间表的数据而异常了。
3.第三步
>>> 结论: redis锁定的时间,需要大于接口超时的时间。目前是10秒 redis
桥接过来的数据,需要等待数据落库。及接口的事务提交完成。
<<<
日志请求链路明细: 13:30:00 订单下单 超时时间,需要分析完整的日志 2023-09-11 09:10:06 2023-09-11 09:09:15.046 请检查姓名和身份证号码是否一致 2023-09-11 09:09:19.921 请检查姓名和身份证号码是否一致 2023-09-11 09:10:05.186 2023-09-11 09:10:14.915 请勿重复提交! 2023-09-11 09:10:20.696 feign.RetryableException: Read timed out executing POST 15秒 接口超时 10秒 redis 2023-09-11 09:10:21.740 新的请求 2023-09-11 09:10:22.255 您在该时间段内已订单,请勿重复下单。 >>> 结论: redis锁定的时间,需要大于接口超时的时间。目前是10秒 redis(简单的理解:锁定的时间包的住接口超时的时间,这样可以避免请求方因为超时而频繁请求。) 桥接过来的数据,需要等待数据落库。及接口的事务提交完成。 <<<
更改调用方 15000 修改成 9000 redis锁定10秒,更改的是调用方的Apollo配置,而不是服务提供方的Apllo配置。( A调用B,更新的是A的配置) hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds = 9000 ribbon.ReadTimeout = 9000 ribbon.ConnectTimeout = 9000
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· 地球OL攻略 —— 某应届生求职总结