TL; DR
grpc-java的ManagedChannel是否具有隐式连接池,或者ManagedChannel实例的池是否是用户的责任?
所以,我正在使用带有protoc 3.2.0的java grpc 1.1.2.在我看来,grpc为客户端提供的连接池没有隐含的支持(截至目前).但是,似乎在grpc中抽象连接,即ManagedChannel对象确实可以使用多个TCP连接.那是对的吗?如果是这样,ManagedChannel是否带有连接池?如果是这种情况,我可能不必担心连接池,因为该通道是线程安全的,我只能在我的客户端使用一个ManagedChannel实例.但是,如果需要,我可能确实必须汇集这些通道对象以获得更大的吞吐量.是否有这样的实现(通道池)在grpc本身为我做这个?
解决方法:
既然您说要集合以获得更高的吞吐量,我假设您要为通道中的一个地址创建和池化多个连接.它不受支持,因为通道impl用于每个地址只创建一个连接.随着LBv2即将取代旧版本,现在可以使用自定义LoadBalancer,您可以根据需要使用create多个子通道进行连接.
关于如何编写自己的LoadBalancer,可以参考库存pick-first和round-robin LoadBalancers.
标签:java,grpc,grpc-java
来源: https://codeday.me/bug/20190611/1217977.html