Как управлять каналом сервера gRP C в рамках весенней загрузки - PullRequest
0 голосов
/ 09 марта 2020

У меня есть установка, которая имеет приложение для начальной загрузки и сервер gRP C. Сервер gRP C записан в NodeJS и развернут на отдельном сервере. В моем приложении для весенней загрузки есть конечная точка, которая принимает объект запроса и передает его на сервер gRP C.

Вопрос:

1) В этом сценарии мне нужно создать канал rGP C для каждого входящего HTTP-запроса? (звучит неэффективно)

2) или у меня есть один канал, созданный при инициализации приложения весенней загрузки?

В решении 2) как мне управлять, когда сервер gRP C не работает и ему нужно получить новый URI с сервера eureka?

Вот создание канала gRP C в режиме весенней загрузки .

1 Ответ

1 голос
/ 09 марта 2020

2) это путь к go. Чтобы решить проблему с неработающим сервером, вы можете проверить состояние канала (io.grpc.ManagedChannel.getState(boolean)) перед пересылкой входящего http-запроса на сервер gRP C, а если он не READY, тогда позвоните своему initCommunicationChannel() после соответствующего рефакторинга, чтобы он может вызываться несколько раз.

В качестве альтернативы вы можете реализовать плагин распознавателя имен (https://github.com/grpc/grpc/blob/master/doc/naming.md), который просто вызывает eurekaClient.getApplication("logger-app").getInstances() для возврата разрешенных адресов, которые затем используются клиентской загрузкой политика балансировки (https://github.com/grpc/grpc/blob/master/doc/load-balancing.md).

...