Первоначально высокопроизводительный шлюз был разработан таким образом.

Java
Первоначально высокопроизводительный шлюз был разработан таким образом.

Шлюз относится к первому входу всех сервисов, так какие возможности должны быть у этого входа и как его спроектировать? Как шлюз в среде микросервисов соединяется с возможностями подключения, необходимыми для завершения бизнеса?

Архитектура Solomon_Xiao Gedan Высокопроизводительный шлюз APISIX "Dandan" с вами, по всей конструкции и возможностям шлюза трафика с севера на юг и с востока на запад. Нравится Нравится Нравится. Обратите внимание на мой публичный номерСоломон Сяо Гедан АрхитектураПолучите больше сюрпризов

Введение в APISIX

Apache APISIX — это динамический, работающий в режиме реального времени, высокопроизводительный API-шлюз, реализованный на основе сетевой библиотеки Nginx и т. д., предоставляющий богатые функции управления трафиком, такие как балансировка нагрузки, динамический восходящий поток, публикация в оттенках серого, предохранители служб, аутентификация удостоверений и возможность наблюдения.

Вы можете использовать Apache APISIX для обработки традиционного трафика север-юг, а также трафика восток-запад между сервисами или в качестве входного контроллера k8s.

Диаграмма технической архитектуры APISIX

характеристика

APISIX действует как запись трафика для обработки всех бизнес-данных, включая динамическую маршрутизацию, динамический восходящий поток, динамические сертификаты, A/B-тестирование, канареечный выпуск (выпуск в оттенках серого), сине-зеленое развертывание, ограничение тока и скорости, защиту от вредоносных атак, мониторинг оповещения, наблюдаемость услуг, управление услугами и т. д.

Все платформы

  • Облачный родной:
    • Независимо от платформы, без привязки к поставщику, APISIX работает на «голом железе» или Kubernetes.
  • Рабочая среда:
    • Поддерживаются как OpenResty, так и Tengine.
  • Поддержка ARM64:
    • Не беспокойтесь о блокировке базовой технологии.

многопротокольный

  • TCP/UDP-прокси:
    • Динамический прокси TCP/UDP.
  • Динамический брокер MQTT:
    • Поддерживает балансировку нагрузки MQTT с client_id и поддерживает стандарты протоколов MQTT 3.1.* и 5.0.
  • gRPC-прокси:
    • Проксируйте соединения gRPC через APISIX и управляйте своими службами gRPC, используя большинство функций APISIX.
  • Преобразование протокола gRPC:
    • Поддерживается преобразование протокола, поэтому клиенты могут получить доступ к вашему gRPC API через HTTP/JSON.
  • Прокси-сервер веб-сокета
  • Proxy Protocol
  • Агент Дуббо:
    • На базе Tengine можно реализовать прокси для запросов Dubbo.
  • HTTP(S) обратный прокси
  • SSL: динамически загружать SSL-сертификаты.

Полная динамическая способность

  • Горячие обновления и горячие плагины:
    • Конфигурации и плагины можно постоянно обновлять без перезапуска службы.
  • Переписать запрос прокси:
    • Поддерживает перезапись вышестоящего хоста, схемы URL-адресов, включения веб-сокета и информации заголовков запроса.
  • Переписать содержимое вывода:
    • Поддерживает пользовательскую модификацию кода состояния, тела и заголовков возвращаемого содержимого.
  • Serverless:
    • На каждом этапе APISIX вы можете добавлять и вызывать свои собственные функции.
  • Динамическая балансировка нагрузки:
    • Динамическая поддержка взвешенной циклической балансировки нагрузки.
  • Балансировка нагрузки, поддерживающая последовательное хеширование:
    • Динамически поддерживает балансировку нагрузки с последовательным хешированием.
  • медицинское обследование:
    • Включение проверки работоспособности вышестоящих узлов автоматически отфильтровывает неработоспособные узлы во время балансировки нагрузки, чтобы обеспечить стабильность системы.
  • Предохранитель:
    • Интеллектуально отслеживайте неработоспособные восходящие сервисы.
  • Прокси-зеркало:
    • Предоставляет возможность зеркалировать запросы клиентов.

