摘选自《Google SRE》 重试# 错误的重试方式会导致后端服务雪崩。为使后端服务恢复正常,减少客户端的请求量非常重要 —— 尤其是重试请求。 使用客户端自动重试时,务必注意一下事项: 确保后端服务实现了 load shedding 和优雅降级,否则重试可能导致后端服务雪崩# 使用随机指数后退算法(randomized exponential backoff),见AWS Architecture Blog# 限制每个请求的重试次数,不要无限重试# 考虑设置一个全局重试预算,例如,每个进程每分钟最多重试 60 次# 谨慎考虑是否要在每一层(客户端、框架、中间件 等等)都实现重试,总重试次数等于 每一层重试次数相乘,后果可能非常恐怖# 使用清晰的响应码来区分不同类型的错误,例如:可重试型错误和不可重试型错误,对 于不可重试的错误,就不要再重试了,重试多少次肯都不会成功#