Skip to content
IRC-CodingIRC-Coding
API GatewayKongNginxLoad BalancingRate LimitingAPI Routing

API Gateway: Kong, Nginx, маршрутизация и масштабирование

Основы API Gateway: маршрутизация, Load Balancing, аутентификация, Rate Limiting, Kong и Nginx для масштабируемых API.

S

schutzgeist

5 min read
API Gateway: Kong, Nginx, маршрутизация и масштабирование

Основы API Gateway с Kong и Nginx

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

Краткое описание

API Gateway это серверный компонент, который принимает все клиентские запросы к API и перенаправляет их нужным backend-сервисам. Помимо маршрутизации, он выполняет функции аутентификации, авторизации, rate limiting, SSL-терминации, кэширования, балансировки нагрузки, преобразования протоколов и мониторинга. Известные реализации включают Kong, Nginx, Envoy, Traefik, AWS API Gateway и Azure API Management. Kong построен поверх Nginx и дополняет его системой плагинов и централизованным управлением. Сам Nginx можно использовать как мощный reverse proxy и API Gateway. API Gateway отделяет клиентов от backend-сервисов, упрощает безопасность и централизацию, является важной частью современных микросервисных архитектур.

Ключевые компоненты

Маршрутизация

Маршрутизация это основная задача API Gateway. Она направляет запросы на нужный backend-сервис на основе пути, метода, заголовков или хоста. Например, запросы к /orders идут на Order-сервис, а запросы к /payments на Payment-сервис.

Reverse Proxy

API Gateway работает как reverse proxy. Для клиентов это единственная видимая конечная точка, в то время как backend-сервисы остаются скрыты позади него. Это защищает внутренние сервисы и позволяет их заменять без воздействия на клиентов.

Балансировка нагрузки

Балансировка нагрузки распределяет входящие запросы между несколькими инстанциями backend-сервиса. Это повышает доступность и масштабируемость. Распространённые методы это Round Robin, Least Connections и IP Hash. Health Checks обнаруживают упавшие инстанции и исключают их из распределения.

Аутентификация и авторизация

Gateway может централизованно применять механизмы аутентификации такие как OAuth2, JWT, API Keys или mTLS. Он проверяет токены перед тем, как запросы достигнут backend-сервисов, и при необходимости добавляет очищенную информацию о пользователе.

Rate Limiting и Throttling

Rate Limiting ограничивает количество запросов, которые клиент может отправить за период времени. Throttling снижает скорость запросов при высокой нагрузке. Обе меры защищают backend-сервисы от перегрузки и злоупотреблений. Их можно настроить глобально, по API или по клиентам.

SSL-терминация

Gateway берёт на себя SSL-TLS дешифрование и зашифрованное общение с клиентами. Внутреннее общение с backend-сервисами может быть незашифрованным или с внутренними сертификатами, что упрощает управление.

Кэширование

API Gateway может кэшировать часто запрашиваемые ответы, чтобы снизить нагрузку на backend и уменьшить задержку. Кэширование особенно полезно для статических или редко изменяющихся данных. Ключи кэша должны быть выбраны тщательно, чтобы избежать неправильных ответов.

Преобразование протоколов

Gateway может переводить между протоколами, например между HTTP/1.1 и HTTP/2, REST и gRPC или WebSockets и TCP. Это позволяет соединять разные клиенты с различными backend-сервисами.

Логирование и мониторинг

Gateway это центральная точка для логирования и мониторинга. Он записывает запросы, ответы, коды статуса, задержки и ошибки. Инструменты как Prometheus, Grafana, ELK или Datadog могут анализировать и визуализировать эти данные.

Kong

Kong это популярный open-source API Gateway, построенный на Nginx и OpenResty. Он предлагает обширную систему плагинов для аутентификации, rate limiting, логирования, преобразования и многого другого. Kong можно использовать как self-hosted или как облачный сервис.

Nginx как Gateway

Nginx это мощный веб-сервер и reverse proxy. С правильной конфигурацией он может выполнять базовые функции API Gateway такие как маршрутизация, балансировка нагрузки, SSL-терминация и кэширование. Для расширенных функций плагинов часто используют Kong или Nginx Plus.

Практический пример

Компания работает с несколькими микросервисами и использует Kong как API Gateway.

Конфигурация Kong для двух сервисов:

services:
  - name: order-service
    url: http://orders.internal:8080
    routes:
      - name: orders-route
        paths:
          - /api/v1/orders
  - name: payment-service
    url: http://payments.internal:8080
    routes:
      - name: payments-route
        paths:
          - /api/v1/payments

