- 要确定什么样的错误下需要重试;
- 重试的时间和重试的次数。这种在不同的情况下要有不同的考量。有时候,对一些不是很重要的问题时,我们应该更快速失败而不是一段时间重试若干次。比如一个前端的交互需要用到后端的服务。这种情况下,在面对错误的时候,应该快速失败报错(比如:网络错误请重试)。而面对其他的一些错误,比如流控,那么应该使用指数退避的方式,以避免造成更多的流量。
- 如果超过重试次数,或是一段时间,那么重试就没有意义了。这个时候,说明这个错误不是一个短暂的错误,那么我们对于新来的请求,就没有必要再进行重试了,这个时候对新的请求直接返回错误就好了。但是,这样一来,如果后端恢复了,我们怎么知道呢,熔断
- 重试还需要考虑被调用方是否有幂等的设计。