2017-02-18 8 views
3

TL; DRНужно ли мне объединять экземпляры ManagedChannel для многопоточного Java GRPC (1.1.2)?

ли КПГРЫ-в Java ManagedChannel имеет неявный пул соединений или объединение ManagedChannel случаев ответственность пользователя?


Итак, я использую java grpc 1.1.2 с protoc 3.2.0. Мне кажется, что нет никакой неявной поддержки (на данный момент) для пула соединений, который grpc предоставляет для клиентов. Однако представляется, что абстракция соединения в grpc, то есть объект ManagedChannel действительно работает с несколькими TCP-соединениями. Это верно? Если да, то идет ли с ManagedChannel соединение пула вместе с ним? Если это так, мне, вероятно, не нужно беспокоиться о пуле соединений, учитывая, что канал является потокобезопасным, и я могу просто использовать один экземпляр ManagedChannel на моем клиенте. Однако, возможно, мне действительно понадобится объединить эти объекты канала для большей пропускной способности, если это необходимо. Есть ли такая реализация (объединение каналов), которая делает это для меня в самом grpc?

ответ

2

Поскольку вы сказали, что хотите объединиться для большей пропускной способности, я предполагаю, что вы хотите создать и объединить несколько соединений для одного адреса в канале. Он не поддерживался, поскольку канал impl использовал для создания только одного соединения для каждого адреса. С LBv2, который скоро заменит старую версию, теперь можно использовать пользовательский LoadBalancer, в котором вы можете create столько, сколько Subchannel s для связи по вашему желанию.

Вы можете обратиться к фонду pick-first и round-robin LoadBalancers о том, как написать свой собственный LoadBalancer.

1

Да, ManagedChannel делает пул соединений, и вам нужен только один. Он будет автоматически создавать и уничтожать соединения по мере необходимости.

Смежные вопросы