plugins:
  - name: rate-limiting
    config:
      minute: 100
  - name: jwt
    config:
      uri_param_names: []
      cookie_names: []

В этом примере Kong маршрутизирует запросы к /api/v1/orders на Order-сервис и запросы к /api/v1/payments на Payment-сервис. Плагин rate-limiting ограничивает запросы до 100 в минуту. JWT плагин гарантирует, что только валидированные токены получают доступ к API.

FAQ: API Gateway с Kong и Nginx

1. Что такое API Gateway?

API Gateway это центральный уровень, который принимает клиентские запросы, перенаправляет их backend-сервисам и выполняет дополнительные функции такие как аутентификация, rate limiting и логирование.

2. В чём разница между API Gateway и Reverse Proxy?

Reverse Proxy перенаправляет запросы. API Gateway расширяет это функциями аутентификации, rate limiting, кэширования, мониторинга и преобразования протоколов. Каждый API Gateway это reverse proxy, но не каждый reverse proxy это полнофункциональный gateway.

3. Что такое Kong?

Kong это open-source API Gateway, построенный на Nginx и OpenResty. Он предлагает обширную систему плагинов для аутентификации, rate limiting, логирования и преобразования.

4. Что такое Nginx?

Nginx это мощный веб-сервер и reverse proxy. При правильной конфигурации он может использоваться как API Gateway и выполнять маршрутизацию, балансировку нагрузки, SSL-терминацию и кэширование.

5. Что такое Rate Limiting?

Rate Limiting ограничивает количество запросов, которые клиент может отправить за период времени. Это защищает backend-сервисы от перегрузки и злоупотреблений.

6. Что такое Load Balancing?

Load Balancing распределяет запросы между несколькими backend-инстанциями. Это повышает доступность, масштабируемость и отказоустойчивость. Методы включают Round Robin и Least Connections.

7. Что такое SSL-терминация?

SSL-терминация означает, что gateway берёт на себя TLS-шифрование входящих клиентских запросов и перенаправляет их внутри незашифрованными или с внутренними сертификатами.

8. Что такое плагины в Kong?

Kong плагины расширяют gateway функциями аутентификации, rate limiting, CORS, логирования, преобразования и кэширования. Их можно активировать глобально, по сервисам или по маршрутам.

9. Что такое Service Mesh?

Service Mesh это уровень инфраструктуры для связи между сервисами, например с Istio или Linkerd. API Gateway находится на краю архитектуры и управляет внешним трафиком.

10. Что такое кэширование в API Gateway?

Кэширование в API Gateway сохраняет ответы на часто повторяющиеся запросы. Это снижает нагрузку на backend и задержку. Должно быть тщательно настроено, чтобы избежать устаревших данных.

11. Должна ли аутентификация быть в Gateway или в сервисе?

Аутентификация часто централизованно применяется в gateway, чтобы избежать дублирования. Но детальная авторизация должна быть в backend-сервисе, потому что только он знает бизнес-правила.

12. Что такое Backends for Frontends Gateway?

Backends for Frontends Gateway это специализированный API Gateway для каждого типа клиента, например один для мобильных приложений и один для веб-фронтендов. Так каждый gateway может быть настроен под конкретные требования.

13. Что такое Health Check?

Health Check регулярно проверяет, работают ли backend-инстанции. Упавшие инстанции исключаются из балансировки нагрузки, пока не восстановятся.

14. Что такое Nginx Upstream?

Nginx upstream это группа backend-серверов, к которым Nginx может обращаться вместе. Upstreams это основа для балансировки нагрузки с Nginx.

15. В чём преимущество централизованного API Gateway?

Централизованный gateway объединяет безопасность, мониторинг, маршрутизацию и масштабирование в одной точке. Это упрощает управление, уменьшает дублирование и отделяет клиентов от деталей backend.

Продолжение пути в освоении API

Следующий материал в нашем пути по изучению API охватывает API Gateway vs. Reverse Proxy: различия и сценарии применения — две компоненты инфраструктуры, которые часто путают, хотя они решают разные задачи.

Источники

  1. https://docs.konghq.com/
  2. https://nginx.org/en/docs/
  3. https://microservices.io/patterns/apigateway.html

Рекомендуемые книги по разработке API

Если ты хочешь глубже разобраться с API Gateway, микросервисами и архитектурой API, вот несколько полезных книг:

Keine Bücher für Kategorie "api-development" gefunden.

Назад к блогу
Share:

Похожие статьи