channel/stubs 在 gRPC 中是线程安全的
Are channel/stubs in gRPC thread-safe
当从 Java 使用 gRPC 时,我可以缓存存根(客户端)并在多线程环境中调用它们吗?或者通道是线程安全的并且可以安全缓存吗?
如果出现网络中断,我应该重新创建频道还是足够智能以重新连接?我在 http://www.grpc.io/docs/
上找不到相关信息
谢谢
第一个问题的答案:
通道是线程安全的; io.grpc.Channel
标有 @ThreadSafe
注释。存根也是线程安全的,这就是重新配置创建新存根的原因。
第二个问题的答案:
如果出现网络中断,您无需重新创建频道。该通道将重新连接指数退避,大致如 connection backoff 文档所述。 Java 并非 100% 符合该算法,因为它不会在以后的重试中增加连接超时。 (不要与已实现的指数退避混淆。)
当从 Java 使用 gRPC 时,我可以缓存存根(客户端)并在多线程环境中调用它们吗?或者通道是线程安全的并且可以安全缓存吗?
如果出现网络中断,我应该重新创建频道还是足够智能以重新连接?我在 http://www.grpc.io/docs/
上找不到相关信息谢谢
第一个问题的答案:
通道是线程安全的; io.grpc.Channel
标有 @ThreadSafe
注释。存根也是线程安全的,这就是重新配置创建新存根的原因。
第二个问题的答案:
如果出现网络中断,您无需重新创建频道。该通道将重新连接指数退避,大致如 connection backoff 文档所述。 Java 并非 100% 符合该算法,因为它不会在以后的重试中增加连接超时。 (不要与已实现的指数退避混淆。)