订单请求接口设计,避免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
订单请求接口设计,避免timeout超时问题 下单解决的更多相关文章
- MySql数据库 timeout超时报警的解决方法
今天做查询mysql数据库是,因为数据量大所以报错 最后在 连接的地方做了如下改动: MySqlCommand cmd = new MySqlCommand(procedureName, conn); ...
- HTTP请求的python实现(urlopen、headers处理、 Cookie处理、设置Timeout超时、 重定向、Proxy的设置)
python实现HTTP请求的三中方式:urllib2/urllib.httplib/urllib 以及Requests urllib2/urllib实现 urllib2和urllib是python两 ...
- 如何写出安全的API接口(参数加密+超时处理+私钥验证+Https)- 续(附demo)
上篇文章说到接口安全的设计思路,如果没有看到上篇博客,建议看完再来看这个. 通过园友们的讨论,以及我自己查了些资料,然后对接口安全做一个相对完善的总结,承诺给大家写个demo,今天一并放出. 对于安全 ...
- atitit.基于http json api 接口设计 最佳实践 总结o7
atitit.基于http json api 接口设计 最佳实践 总结o7 1. 需求:::服务器and android 端接口通讯 2 2. 接口开发的要点 2 2.1. 普通参数 meth,p ...
- iOS开发-网络-合理封装请求接口
概述 如今大多App都会与网络打交道,作为开发者,合理的对网络后台请求接口进行封装十分重要.本文要介绍的就是一种常见的采用回调函数(方法)的网络接口封装,也算的是一种构架吧. 这个构架主要的idea是 ...
- App接口设计原则-b
1.记住密码不是真的让你记住密码,这里仅仅指的是一种自动登录的手段.不管在任何地方,明文存储的密码都是安全隐患,是必须尽量避免的.你可以采用某种方式对用户名.密码以及时间戳(重要)进行签名,再次登录时 ...
- timeout超时时长优化和hystrix dashboard可视化分布式系统
在生产环境中部署一个短路器,一开始需要将一些关键配置设置的大一些,比如timeout超时时长,线程池大小,或信号量容量 然后逐渐优化这些配置,直到在一个生产系统中运作良好 (1)一开始先不要设置tim ...
- API接口设计
1.场景描述 比如说我们要做一款APP,需要通过api接口给app提供数据.假设我们是做商城,比如我们卖书的.我们可以想象下这个APP大概有哪些内容: 1)首页:banner区域(可以是一些热门书籍的 ...
- 基于小程序请求接口 wx.request 封装的类 axios 请求
基于小程序请求接口 wx.request 封装的类 axios 请求 Introduction wx.request 的配置.axios 的调用方式 源码戳我 feature 支持 wx.reques ...
- Java生鲜电商平台-API接口设计之token、timestamp、sign 具体架构与实现(APP/小程序,传输安全)
Java生鲜电商平台-API接口设计之token.timestamp.sign 具体设计与实现 说明:在实际的业务中,难免会跟第三方系统进行数据的交互与传递,那么如何保证数据在传输过程中的安全呢(防窃 ...
随机推荐
- [Gin] 传统 for 循环中的语义通用化,在 golang 中使用分号 ; 替代 && 流程控制
// gin.go // HandlerFunc defines the handler used by gin middleware as return value. type HandlerFun ...
- dotnet 6 引用 NAudio 的旧版本构建不通过
本文告诉大家在使用 NAudio 的旧版本导致构建不通过问题,解决方法是升级到 1.10 或以上版本 在更新 dotnet 6 项目时,使用了 NAudio 的旧版本,构建失败,提示 MC1000 如 ...
- 多个docker容器如何共享网络
目录 多个docker容器如何共享网络 一.创建共享网络 二.docker-compose 启动容器共享网络 参考文档: 多个docker容器如何共享网络 一.创建共享网络 无论哪种方式,第一步都是创 ...
- gin 图片上传到本地或者oss
路由层 func registerCommonRouter(v1 *gin.RouterGroup) { up := v1.Group("upload") { up.POST(&q ...
- SQL函数详解SUM\COUNT\AVG......
朋友们,个人公众号:SQL数据库运维 移动端的学习分享,各种数据库基础知识,一起进步,共同学习,期待你的加入. 函数的类型 1.聚合函数:对一组值执行计算,并返回单个值,也被称为组函数.聚合函数经常与 ...
- ContextCapture-硬件配置推荐
ContextCapture倾斜摄影的空三计算.三维建模应用.非常耗费硬件资源,适当调整硬件配置,可以显著提高模型处理时间. 硬件常见问题 随着倾斜摄影建模算法成熟,应用越来越广泛,数据量越来越大,需 ...
- flex布局方案
参考:https://blog.csdn.net/weixin_39717076/article/details/82586915
- synchronized原理-字节码分析、对象内存结构、锁升级过程、Monitor
本文分析的问题: synchronized 字节码文件分析之 monitorenter.monitorexit 指令 为什么任何一个Java对象都可以成为一把锁? 对象的内存结构 锁升级过程 Moni ...
- 探索Django:从项目创建到图片上传的全方位指南
Django是什么 Django 是一个流行的 Python Web 开发框架,它提供了一系列工具和库,用于帮助开发人员构建高效.可扩展的 Web 应用程序.Django 的目标是让开发者能够以快速和 ...
- 若依报错:登录状态已过期,您可以继续留在该页面,或者重新登录;When allowCredentials is true, allowedOrigins cannot contain the special value "*" since that cannot be set on the "Access-Control-Allow-Origin" response header.
报错界面 后台报错 java.lang.IllegalArgumentException: When allowCredentials is true, allowedOrigins cannot c ...