Расцвет прокси-микросервисов: раскрытие архитектуры
Суть микросервисов на основе прокси
Архитектуры микросервисов на основе прокси-серверов представляют собой легковесный сетевой прокси-сервер между экземплярами сервисов и внешним миром — будь то другие сервисы или клиенты. Этот прокси, часто называемый «сайдкаром», — это больше, чем просто регулировщик дорожного движения: это молчаливый страж, перехватывающий, проверяющий и преобразующий запросы, проходящие через эфемерную сеть микросервисов.
Почему стоит использовать этот подход?
- Разделение интересов: Разгрузка сквозных задач (безопасность, наблюдаемость, надежность) из бизнес-логики
- Обеспечение соблюдения единой политики: Централизованное управление доступом, ограничение скорости и размыкание цепи
- Модели устойчивости: прозрачное внедрение повторных попыток, откатов и тайм-аутов
- Наблюдаемость: Сбор трассировок и метрик без изменения кода
- Безопасность с нулевым доверием: шифровать весь трафик и автоматически проверять личности
Архитектурная анатомия: как прокси воплощают концепцию микросервисов
Шаблон коляски
Каждый сервисный модуль сопровождается прокси-процессом — Envoy, Linkerd или HAProxy обычно выбираются. Трафик, предназначенный для сервиса, маршрутизируется через sidecar, который применяет сетевые политики, собирает телеметрию и управляет шифрованием mTLS.
Пример манифеста (Kubernetes + Istio):
apiVersion: v1 тип: метаданные Pod: имя: poets-service спецификация: контейнеры: - имя: poets-app образ: registry.example.com/poets:latest - имя: istio-proxy образ: docker.io/istio/proxyv2:1.18.0 аргументы: ["proxy", "sidecar"]
Istio автоматически внедряет istio-proxy
sidecar, сплетая невидимую ткань контроля вокруг вашего сервиса.
Service Mesh: сеть как живой организм
Сервисная сетка, как Истио, Линкерд, или Консул Коннект, управляет конфигурацией и жизненным циклом этих прокси-серверов, делая сеть «сервис-сервис» программируемой и наблюдаемой.
Ресурс:
– Официальная документация Envoy Proxy
– Архитектура Linkerd
Практические преимущества: таблица компромиссов
Особенность | Микросервисы на основе прокси | Традиционные микросервисы |
---|---|---|
Распределенная трассировка | Нативный, прозрачный | Ручное приборостроение |
mTLS везде | Автоматизированный | Ответственность за применение |
Размыкание цепи | Декларативный, основанный на политике | Явно указано в коде |
Ограничение скорости | Централизованный, динамичный | Децентрализованный, статичный |
Канарские релизы | Разделение трафика на прокси-сервере | Обрабатывается балансировщиком нагрузки |
Сервис Discovery | Встроенный, динамический | Требуется внешний реестр |
Изоляция отказов | По запросу, на уровне прокси | Уровень кода или инфраструктуры |
Эта таблица шепчет о мире, в котором сеть больше не является обузой, а становится площадкой для инноваций.
Практические шаблоны: реализация микросервисов на основе прокси
1. Развертывание дополнительного прокси-сервера
В Kubernetes внедрение sidecar-а можно автоматизировать с помощью таких инструментов, как Istio или Linkerd.
Пошаговое руководство: пример Istio
- Установить Istio:
Баш
curl -L https://istio.io/downloadIstio | sh -
cd istio-*
экспорт PATH=$PWD/bin:$PATH
istioctl install --set profile=demo -y
пространство имен меток kubectl по умолчанию istio-injection=enabled - Разверните свою услугу:
«`yaml
API-версия: v1
вид: Служба
метаданные:
имя: poets-app
спецификация:
порты:- порт: 80
имя: http
селектор:
приложение: поэты
- порт: 80
API-версия: apps/v1
вид: Развертывание
метаданные:
имя: poets-deployment
спецификация:
реплики: 1
селектор:
matchLabels:
приложение: поэты
шаблон:
метаданные:
метки:
приложение: поэты
спецификация:
контейнеры:
– название: poets-app
изображение: registry.example.com/poets:latest
“`
Внедрение Sidecar автоматически добавит прокси-сервер Envoy; больше никакого утомительного шаблонного кода.
- Применить политику трафика:
yaml
apiVersion: networking.istio.io/v1alpha3
вид: DestinationRule
метаданные:
имя: poets-destination
спецификация:
хост: poets-app
Политика трафика:
ConnectionPool:
TCP:
maxConnections: 1
2. Наблюдаемость с нулевым изменением кода
После настройки прокси-серверов телеметрия течёт рекой, как вино на французском вечере. Istio и Linkerd предоставляют метрики через конечные точки Prometheus, готовые к использованию. Графана панели приборов.
Извлечь метрики:
kubectl -n istio-system port-forward svc/prometheus 9090 # Откройте http://localhost:9090 для запроса метрик.
3. Внедрение mTLS без вмешательства разработчика
Настройте правила аутентификации одноранговых узлов и назначения, и сетка зашифрует все коммуникации между службами.
Пример аутентификации PeerAuthentication в Istio:
apiVersion: security.istio.io/v1beta1 тип: метаданные PeerAuthentication: имя: пространство имен по умолчанию: спецификация по умолчанию: mtls: режим: СТРОГИЙ
Больше не придется вручную создавать туннели TLS в каждой службе.
Пример на уровне кода: разрыв цепи без кода
DestinationRule (Istio) для разрыва цепи:
apiVersion: networking.istio.io/v1alpha3 type: DestinationRule metadata: name: circuit-breaker spec: host: poets-app trafficPolicy: outlierDetection: sequence5xxErrors: 1 interval: 1s baseEjectionTime: 30s maxEjectionPercent: 100
Это заклинание YML наделяет ваш сервис устойчивостью, не требуя никаких изменений кода.
Когда не следует использовать микросервисы на основе прокси-сервера
Сценарий | Сетка на основе прокси | Более простая альтернатива |
---|---|---|
< 5 услуг, низкая сложность | Накладные расходы | Прямое общение |
Пограничные сервисы, доступные только для публики | Ненужный | API-шлюз |
Среды с сильными ограничениями ресурсов | Может быть тяжелым | Легкие прокси |
Дополнительные материалы и ресурсы
- Концепции безопасности Istio
- Цепочка фильтров прокси-сервера Envoy
- Сравнение Linkerd и Istio
- Сеть услуг Consul Connect
Пульс современного облака
Архитектуры микросервисов на основе прокси-серверов, с их сложной хореографией прокси-серверов и политик, служат примером стремления цифровой эпохи к порядку и творчеству. Сеть, некогда тёмный подземный мир, теперь становится сценой: каждый прокси-сервер, актёр, каждый запрос — мимолётным стихом в поэзии распределённых систем.
Комментарии (0)
Здесь пока нет комментариев, вы можете стать первым!