API-шлюз или сервисная сетка - PullRequest
2 голосов
/ 06 апреля 2019

Скажем, вы используете микросервисы с Docker Containers и Kubernetes.

Если вы используете шлюз API (например, Azure API Gateway) перед вашими микросервисами для обработки составного интерфейса пользователя и аутентификации, вам все еще нужна службаСетка для управления обнаружением и автоматическим выключателем?Есть ли в Azure API Gateway какие-либо функции для решения подобных задач?Как?

Ответы [ 4 ]

4 голосов
/ 06 апреля 2019

API-шлюзы применяются на уровне 7 модели OSI, или вы можете сказать, что управляете трафиком, поступающим из внешней сети (иногда также называемым трафиком север / юг), тогда как Service Mesh применяется к уровню 4 модели OSI или для управления межсетевым интерфейсом. услуги связи (иногда также называемые восточным / западным движением). Примерами функций API-шлюза являются обратный прокси-сервер, балансировка нагрузки, аутентификация и авторизация, распечатка IP-адресов, ограничение скорости и т. Д.

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

Если вы используете Kubernetes и микросервисы, вам может потребоваться изучить другие решения, такие как Ambassador + Istio или Kong , который работает как шлюз, а также как Service Mesh.

2 голосов
/ 06 апреля 2019

Шлюз API обрабатывает только точку входа в ваши кластеры Kubernetes, например, отправляет запрос в ваш микросервис внешнего интерфейса.Однако он ничего не может сделать после того, как запрос поступит в ваш кластер.Между микросервисами все еще может быть несколько вызовов.Вы все еще хотите проверить аутентификацию для этих запросов, вы все еще хотите убедиться, что между службами есть прерыватели цепи и т. Д. Теоретически вы можете убедиться, что все ваши микросервисы вызывают друг друга через шлюз API, однако я не думаю, чтоэто то, что вы хотите.

Короче говоря: Нет, поскольку шлюз API является только точкой входа, любая связь между сервисами лучше обрабатывается с помощью Service Mesh.

1 голос
/ 06 апреля 2019

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

Сетка сервиса развертывает дополнительный граничный компонент ("коляска") рядом с каждым сервисом, что делает общее поведение распределенным (но также более сложным)

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

0 голосов
/ 07 апреля 2019

Это хорошо объяснено выше, как в fatcook .. См. Azure-Frontdoor

, поскольку он пытается сделать то же самое, что Kong на Azure.API-шлюз + управление функциями уровня плоскости управления

...