Сравнение выбора API Gateway: Apache APISIX и Kong

API7.ai

January 18, 2020

Products

Apache APISIX и Kong — это оба открытые микросервисные API-шлюзы, так как же их сравнить и выбрать между ними?

Эти два проекта имеют полную документацию и тесты, и многие пользователи в производственной среде их используют, поэтому не стоит беспокоиться о стабильности и устойчивом развитии. В этой статье основное внимание будет уделено наиболее прямым и проверяемым функциям и производительности, чтобы провести сравнение с другой точки зрения.

Эти два проекта имеют полную документацию и тесты, и многие пользователи в производственной среде их используют, поэтому не стоит беспокоиться о стабильности и устойчивом развитии. В этой статье основное внимание будет уделено наиболее прямым и проверяемым функциям и производительности, чтобы провести сравнение с другой точки зрения.

ФункцииApache APISIXKONG
Динамический апстримДаДа
Динамический роутерДаДа
Проверка здоровьяДаДа
Динамический SSLДаДа
L4 и L7 проксиДаДа
OpentracingДаДа
Пользовательский плагинДаДа
REST APIДаДа
CLIДаДа

Для более детального сравнения.

ФункцииApache APISIXKong
ПринадлежитApache Software FoundationKong Inc.
Техническая архитектураNginx + etcdNginx + postgres
Каналы связиПочтовый список, группа Wechat, группа QQ, GitHub, meetupGitHub, freenode, форум
Одноядерный процессор, QPS (с включенными плагинами limit-count и prometheus)180001700
Задержка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 превосходит?

Здесь мы обсудим причины различий в функциональности и производительности:

  1. Сложность маршрутизации Apache APISIX составляет O(k), что связано только с длиной URI и не зависит от количества маршрутов; временная сложность маршрутизации Kong составляет O(n), что увеличивается линейно с количеством маршрутов.

  2. Временная сложность IP-сопоставления Apache APISIX составляет O(1), что не приводит к исчерпанию ресурсов CPU при большом количестве IP-проверок.

  3. Сопоставление маршрутов Apache APISIX принимает все переменные Nginx в качестве условий и поддерживает пользовательские функции; другие шлюзы имеют несколько встроенных условий.

  4. Apache APISIX использует etcd в качестве центра конфигурации. Нет единой точки отказа, и если одна машина выйдет из строя, кластер шлюзов продолжит работать нормально. Другие шлюзы, основанные на реляционных базах данных, имеют проблему единой точки отказа.

  5. Конфигурация Apache APISIX достигает всех узлов шлюза в течение 1 миллисекунды, используя механизм watch в etcd; другие шлюзы опрашивают базу данных регулярно, и обычно требуется 5 секунд для получения последней конфигурации.

  6. Плагины Apache APISIX были тщательно настроены для поддержания задержки на уровне миллисекунд при высокой нагрузке.

  7. Уникальная организация плагинов и функция низкого кода в Apache APISIX значительно снижают порог вторичной разработки.

Дополнительная информация

Tags: