hostprofi.ru
Подобрать хостинг
Термин

Envoy

краткое определение

Envoy — высокопроизводительный service proxy на C++ для микросервисных архитектур. Разработан Lyft в 2016 году, используется как data plane в Istio, AWS App Mesh и других service mesh решениях.

Envoy — edge и service proxy с открытым исходным кодом, написанный на C++. Разработан для микросервисных архитектур, где требуется управление трафиком, наблюдаемость и надёжность на уровне сервис-к-сервис коммуникаций. В отличие от Nginx, Envoy проектировался для динамической конфигурации через API без перезапуска.

Архитектура и ключевые возможности

  • L3/L4/L7 проксирование: TCP, HTTP/1.1, HTTP/2, gRPC — всё на одном proxy.
  • Load balancing: round-robin, least request, random, consistent hashing, zone-aware.
  • Circuit breaker: автоматически изолирует unhealthy upstream при превышении порога ошибок.
  • Retries и timeouts: гибкая политика повторов на уровне маршрутов и методов.
  • Observability: метрики в Prometheus, распределённый трейсинг через OpenTelemetry, Zipkin, Jaeger.
  • xDS API: динамическая конфигурация через gRPC — control plane обновляет routing без перезапуска Envoy.

Envoy в Kubernetes и service mesh

В service mesh Kubernetes Envoy запускается как sidecar-контейнер рядом с каждым приложением в поде. Весь входящий и исходящий трафик приложения проходит через Envoy — без изменения кода приложения обеспечивается mTLS между сервисами, распределённый трейсинг и политики доступа.

Istio использует Envoy как data plane: control plane Istio (istiod) конфигурирует все sidecar-прокси через xDS API. Consul Connect и Linkerd также используют Envoy или аналогичный подход.

История

Envoy разработан командой Lyft и выпущен как open source в сентябре 2016 года. В 2017 году передан в Cloud Native Computing Foundation (CNCF). В 2018 году получил статус Graduated проекта CNCF — третий после Kubernetes и Prometheus. К 2023 году Envoy используется как data plane в Google Cloud Service Mesh, AWS App Mesh, Azure Service Fabric Mesh и большинстве облачных платформ.

Сравнение Envoy, Nginx и HAProxy

ПараметрEnvoyNginxHAProxy
Динамическая конфигурацияxDS API (без перезапуска)Reload (с кратким downtime)Runtime API (частично)
ObservabilityВстроенная (метрики, трейсинг)Базовая (access log)Статистика через socket
gRPCНативная поддержкаС модулемЧерез TCP
ПрименениеService mesh, микросервисыWeb, CDN, API gatewayTCP/HTTP балансировка

На что обращать внимание

Envoy — мощный, но сложный инструмент. Конфигурация через YAML/JSON значительно сложнее nginx.conf. Для простых сценариев reverse proxy Nginx проще и быстрее в настройке. Envoy оправдан при наличии 10+ микросервисов, где нужен централизованный контроль трафика. Envoy потребляет около 50 МБ памяти на sidecar — в Kubernetes-кластере с сотнями подов это складывается в несколько гигабайт накладных расходов.

Практические сценарии

Envoy как API Gateway: принимает внешние запросы, выполняет JWT-аутентификацию через ext_authz фильтр, маршрутизирует к микросервисам. Rate limiting через фильтр local_ratelimit или глобально через Ratelimit Service. Для Docker Compose-окружений с 5+ сервисами Envoy может заменить Nginx в роли ingress — динамическая конфигурация без перезапуска особенно ценна при частых деплоях.

Другие термины