API-шлюз Apache APISIX
Apache APISIX — это динамический, высокопроизводительный шлюз API, работающий в режиме реального времени.
APISIX API Gateway предоставляет богатые функции управления трафиком, такие как балансировка нагрузки, динамический восходящий поток, канареечный выпуск, разрыв цепи, аутентификация, наблюдаемость и многое другое.
Вы можете использовать шлюз APISIX API для обработки традиционного трафика север-юг, а также трафика восток-запад между службами. Его также можно использовать в качестве входного контроллера k8s.
Техническая архитектура Apache APISIX:
Сообщество
- Пожалуйста, напишите обзор APISIX в G2.
- Список рассылки: отправьте письмо по адресу [email protected] и следуйте ответу, чтобы подписаться на список рассылки.
- Slack Workspace — ссылка-приглашение (откройте проблему, если срок действия этой ссылки истек), а затем присоединитесь к каналу #apisix (Каналы -> Обзор каналов -> найдите «apisix»).
- - подписывайтесь на нас и взаимодействуйте с нами, используя хэштег
#ApacheAPISIX
- Документация
- Обсуждения
- Блог
Функции
Вы можете использовать APISIX API Gateway в качестве входа трафика для обработки всех бизнес-данных, включая динамическую маршрутизацию, динамический восходящий поток, динамические сертификаты, A/B-тестирование, канареечный выпуск, сине-зеленое развертывание, предельную скорость, защиту от вредоносных атак, метрики, мониторинг. сигналы тревоги, наблюдаемость услуг, управление услугами и т. д.
Все платформы
- Cloud-Native: не зависит от платформы, не привязан к поставщику, APISIX API Gateway может работать как на «голом железе», так и в Kubernetes.
- Поддерживает ARM64: не беспокойтесь о блокировке инфраструктурной технологии.
Мульти протоколы
- TCP/UDP-прокси: динамический TCP/UDP-прокси.
- Прокси-сервер Dubbo: динамический HTTP для прокси-сервера Dubbo.
- Динамический прокси-сервер MQTT: поддерживает балансировку нагрузки MQTT по
client_id
, оба поддерживают MQTT 3.1.*, 5.0. - Прокси-сервер gRPC: проксирование трафика gRPC.
- Веб-прокси gRPC: проксирование веб-трафика gRPC в службу gRPC.
- Перекодирование gRPC: поддерживает перекодирование протоколов, чтобы клиенты могли получить доступ к вашему API gRPC с помощью HTTP/JSON.
- Прокси-сервер
- Прокси-протокол
- HTTP(S) прокси-сервер пересылки
- SSL: динамическая загрузка сертификата SSL.
- HTTP/3 с QUIC
Полная динамика
- Горячие обновления и горячие плагины: постоянно обновляет свои конфигурации и плагины без перезапусков!
- Перезапись прокси: поддержка перезаписи
host
, uri
, schema
, method
и headers
запроса перед отправкой в восходящий поток. - Перезапись ответа: установите для клиента индивидуальный код состояния ответа, тело и заголовок.
- Динамическая балансировка нагрузки: циклическая балансировка нагрузки с учетом веса.
- Балансировка нагрузки на основе хэша: балансировка нагрузки с последовательными сеансами хеширования.
- Проверки работоспособности: включите проверку работоспособности на вышестоящем узле и автоматически фильтруйте неработоспособные узлы во время балансировки нагрузки, чтобы обеспечить стабильность системы.
- Circuit-Breaker: интеллектуальное отслеживание неработоспособных восходящих сервисов.
- Прокси-зеркало: обеспечивает возможность зеркалирования клиентских запросов.
- Разделение трафика: позволяет пользователям постепенно направлять проценты трафика между различными восходящими потоками.
Детальная маршрутизация
- Поддерживает полное сопоставление путей и сопоставление префиксов.
- Поддерживайте все встроенные переменные Nginx в качестве условий маршрутизации, поэтому вы можете использовать
cookie
, args
и т. д. в качестве условий маршрутизации для реализации канареечного выпуска, A/B-тестирования и т. д. - Поддержка различных операторов в качестве условий оценки маршрутизации, например
{"arg_age", ">", 24}
- Поддержка функции сопоставления пользовательского маршрута
- IPv6: используйте IPv6 для сопоставления маршрута.
- Поддержка срока жизни
- Приоритет поддержки
- Поддержка пакетных HTTP-запросов
- Поддержка фильтрации маршрута по атрибутам GraphQL.
Безопасность
- Широкая поддержка аутентификации и авторизации:
- ключ-аутентификация
- JWT
- базовая аутентификация
- волк-рбак
- каюта
- плащ-ключ
- дверь
- Белый/черный список IP-адресов
- Белый/черный список рефереров
- IdP: поддержка внешних платформ идентификации, таких как Auth0, okta и т. д.
- Лимит-треб.
- Лимит-счет
- Ограничение параллелизма
- Anti-ReDoS (отказ в обслуживании с использованием регулярных выражений): встроенные политики для Anti-ReDoS без настройки.
- CORS Включите CORS (совместное использование ресурсов между источниками) для вашего API.
- Блокировщик URI: блокируйте клиентский запрос по URI.
- Запросить валидатор
- CSRF На основе метода
Double Submit Cookie
защитите свой API от атак CSRF.
ОПС дружелюбный
- Трассировка Зипкина: Зипкин
- APM с открытым исходным кодом: поддержка Apache SkyWalking
- Работает с обнаружением внешних служб: помимо встроенного etcd, он также поддерживает Consul, Consul_kv, Nacos, Eureka и Zookeeper (CP).
- Мониторинг и метрики: Прометей
- Кластеризация: узлы APISIX не сохраняют состояние, создают кластеризацию центра конфигурации, см. Руководство по кластеризации etcd.
- Высокая доступность: поддержка настройки нескольких адресов etcd в одном кластере.
- Панель управления
- Контроль версий: поддерживает откат операций.
- CLI: стартстопперезагрузка APISIX через командную строку.
- Автономный: поддерживает загрузку правил маршрутизации из локального файла YAML, он более удобен, например, в kubernetes (k8s).
- Глобальное правило: позволяет запускать любой плагин для всех запросов, например: ограничение скорости, IP-фильтр и т. д.
- Высокая производительность: одноядерное число запросов в секунду достигает 18 тыс. при средней задержке менее 0,2 миллисекунды.
- Внесение ошибок
- REST Admin API: используя REST Admin API для управления Apache APISIX, который по умолчанию разрешает доступ только 127.0.0.1, вы можете изменить
allow_admin
в conf/config.yaml
чтобы указать список IP-адресов, которым разрешено вызывать Admin API. . Также обратите внимание, что API администратора использует аутентификацию по ключу для проверки личности вызывающего абонента. - Внешние регистраторы: экспортируйте журналы доступа во внешние инструменты управления журналами. (HTTP Logger, TCP Logger, Kafka Logger, UDP Logger, RocketMQ Logger, SkyWalking Logger, Cloud Logging Alibaba (SLS), Cloud Logging Google, Splunk HEC Logger, File Logger, SolarWinds Loggly Logging, TencentCloud CLS).
- ClickHouse: отправка журналов в ClickHouse.
- Elasticsearch: отправка журналов в Elasticsearch.
- Datadog: передача пользовательских метрик на сервер DogStatsD, который поставляется в комплекте с агентом Datadog, по протоколу UDP. DogStatsD по сути представляет собой реализацию протокола StatsD, который собирает пользовательские метрики для агента Apache APISIX, объединяет их в одну точку данных и отправляет на настроенный сервер Datadog.
- Шлемовые диаграммы
- HashiCorp Vault: поддержка решения по управлению секретами для доступа к секретам из безопасного хранилища Vault, поддерживаемого в среде с низким уровнем доверия. В настоящее время ключи RS256 (пары открытого и закрытого ключей) или секретные ключи можно связать из хранилища в плагине аутентификации jwt-auth с использованием секретного ресурса APISIX.
Высокая масштабируемость
- Пользовательские плагины: позволяют перехватывать общие этапы, такие как
rewrite
, access
, header filter
, body filter
и log
, а также позволяют перехватывать этап balancer
. - Плагин можно написать на Java/Go/Python.
- Плагин можно написать с помощью Proxy Wasm SDK.
- Пользовательские алгоритмы балансировки нагрузки. На этапе
balancer
можно использовать собственные алгоритмы балансировки нагрузки. - Пользовательская маршрутизация. Помогите пользователям самостоятельно реализовать алгоритмы маршрутизации.
Многоязычная поддержка
- Apache APISIX — это многоязычный шлюз для разработки плагинов, обеспечивающий поддержку через
RPC
и Wasm
. - Путь RPC — это текущий путь. Разработчики могут выбрать язык в соответствии со своими потребностями, и после запуска независимого процесса с RPC он обменивается данными с APISIX через локальную связь RPC. На данный момент APISIX поддерживает Java, Golang, Python и Node.js.
- Wasm или WebAssembly — экспериментальный способ. APISIX может загружать и запускать байт-код Wasm через плагин APISIX Wasm, написанный с помощью Proxy Wasm SDK. Разработчикам нужно только написать код в соответствии с SDK, а затем скомпилировать его в байт-код Wasm, который будет работать на виртуальной машине Wasm с APISIX.
Бессерверный
- Функции Lua: вызов функций на каждом этапе APISIX.
- AWS Lambda: интеграция с функцией AWS Lambda в качестве динамического восходящего потока для прокси-сервера всех запросов для определенного URI к конечной точке шлюза AWS API. Поддерживает авторизацию через ключ API и секрет доступа AWS IAM.
- Функции Azure: бесшовная интеграция с бессерверной функцией Azure в качестве динамического восходящего потока для прокси-сервера всех запросов для определенного URI в облаке Microsoft Azure.
- Apache OpenWhisk: бесшовная интеграция с Apache OpenWhisk в качестве динамического восходящего потока для проксирования всех запросов к определенному URI в ваш собственный кластер OpenWhisk.
Начать
Установка
Пожалуйста, обратитесь к документации по установке.
Начиная
Руководство по началу работы — отличный способ изучить основы APISIX. Просто следуйте инструкциям в разделе «Начало работы».
Кроме того, вы можете следовать документации, чтобы попробовать больше плагинов.
API администратора
Apache APISIX предоставляет REST Admin API для динамического управления кластером Apache APISIX.
Разработка плагинов
Вы можете обратиться к руководству по разработке плагинов и к example-plugin
. Чтение концепции плагина поможет вам узнать больше о плагине.
Дополнительные документы можно найти на сайте документации Apache APISIX.
Контрольный показатель
При использовании восьмиядерного сервера AWS количество запросов в секунду APISIX достигает 140 000 с задержкой всего 0,2 мс.
Сценарий тестирования имеет открытый исходный код, вы можете попробовать и внести свой вклад.
APISIX также отлично работает в AWS graviton3 C7g.
Истории пользователей
- Европейская платформа eFactory: шлюз безопасности API – использование APISIX в платформе eFactory
- Программное обеспечение справочной системы Copernicus
- Больше историй
Кто использует API-шлюз APISIX?
Широкий спектр компаний и организаций используют APISIX API Gateway для исследовательских, производственных и коммерческих продуктов, ниже приведены некоторые из них:
- Эйрваллекс
- Билибили
- КВТЕ
- Европейская платформа электронной фабрики
- Европейская справочная система Коперника
- Джили
- ЧЕСТЬ
- Горизонт Робототехника
- iQIYI
- Леново
- НАСА Лаборатория реактивного движения
- Наюки
- ОППО
- ЦинОблако
- Свисском
- Тенсент игра
- Травелски
- виво
- Сина Вейбо
- WeCity
- WPS
- XPENG
- Увеличить
Логотипы
- Логотип Apache APISIX (PNG)
- Источник логотипа Apache APISIX
Благодарности
Вдохновлен Конгом и Оранжевым.
Лицензия
Лицензия Апач 2.0