Одновременные вызовы grpc в java

У меня есть динамическая одноранговая сеть, в которой узлы взаимодействуют с grpc. У каждого узла есть свой сервер и клиент. Один метод grpc определен для входа в систему нового узла. Я использую синхронное сообщение, чтобы передать логин всем остальным, где я создаю новый канал с серверами друг друга, отправляю одно сообщение и жду ответа.

rpc enter(LogIn) returns (Response);

Если у меня есть один узел в моей сети (узел 1), а затем два или более узлов входят одновременно, например, узел 2 и узел 3, они вызовут оба метода grpc "enter" на сервере node1. Каково поведение сервера node1 с этим типом метода? Это как справиться с этим запросом? Итак, с помощью такого метода grpc ставит в очередь сообщения, которые поступают одновременно, или он будет обрабатывать только один запрос? Благодарность


person Owner    schedule 09.06.2020    source источник


Ответы (1)


gRPC поддерживает одновременное выполнение нескольких RPC. Когда приходит RPC (или событие RPC), оно ставится в очередь на serverBuilder.executor(), указанном при построении сервера. Если вы не укажете, будет использоваться исполнитель по умолчанию, который использует столько потоков, сколько необходимо. Ничто в gRPC не будет вести себя иначе, если RPC являются одним и тем же методом RPC или разными методами RPC.

person Eric Anderson    schedule 09.06.2020
comment
Отлично! Итак, если у меня есть параллельный поток для одновременных вызовов одного и того же метода, сервер node 1 может отвечать КОНКРЕТНО на node2 и node3, правильно? - person Owner; 10.06.2020
comment
Ага! Вы сможете одновременно обрабатывать запросы от двух других узлов. - person Eric Anderson; 11.06.2020