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源码剖析五十九之客户端一侧,是如何处理截止时间呢?
C语言试题六十一之请编写函数fun:将s所指字符串中下标为偶数的字符删除,串中剩余字符形成新串放在t所指数组中。