Как создать объединенный ответ из нескольких микросервисов (контейнеров облачного запуска) в одной конечной точке API, используя Google Cloud Endpoints (шлюз)? - PullRequest
0 голосов
/ 14 октября 2019

Я знаком с платформой Firebase, но я относительно новый пользователь облачной платформы Google в целом. Я работаю над проектом, построенным с использованием структуры микросервисов, и у меня так много вопросов, на которые я не могу найти ответ, или, что лучше, я не могу найти ни одного примера. К сожалению, все примеры, которые я могу найти, - это простой способ экстраполировать жизнеспособный ответ на мои проблемы.

Я принял новое предложение по запуску облака и решил поиграть с полностью управляемой версией. (не кубернетес). Я построил несколько микросервисов (каждый сервис создается с использованием экспресс для узла или фляги для Python - в зависимости от того, что сервисы делают). Каждый микросервис предоставляет свою собственную конечную точку и имеет свой собственный API для вызова методов - и я использую служебную учетную запись, чтобы приложение могло выполнять внутренние вызовы.

Теперь я хочу открыть приложение внешним (особенномоему клиенту, созданному с использованием технологии vuejs), и я пытался использовать другой продукт Google для создания и предоставления API: конечные точки Google.

Мой вопрос (конкретно относящийся к структуре облачного запуска) связан с тем, каквозможно, и что мне нужно сделать, чтобы создать конечные точки API для связи с клиентским приложением, которое внутренне вызывает несколько служб и объединяет их ответ в одну.

Просто чтобы прояснить ситуацию, давайте создадим пример:

  • Служба облачного запуска 1 -> API пользователя Crud

  • Служба облачного запуска 2 -> API продукта Crud

  • Внешняя видимая api конечной точки облака -> получить пользователя из сервиса 1, а после получить продукты из сервиса 2 и вернуть объединенный ответвсе экологически чистые продукты для пользователя Jane Doe.

Как я могу агрегировать ответ непосредственно в шлюзе конечной точки, проверять наличие ошибок и, если все идет гладко, отправлять агрегированный ответ клиенту?

Мне нужно построить агрегированную конечную точку во что-то еще, например, в облачной функции? или я могу сделать это прямо в шлюзе конечных точек google?

Обратите внимание, что для запуска в облаке конечные точки google - это еще один контейнер для запуска в облаке. здесь.

Ответы [ 2 ]

3 голосов
/ 14 октября 2019

Насколько я понимаю, API Gateway должен просто работать в качестве прокси-сервера, представляя все микро-сервисы как единую конечную точку. К этим сценариям, я думаю, у вас могут быть следующие 2 подхода:

1: внедрить новый микро-сервис (или любой из существующих), который будет выполнять вызовы и агрегирование ответов.

2: Клиент (например, пользовательский интерфейс) может вызывать сервисы и выполнять агрегирование на их стороне.

Мне кажется, это не очень хорошая идея делать это на API-шлюзе.

1 голос
/ 16 октября 2019

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

Я понимаю, что вы хотите агрегировать ответы в api-geteway и не можете найти примеры кода для него. Здесь Мне удалось найти руководство о том, что вы хотите реализовать. Полная реализация кода может быть найдена в этом репозитории .

Имейте в виду, однако, эта идея реализации не является лучшей практикой.

...