服务超时总结

介绍

超时
  • 请求超时,客户端给服务端发送请求时超时,此时服务端没有收到客户端的请求;
  • 服务端内部超时,服务端可能存在DB操作、IO操作、调用其他服务超时;
  • 响应超时,服务端给客户端返回响应时超时,此时服务端已经处理了请求。

超时发生需要客户端和服务端如何处理呢?
客户端最常见方法:

  • 重试(前提是服务端接口支持幂等),重试间隔梯度增大,重试次数阈值最大值
  • 不重试直接去查询请求结果状态,根据结果确认是否请求成功,或者什么都不处理,直接认为失败不做进一步处理
  • 具体接口场景具体对待

服务端:

  • 服务端内部如果超时了,应该尽快给客户端返回,告诉客户端超时失败,这个主要是通过服务端内部超时控制来实现,例如:golang http.TimeoutHandler

幂等性

支持接口无限重试主要靠的就是幂等性,实现幂等一般采用流水号机制,相同请求使用同一流水号,流水号的生成要保证全局唯一,有一些算法可以实现,比如snowflake算法,接口处理过的请求流水号需要把流水号存储起来,后续相同流水号请求直接返回已处理,一般将流水号直接放到redis中存储,同时,这种幂等性判断,可以从接口移动到网关中,由网关统一处理,接口开发不需要关注幂等性处理,就像service mesh一样,将通用的一些处理下沉到网关统一处理

引用

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 11,297评论 6 13
  • 在开发过程中,应用程序通常会和其他的应用进行交互,应用系统之间的交互往往离不开网络通信。然而,网络环境是不稳定的,...
    Coding小聪阅读 19,773评论 1 16
  • 微软AzureCAT模式和实践团队发布了9个新的设计模式。这9个设计模式在设计和实现微服务时很有用。 下图展示了这...
    zlup阅读 2,134评论 0 2
  • API定义规范 本规范设计基于如下使用场景: 请求频率不是非常高:如果产品的使用周期内请求频率非常高,建议使用双通...
    有涯逐无涯阅读 2,788评论 0 6
  • 悬荡着双腿 随着秋千任意摇摆 一朵花七个花瓣 她在自言自语 他不爱我,他爱我 最后一瓣他不爱我 哦,或许是数错了 ...
    小叶子同学阅读 304评论 0 2