улучшенная маршрутизация

  • Поддержка полного сопоставления путей и сопоставления префиксов
  • Поддерживает использование всех встроенных переменных Nginx в качестве условий маршрутизации, поэтому вы можете использовать файлы cookie, аргументы и т. д.
  • В качестве условия маршрутизации для публикации в градациях серого, A/B-тестирования и других функций.
  • Поддерживает различные операторы в качестве условий оценки маршрутизации, например {"arg_age", ">", 24}.
  • Поддержка пользовательской функции сопоставления маршрутов
  • IPv6: поддерживает сопоставление маршрутов с использованием формата IPv6.
  • Поддерживает автоматическое истечение (TTL) маршрутов
  • Поддержка приоритета маршрутизации
  • Поддержка пакетного HTTP-запроса

Безопасность

  • Несколько методов аутентификации: key-auth, JWT, basic-auth, wolf-rbac.
  • черный и белый список IP
  • Белый список рефералов
  • Поддержка IdP: поддержка внешних служб аутентификации, таких как Auth0, Okta, Authing и т. д., пользователи могут использовать это для подключения с помощью Oauth2.0 и других методов аутентификации.
  • лимит скорости
  • Ограничить количество запросов
  • Ограничение параллелизма
  • Защита от ReDoS (отказ в обслуживании с помощью регулярных выражений): встроенные политики для защиты от ReDoS без настройки.
  • CORS: включите CORS для вашего API.
  • Перехватчик URI: перехватывает пользовательские запросы на основе URI.
  • Запросить валидатор.

Удобен в эксплуатации и обслуживании

  • Наблюдаемость OpenTracing:
    • Поддерживаются Apache Skywalking и Zipkin.
  • Стыковка с обнаружением внешних служб:
    • Помимо встроенного etcd, поддерживаются режимы обнаружения DNS для Consul и Nacos, а также Eureka.
  • Мониторинг и метрики: Прометей
  • Кластер:
    • Узлы APISIX не имеют состояния, обратитесь к руководству по кластеризации etcd, чтобы создать кластер центра конфигурации.
  • Высокая доступность:
    • Поддерживает настройку нескольких адресов etcd в одном кластере.
  • приставка:
    • Встроенная консоль для управления кластером APISIX.
  • контроль версий:
    • Поддерживается множественный откат операций.
  • CLI:
    • Используйте командную строку для запуска, выключения и перезапуска APISIX.
  • Автономный режим:
    • Поддерживает загрузку правил маршрутизации из локальных файлов конфигурации, что более удобно в таких средах, как kubernetes (k8s).
  • Глобальные правила:
    • Позволяет выполнять плагины для всех запросов, таких как черный и белый списки, текущие и скоростные ограничения и т. д.
  • высокая производительность:
    • На одном ядре QPS может достигать 18к, а задержка всего 0,2мс.
  • инжекция неисправности
  • REST Admin API:
    • Используйте REST Admin API для управления Apache APISIX. По умолчанию доступ разрешен только 127.0.0.1. Вы можете изменить поле allow_admin в conf/config.yaml, чтобы указать список IP-адресов, которым разрешено вызывать Admin API. В то же время следует отметить, что Admin API использует аутентификацию по ключу для проверки личности вызывающего абонента, а поле admin_key в conf/config.yaml необходимо изменить перед развертыванием для обеспечения безопасности.
  • Внешний регистратор:
    • Экспорт журналов доступа во внешние инструменты управления журналами. (HTTP Logger, TCP Logger, Kafka Logger, UDP Logger)

Высокая масштабируемость

  • Пользовательский плагин:
    • Позволяет монтировать общие этапы, такие как инициализация, перезапись, доступ, балансировщик, фильтр заголовков, фильтр тела и этапы журнала.
  • Пользовательский алгоритм балансировки нагрузки:
    • На этапе балансировки можно использовать настраиваемые алгоритмы балансировки нагрузки.
  • Пользовательский маршрут:
    • Поддержка пользователей для самостоятельной реализации алгоритмов маршрутизации.

Тестирование производительности

Для тестирования APISIX используется 8 основных серверов, число запросов в секунду может достигать 140000, а задержка составляет всего 0,2 миллисекунды.

обрати внимание наАрхитектура Solomon_Xiao Gedan, последующие усилия по запуску высококачественного контента

твойСтавь лайк и следуйЭто постоянная движущая сила структуры Solomon_Xiaogedan.

Исторические Горячие Статьи