我知道gRPC团队建议我们在整个应用程序中使用单个渠道,这正是我们要做的事情。但是我们不确定在构造函数上接收此通道的客户端类。最佳做法是什么:
我们对使用第一种方法感兴趣,但是我们不知道创建客户端类的新实例是否也是一项昂贵的操作。
答案 0 :(得分:3)
从本质上讲,客户端只是CallInvoker
的包装,如果您从DefaultCallInvoker
开始,它将是Channel
。 DefaultCallInvoker
也是 ,只是Channel
的包装,没有状态或复杂性。客户端和呼叫调用者均未添加任何类似同步的内容,因此与新客户端通话与与共享通道的现有客户端通话具有相同的行为。
结论:创建一个新的客户/呼叫调用者并不十分昂贵,但是如果您要节省额外的2个分配,则应该能够共享客户,而不会产生明显的差异。