-
Что такое
- паттерн управления взаимодействия между сервисами в распределенной системе
-
Как связан с другими концепциями
- Обрабатывает траффик внутри периметра в отличии от API Gateway или Edge Proxн
- API Gateway
- Edge Proxy
-
Причины появления
- распределенные системы на разных языках и ад микросервисов
- всем нужно service discovery
- devops-ам нужно обрабатывать сетевые отказы и отказы во время развертывания
- динамический роутинг траффика на сервисы
-
Какие проблемы решает
- не нужно вкладывать логику service discovery/routing/работы в кластере во все приложения на всех языках
-
выносит из приложения такие аспекты как
- security креды
- конфигурация сетевой коммуникации с другими сервисами
- QoS сервисов с которыми работает текущий сервис
- cirtcuit breaker?
- мониторинг (пассивный и активный) сторонних сервисов
-
observability распределенной системы
- кто к кому ходит, как часто
- логирование реквестов
- трассировка запросов
- сбор метрик
- примерение политик в децентрализованной распределенной системе
- динамическое service discovery и роутинг
- надежность коммуникации между сервисами
- наблюдение за траффиком
- безопасность коммуникаций
-
Фичи service mesh
- нормализация и нотация именования сервисоа
-
traffic shaping
- rate limiting
-
traffic shifting
- перенос траффика между локациями
- программируемая балансировка нагрузки
-
контроль релиза сервиса
- релиз канареек
- traffic splitting
-
продвинутый роутинг траффика
- per-request routing
- traffic shadowing
- fault injection
- debug re-routing
-
security
- TLS фичи
- ACL фичи
- observability
- monitoring
-
RPC metrics
- request volume
- success rate
- latency
- tracing
-
Как устроен
- состоит из data-plane и control-plane
-
data-plane
- делает реальную работу
- инспектирует каждый сетевой пакет
-
де факто прокси
- HAProxy
- Envoy
- MOSN
- запускается в отдельном от основного приложения рантайме
-
для каждого сетевого пакета
- понимает куда его отправить
- живой ли тот сервис куда его отправляют
- балансирует нагрузку
- авторизуется/аутентифицируется
-
control-plane
- управлеет работой всех data-plane
- превращает работу sidecar-ов в распределенную систему
- не трогает сами пакеты, но определяет бизнес-логику
- Performance
- Governance