Сравнение выбора API Gateway: Apache APISIX и Kong
API7.ai
January 18, 2020
Apache APISIX и Kong — это оба открытые микросервисные API-шлюзы, так как же их сравнить и выбрать между ними?
Эти два проекта имеют полную документацию и тесты, и многие пользователи в производственной среде их используют, поэтому не стоит беспокоиться о стабильности и устойчивом развитии. В этой статье основное внимание будет уделено наиболее прямым и проверяемым функциям и производительности, чтобы провести сравнение с другой точки зрения.
Эти два проекта имеют полную документацию и тесты, и многие пользователи в производственной среде их используют, поэтому не стоит беспокоиться о стабильности и устойчивом развитии. В этой статье основное внимание будет уделено наиболее прямым и проверяемым функциям и производительности, чтобы провести сравнение с другой точки зрения.
| Функции | Apache APISIX | KONG |
|---|---|---|
| Динамический апстрим | Да | Да |
| Динамический роутер | Да | Да |
| Проверка здоровья | Да | Да |
| Динамический SSL | Да | Да |
| L4 и L7 прокси | Да | Да |
| Opentracing | Да | Да |
| Пользовательский плагин | Да | Да |
| REST API | Да | Да |
| CLI | Да | Да |
Для более детального сравнения.
| Функции | Apache APISIX | Kong |
|---|---|---|
| Принадлежит | Apache Software Foundation | Kong Inc. |
| Техническая архитектура | Nginx + etcd | Nginx + postgres |
| Каналы связи | Почтовый список, группа Wechat, группа QQ, GitHub, meetup | GitHub, freenode, форум |
| Одноядерный процессор, QPS (с включенными плагинами limit-count и prometheus) | 18000 | 1700 |
| Задержка | 0.2 мс | 2 мс |
| Dubbo | Да | Нет |
| Откат конфигурации | Да | Нет |
| Маршрут с TTL | Да | Нет |
| Горячая загрузка плагинов | Да | Нет |
| Пользовательская балансировка нагрузки и маршрутизация | Да | Нет |
| REST API <--> gRPC трансформация | Да | Нет |
| Tengine | Да | Нет |
| MQTT | Да | Нет |
| Время вступления конфигурации в силу | Событийно-ориентированное, < 1 мс | Опрос, 5 секунд |
| Панель управления | Да | Нет |
| IdP | Да | Нет |
| Высокая доступность центра конфигурации | Да | Нет |
| Ограничение скорости для заданного временного окна | Да | Нет |
| Поддержка любой переменной Nginx в качестве условия маршрутизации | Да | Нет |
Производительность
После включения плагинов limit-count и prometheus производительность Apache APISIX в десять раз выше, чем у Kong.
Более подробные шаги можно найти здесь: https://gist.github.com/membphis/137db97a4bf64d3653aa42f3e016bd01. Заинтересованные разработчики могут следовать инструкциям для проверки.
Почему Apache APISIX превосходит?
Здесь мы обсудим причины различий в функциональности и производительности:
-
Сложность маршрутизации Apache APISIX составляет O(k), что связано только с длиной URI и не зависит от количества маршрутов; временная сложность маршрутизации Kong составляет O(n), что увеличивается линейно с количеством маршрутов.
-
Временная сложность IP-сопоставления Apache APISIX составляет O(1), что не приводит к исчерпанию ресурсов CPU при большом количестве IP-проверок.
-
Сопоставление маршрутов Apache APISIX принимает все переменные Nginx в качестве условий и поддерживает пользовательские функции; другие шлюзы имеют несколько встроенных условий.
-
Apache APISIX использует etcd в качестве центра конфигурации. Нет единой точки отказа, и если одна машина выйдет из строя, кластер шлюзов продолжит работать нормально. Другие шлюзы, основанные на реляционных базах данных, имеют проблему единой точки отказа.
-
Конфигурация Apache APISIX достигает всех узлов шлюза в течение 1 миллисекунды, используя механизм watch в etcd; другие шлюзы опрашивают базу данных регулярно, и обычно требуется 5 секунд для получения последней конфигурации.
-
Плагины Apache APISIX были тщательно настроены для поддержания задержки на уровне миллисекунд при высокой нагрузке.
-
Уникальная организация плагинов и функция низкого кода в Apache APISIX значительно снижают порог вторичной разработки.