Обслуживание gRPC и Restful в одном приложении Go - PullRequest
0 голосов
/ 08 июня 2018

У меня есть спокойное приложение, созданное в Go, теперь я должен сделать так, чтобы это приложение также служило сервером gRPC (я уже создал необходимые файлы).У меня есть конечные точки restful, работающие в порту 8000, теперь у меня есть следующие вопросы:

  1. Могу ли я сервер grpc и приложение restful в одном экземпляре?
  2. Должен ли яназначить другой порт для обслуживания gRPC?
  3. Каков рекомендуемый подход в этом случае?поскольку заглушка grpc будет использоваться только некоторыми из наших микросервисов, а остальные будут использоваться внешним интерфейсом некоторых приложений
  4. В случае, если я могу обслуживать оба, как я должен инициализировать серверы?

1 Ответ

0 голосов
/ 08 июня 2018
  1. Да!Если вы хотите использовать gRPC в качестве службы RESTful, существует проект gRPC Gateway , который позволяет аннотировать ваши Protos, чтобы их можно было обслуживать через REST.

  2. Да, но это становится немного сложнее.Сервер gRPC в Go поддерживает net / http.Handler , поэтому вы можете добавить его на свой существующий HTTP-сервер.Получить подходящие пути URL - это то, с чем вам придется поиграться, но это, безусловно, возможно.

  3. Я не думаю, что существует какой-либо рекомендуемый подход.Это зависит главным образом от ограничений среды (таких как наличие прокси-серверов, способ шифрования соединений и т. Д.).

  4. Сначала инициализируйте сервер gRPC, а затем добавьте его на сервер HTTP,

...