2015-10-16 2 views
7

Для моего нового проекта я должен использовать Micro Services с Api Gateway. Поэтому я собрал подробную информацию о Micro Service, но часть Api Gateway не понятна.Микросервис с шлюзом API

Мой вопрос,

  1. Кто-нибудь знает о том, как запрос маршрутизации часть делается в Апи шлюзе?
  2. ли, что может быть сделано просто, если условие [код псевдо: если (ключевое слово == «продукт»), то маршрут («сервисный продукт»)]?
  3. Или это лучший способ сделать это?

Я использую C# .Net для разработки Api.
я получил некоторую информацию о Api шлюзу от https://www.nginx.com/blog/building-microservices-using-an-api-gateway/

Api Gateway

+1

API-шлюз действует как безопасный прокси-сервер + протоколирование. Вы можете передать URL-адрес своей службе «продукт», к которой вы хотите получить доступ, и шлюз проксирует ее. – sed

ответ

9

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

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

Давайте рассмотрим небольшой пример, например приложение электронной коммерции, которое включает в себя службу для перечисления продуктов, поиска продуктов и тележек для покупок. Шлюз API также будет иметь эти же конечные точки и будет делегировать запрос дополнительно службе, отвечающей за запрос. API в этом примере может содержать /products, чтобы перечислить все продукты, /products?query=... для поиска продуктов и, наконец, /carts/:id/products, чтобы перечислить продукты в корзине. Надеюсь, что это ответ на ваш вопрос.

Кроме того, я знаю, что вы упомянули о своем новом проекте и хотели бы дать вам 2 цента, что это не лучшая архитектура для вашего нового проекта, если ваша команда действительно маленькая, потому что есть большие эксплуатационные накладные расходы. Накладные расходы, требующие стандартизации, автоматизации развертывания, интеграции и т. Д. Его, вероятно, лучше всего начать с традиционной архитектуры MVC и медленно развивать ее до микросервисов при удалении проекта.

+0

Это дает некоторую идею. Благодаря! –

1

В зависимости от вашей архитектуры вы можете использовать какое-то действительно классное программное обеспечение, такое как Weave with CoreOS (https://github.com/weaveworks/weave). Мы используем Docker для распространения наших приложений на узлах CoreOS, а затем внутренний DNS обрабатывается Weave.

Это действительно здорово, потому что мы можем просто перенаправить запрос до имени приложения с портом, а затем мы выключены.

Например, пользователь запрашивает application.com/api/apiName/request/path

Наш шлюз был реализован с узлом.js, и он принимает apiName после/api, чтобы перенаправить его на этот api, а затем следующий путь URL-адреса для добавления к самому вызову.

Таким образом, запрос от шлюза будет проксимироваться внутренне как apiName: 8080/request/path. В этом отношении API не требует изменений при появлении новых сервисов, поскольку путь создается динамически из вашего запроса.

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

Если это не так, вам нужно будет поддерживать некоторый (возможно, внешний) список конечных точек, чтобы облегчить вам работу. Это можно сделать программно из самих API.

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

Смежные вопросы