gPRC截止日期的默认值是多少(java)

时间:2018-07-31 00:22:58

标签: java api grpc

我注意到一个阻塞的gPRC调用可能会阻塞很长时间,甚至永远不会阻塞。

我检查并找到了以下页面:https://grpc.io/docs/guides/concepts.html#deadlines

但是,该页面没有显示Java的默认截止日期/超时值。 所以,我想知道是否有默认的java值。

如果没有,我可能必须为所有通话设置截止日期。这不方便...

3 个答案:

答案 0 :(得分:3)

对于任何语言,gRPC中都没有默认的截止日期。如果存在网络故障,并且客户端启用了keepalive,则呼叫最终将失败。但是,如果服务器花费的时间是无限的,则客户端可能会等待无限的时间。

答案 1 :(得分:0)

答案 2 :(得分:0)

正如@Eric Anderson 所说,没有默认截止日期。但是,强烈建议为客户端中的每个 RPC 设置一个,服务提供者还应指定他们支持的最长期限,如博客中所述:https://grpc.io/blog/deadlines

<块引用>

一般情况下,当你不设置截止时间时,所有进行中的请求都会占用资源,所有请求都有可能达到最大超时时间。这会使服务面临耗尽资源(例如内存)的风险,这会增加服务的延迟,或者在最坏的情况下可能导致整个进程崩溃。

<块引用>

为了避免这种情况,服务应该指定他们在技术上支持的最长默认期限,并且客户端应该等到响应对他们不再有用。对于服务,这可以像在 .proto 文件中提供注释一样简单。对于客户来说,这涉及设置有用的最后期限。