网站源码上传到空间以后怎么做,观澜网站建设公司,百度公司介绍,南京平台网站建设本文内容是目前团队内小磊同学对重试机制实现方案的梳理总结。 从为什么需要重试的背景开始#xff0c;到重试的场景#xff0c;大致的一些设计思路#xff0c;最后通过两个成熟的retry组件进行案例讲解#xff0c;理论实战。 背景 重试是系统提高容错能力的一种手段。在一… 本文内容是目前团队内小磊同学对重试机制实现方案的梳理总结。 从为什么需要重试的背景开始到重试的场景大致的一些设计思路最后通过两个成熟的retry组件进行案例讲解理论实战。 背景 重试是系统提高容错能力的一种手段。在一次请求中往往需要经过多个服务之间的调用由于网络波动或者其他原因请求可能无法正常到达服务端或者服务端的请求无法正常的返回从而导致请求失败这种失败往往可以通过重试的方式来解决。因此服务之间的重试机制提高了整个系统的故障恢复能力。 重试场景 典型的重试场景如下 网络抖动问题造成的请求失败通过重试提高成功率。由于系统负载高原因导致请求变慢导致请求超时通过重试提高成功率。由于系统故障或服务不可用导致请求没能成功通过重试保证数据落地。 那么是不是所有请求都可以重试显然不是重试依赖于接口的幂等性假设一个接口多次使用相同参数调用会导致其违反数据约束那么得到的结果可能会在我们预期之外。对于幂等不了解的伙伴可以参看高并发下接口幂等性解决方案 设计思路 如何设计一个优雅的重试机制优雅的重试机制应该具备如下几点特点 无侵入或者侵入低这个好理解不改动当前的业务逻辑对于需要重试的地方可以很简单的实现可配置包括重试次数重试的间隔时间是否使用异步方式等通用性最好是无改动或者很小改动的支持绝大部分的场景拿过来直接可用 模板方式 将重试机制的实现抽取成一个模板预留接口。示例如下