Приветствую! Это небольшая статья, отвечающая на вопросы: "что такое envoy?", "зачем он нужен?" и "с чего начать?".
Что это
Envoy — это L4-L7 балансировщик написанный С++, ориентированный на высокую производительность и доступность. С одной стороны, это в некотором роде аналог nginx и haproxy, соизмеримый с ними по производительности. С другой, он больше ориентирован под микросервисную архитектуру и обладает функционалом не хуже балансировщиков на java и go, таких как zuul или traefik.
Таблица сравнения haproxy/nginx/envoy, она не претендует на абсолютную истину, но дает общую картину.
nginx | haproxy | envoy | traefik | |
---|---|---|---|---|
звезд на github | 11.2k/mirror | 1.1k/mirror | 12.4k | 27.6k |
написан на | C | C | C++ | go |
API | нет | socket only/push | dataplane/pull | pull |
active healthcheck | нет | да | да | да |
Open tracing | внешний плагин | нет | да | да |
JWT | внешний плагин | нет | да | нет |
Расширение | Lua/C | Lua/C | Lua/C++ | нет |