从网关再到各个后端服务,如何设置 RPC 的超时时间,要考虑哪些问题?
从网关再到各个后端服务,如何设置 RPC 的超时时间,要考虑哪些问题?
回答重点
首先用户(客户端)的请求是先打到网关,再由网关请求各后端服务,因此需要确保客户端到网络连接的超时时间(通常是 HTTP 请求),需要大于网关调用后端服务(通常是 RPC 请求)的综合时间。
其中又有一些细节需要考虑:
1)网关调用几个服务的方式
网关调用后端需求可以是串行,也可以是并行,例如上面的图中的三个服务,假设请求服务 A 需要花费 1s、请求服务 B 花费 2s、请求服务 C 花费 3s:
- 如果是串行,那么网关需要等待服务 A 响应后,再调用服务 B,拿到服务 B 的结果后,再调用服务 C,总时间是
1+2+3=6。 - 如果是并行,则网关可以并发请求三个服务,最终的花费的时间以最慢的那个服务的响应为准,花费的时间是 3s。
因此不同的调用方式,计算的超时时间是不同的。
2)考虑每个服务 TP99(或TP95) 的耗时
除了串行并行之外,每个后端服务对请求的响应时间,也需要有个大致的估算,估算的值不能是凭空而来,而是利用每个服务 TP99(或TP95)的耗时(TP99 指的是百分之九十九的调用所需的最高耗时)。
通过这个方式来得来的调用耗时才比较精准和专业。
3)考虑超时重试次数
为了避免网络抖动等影响,一般请求还需要有重试机制,比如重试 2 次,那么实际上最多会有 3 次调用(正常 1 次+重试 2 次),最长的耗时就是超时时间 * 3,所以重试的时间也需要计算在总的超时时间之内。
这种问题是无法量化的,你可千万别说个什么设置 5s 这种,需要根据业务场景具体问题具体分析,我们仅需回答到上面这些关键点即可。
扩展知识
TPxx 指标
常见的有 TP90、TP95 和 TP99 等指标,它们是衡量请求延迟(响应时间)的常用百分位数指标,在性能测试、容量规划、系统监控和优化中具有重要意义。通过这些指标,我们可以了解系统的响应时间分布情况,评估系统的性能。
以 TP99 举例说明:
TP99 指的是在所有请求中,99% 的请求的响应时间都低于或等于该值,也就是说,99% 的请求在该时间范围内完成,剩下 1% 的请求会有更长的响应时间。
比如我调用了一个方法,1 小时调用了 10w 次,监控显示 TP99 是 200ms,说明百分之九十九的调用都在 200ms 返回。