Как создать сервер Graphql для микросервисов? - PullRequest
0 голосов
/ 05 ноября 2018

У нас есть несколько микросервисов на Golang и Python, на Golang мы пишем финансовые операции и на логике интернет-магазина Python, мы хотим создать один API для нашего интерфейса и не знаем, как это сделать. Я читал об API-шлюзе, и будет ли правильно, если Golang создаст свой собственный сервер GraphQL, Python создаст еще один, и они оба будут взаимодействовать с третьим сервером graphql, который будет генерировать API для внешнего интерфейса.

1 Ответ

0 голосов
/ 06 ноября 2018

Я не знаю подробностей о ваших услугах, но замечательная схема, которую я успешно использовал в различных проектах, как вы упомянули GraphQL gateway.

Вы создадите один сервис, я предпочитаю создавать его в Node.js, куда будут поступать все запросы от внешнего интерфейса. Тогда с GraphQL gateway вы будете запрашивать ваши микросервисы. Это будет в основном ваша единственная точка входа в бэкэнд-систему. Запросы будут аутентифицированы, и вы сможете унифицировать доступ к вашим данным, а также выполнить некоторые оптимизации производительности, такие как реализация кэширования и пакетирования загрузчика данных для смягчения проблемы N + 1. Кроме того, вы уменьшите сложность использования нескольких API и сможете использовать все преимущества GraphQL. В моем последнем проекте у нас было 7 различных интерфейсов, и каждый использовал один и тот же GraphQL gateway, и я был очень доволен нашим подходом. Определенно, есть некоторые недостатки, так как вам нужно синхронизировать все свои интерфейсы и GraphQL gateway, поэтому вам нужно больше знать о ваших критических изменениях, но это можно решить, например, с помощью директивы deprecated и путем выполнения сине-зеленого развертывания с кластером Кубернетес.

Другой вариант - создать так называемый бэкэнд для внешнего интерфейса в GraphQL. Сейчас у меня нет достаточной информации, какое решение будет лучшим для вас. Вы должны решить, основываясь на потребностях вашего внешнего интерфейса и бизнес-сфере, но обычно я предпочитаю шлюз GraphQL, так как GraphQL обладает большой гибкостью, а необходимость настраивать ваш API для внешнего интерфейса покрывается возможностями GraphQL. Надеюсь, это поможет Дэвид

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...