grpc-go源码剖析六十一之假设在一条调用链上,存在多个grpc服务的调用,如A服务调用B服务调用C服务,那么他们的超时时间如何?

本文探讨了在gRPC中,当A服务依次调用B服务、B服务调用C服务时,如何处理超时时间的问题。客户端A设置的Deadline时间会通过请求头传给B、C服务,导致所有服务共享同一超时时间。若B或C服务运行时间过长,会导致后续服务无法在A设置的超时时间内完成,从而引发context deadline exceeded异常。C服务的结果会回传到B,B再返回给A,而任何中间环节超时都将影响整个调用链的响应。
摘要由CSDN通过智能技术生成

要解决的场景是:
假设存在一条调用链,如A服务调用B服务,B服务调用C服务,并且通过A服务设置了Deadline时间。

在这里插入图片描述

当客户端A服务设置了Deadline后,通过头帧将超时时间传递给了服务B,

然后服务B,又将超时时间传递给了服务C。

那么服务B,C实际允许运行的时间并不是客户端A设置的超时时间。

也就是说,这条调用链上的服务共享超时时间,或者,允许这条调用链运行的时间,就是客户端A设置的超时时间。

服务B运行的时间长了,那么留给服务C运行的时间就少了,超时后,会报context deadline exceeded异常。


C服务执行完成后,将执行结果反馈给B服务,

B服务执行完成后,再将执行结果反馈给A服务,

如果B服务或者C服务运行的时间超过了A服务设置的Deadline时间后,A服务就会报context deadline exceeded异常

下一篇文章
  健康检测相关介绍

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码二哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值