回答重点
首先用户(客户端)的请求是先打到网关,再由网关请求各后端服务,因此需要确保客户端到网络连接的超时时间(通常是 HTTP请求),需要大于网关调用后端服务(通常是 RPC 请求)的综合时间。
其中又有一些细节需要考虑
- 网关调用几个服务的方式
网关调用后端需求可以是串行,也可以是并行,假设请求服务A需要花费 1、请求服务 B花费 2s、请求服务 C 花费 3s
如果是串行,那么网关需要等待服务A响应后,再调用服务 B,拿到服务B的结果后,再调用服务C,总时间是 1+2+3-6。
如果是并行,则网关可以并发请求三个服务,最终的花费的时间以最慢的那个服务的响应为准,花费的时间是 3s。
因此不同的调用方式,计算的超时时间是不同的。
- 考虑每个服务TP99(或TP95)的耗时
除了串行并行之外,每个后端服务对请求的响应时间,也需要有个大致的估算,估算的值不能是凭空而来,而是利用每个服务 TP99(或IP95)的耗时(TP99 指的是百分之九十九的调用所需的最高耗时)。
通过这个方式来得来的调用耗时才比较精准和专业。
- 考虑超时重试次数
为了避免网络抖动的影响,一般请求都需要有重试机制,比如重试2次,那么实际上最多会有3次调用(正常1次+重试2次),最长的耗时就是超时时间*3,所以重试的时间也需要计算在总的超时时间之内这种问题是无法量化的
你可千万别说个什么设置 5s 这种,需要根据业务场景具体问题具体分析,我们仅需回答到上面这些关键点即可。