从网关再到各个后端服务,如何设置 RPC 的超时时间,要考虑哪些问题?

Sherwin.Wei Lv7

从网关再到各个后端服务,如何设置 RPC 的超时时间,要考虑哪些问题?

回答重点

首先用户(客户端)的请求是先打到网关,再由网关请求各后端服务,因此需要确保客户端到网络连接的超时时间(通常是 HTTP 请求),需要大于网关调用后端服务(通常是 RPC 请求)的综合时间

image.png

其中又有一些细节需要考虑

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 返回。

Comments
On this page
从网关再到各个后端服务,如何设置 RPC 的超时时间,要考虑哪些问题?