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

Posted grpc-go源码剖析与实战 图文专栏

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了grpc-go源码剖析六十一之假设在一条调用链上,存在多个grpc服务的调用,如A服务调用B服务调用C服务,那么他们的超时时间如何?相关的知识,希望对你有一定的参考价值。

要解决的场景是:
假设存在一条调用链,如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异常

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

以上是关于grpc-go源码剖析六十一之假设在一条调用链上,存在多个grpc服务的调用,如A服务调用B服务调用C服务,那么他们的超时时间如何?的主要内容,如果未能解决你的问题,请参考以下文章

grpc-go源码剖析五十八之截止时间相关介绍

grpc-go源码剖析五十九之客户端一侧,是如何处理截止时间呢?

gRPC-go源码剖析与实战专栏介绍

C语言试题六十一之请编写函数fun:将s所指字符串中下标为偶数的字符删除,串中剩余字符形成新串放在t所指数组中。

C语言试题六十一之请编写函数fun:将s所指字符串中下标为偶数的字符删除,串中剩余字符形成新串放在t所指数组中。

gRPC-go源码剖析五十三之取消功能相关介绍以及测试用例介绍