Как vivo интегрируется с APISIX

November 25, 2022

Case Study

Обзор

С мая 2021 года компания vivo внедрила Apache APISIX в качестве своего API-шлюза. После более чем года практики в vivo, APISIX решил множество технических и бизнес-задач и был использован в крупных масштабах.

Проблемы до использования APISIX

  • Сложное управление бизнес-сценариями и обслуживание системы

    Из-за быстрого роста бизнеса существует множество сценариев и систем, которые их обслуживают, и vivo нуждалась в унифицированном способе управления.

  • Взаимодействие между плоскостью данных и плоскостью управления

    Для средних и крупных компаний, таких как vivo, неожиданные проблемы в плоскости данных могут повлиять на плоскость управления.

  • Отсутствие поддержки многомерных ресурсов

    Разнообразие проектов приводит к различным доменным именам и URL. Бизнес-отдел нуждается в поиске по различным измерениям ресурсов.

  • Неуправляемое влияние проблем

    Поскольку проекты vivo сложны, влияние возникающих проблем неуправляемо. Использование некоторых сложных плагинов усугубляет это.

Заменив NGINX на APISIX, vivo в итоге успешно достигла ряда результатов, описанных ниже.

Достижения после использования APISIX

  • Высокая доступность

    С момента запуска APISIX в vivo не произошло ни одного крупного сбоя, и доступность системы превышает 99,99%.

  • Высокая производительность

    Обрабатывая значительный онлайн-трафик и обслуживая большое количество сервисов, текущий онлайн-трафик достигает почти одного миллиона QPS (запросов в секунду).

  • Богатые функции

    Благодаря богатым функциям APISIX, он может охватывать почти все распространенные сценарии проксирования NGINX. Около 50% проектов vivo было перенесено с NGINX на кластеры APISIX.

  • Поддержка развития облачных технологий

    Поддержка контейнеризации на базе K8s достигла масштаба 10,000. Около 40% проектов было перенесено с физических серверов и виртуальных машин на платформу контейнеризации K8s, поддерживая и продвигая прогресс контейнеризации в vivo.

Системный дизайн vivo на основе APISIX

Далее рассмотрим системный дизайн vivo после внедрения APISIX.

Пользовательская архитектура на основе APISIX

Архитектура API-шлюза vivo с использованием APISIX

Из диаграммы выше можно увидеть, что vivo:

  • Завершила построение шлюзов для трафика уровня 4 и уровня 7, которые поддерживаются APISIX.
  • Реализовала доступ к трафику и смешанное развертывание на физических серверах, виртуальных машинах и контейнерах.
  • Внедрила управление кластерами APISIX.
  • Интегрировала внутреннюю платформу DevOps и сервисы развертывания бизнеса для быстрого и автоматического доступа к трафику.
  • Улучшила мониторинг.

Улучшения в управлении конфигурацией и запуске

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

Изменения в плоскости управления

Весь процесс может выглядеть следующим образом:

После настройки данных на платформе изменений A6, информация доставляется через RPC-уведомление в ManagerAPI, который был создан vivo на основе открытого APISIX Dashboard.

Затем трафик отправляется в apisix-agent. APISIX регулярно опрашивает apisix-agent через привилегированный процесс для получения задач на изменения. Далее привилегированный процесс уведомляет worker через общие очереди для реализации изменений в памяти.

В то же время APISIX информирует apisix-agent о результатах задач и затем доставляет их в ManagerAPI. Кроме того, платформа изменений A6 может опрашивать ManagerAPI для получения результатов задач.

Режим управления и публикации vivo

etcd является ключевым элементом APISIX, позволяя независимую работу плоскостей управления и данных. Учитывая уникальность архитектуры, vivo отказалась от etcd в вышеописанном процессе. Вот некоторые причины.

Из-за разнообразия проектов vivo, существует множество доменных имен и URL. Кроме того, бизнес-отделы нуждаются в запросах по различным измерениям. Благодаря адаптивности APISIX, который поддерживает не только etcd, но и различные базы данных, vivo смогла легко использовать базы данных, такие как MongoDB, для совместной работы с APISIX.

Кроме того, vivo внесла следующие изменения для совместимости с Apache APISIX.

  • Разработка компонента Agent

    С мая 2021 года vivo внедрила Apache APISIX. Учитывая технический контекст, vivo не была уверена в своих возможностях внедрить APISIX, так как у нее не было опыта работы с OpenResty и Lua. Кроме того, существует множество задач, не связанных с пересылкой, таких как сбор логов и обработка мониторинга, что может увеличить сложность управления плоскостью данных. В результате vivo разработала компонент agent для снижения сложности разработки.

  • Запись данных на диск

    Чтобы сделать систему настраиваемой и позволить плоскости данных работать независимо, снижая зависимость от плоскости управления, vivo записывает конфигурационный файл на диск. При запуске APISIX поддерживает полное извлечение из центра конфигурации, а также прямое получение ресурсов конфигурации из каталога файлов на локальном диске. Это значительно повышает независимость данных и устойчивость системы. Кроме того, очень интуитивно понятно, как настроенные маршруты и информация о вышестоящих серверах, размещенные на диске, помогают в устранении неполадок.

  • Обратный вызов результата задачи изменения

    Как крупная компания, vivo должна быть уверена, что изменения ресурсов, таких как маршрутизаторы и вышестоящие серверы, могут быть гарантированно эффективными и успешными, и система может сообщить об ошибке, даже если эти изменения не удались. Такая логика ACK (код подтверждения) гарантирует, что NGINX workers на машине могут выполнить обратный вызов. Когда задачи обратного вызова успешны, все workers на APISIX обновляют изменения ресурсов в соответствующей памяти.

Раздельное управление кластерами

Управление разделением кластеров

Открытая версия APISIX предоставляет etcd для общего использования. Однако проекты компании сложны, и возникающие проблемы неуправляемы. Кроме того, неизбежно использование сложных плагинов, что влияет на производительность системы.

Поэтому управление осуществляется путем разделения кластеров для реализации изоляции конфигурации кластеров на APISIX, что позволяет:

  • Контролировать область сбоев и эффективно поддерживать сложность проектов, не влияя на другие проекты.
  • Эффективно снижать нагрузку, вызванную не пересылочным слоем APISIX, когда узлы контейнеров часто меняются.
  • Уменьшать влияние нагрузки, вызванной проверкой здоровья.

Увеличение QPS, поддерживаемого HTTPS

Согласно соответствующим требованиям Министерства промышленности и информационных технологий Китая, внешний сетевой трафик должен проходить через протокол HTTPS. Как протокол шифрования HTTP на основе TLS, HTTPS значительно нагружает процессор в процессе шифрования и дешифрования.

Когда маршрутизация и другие конфигурации одинаковы, трафик, который может обрабатывать HTTPS, составляет около 1/8 - 1/10 от трафика HTTP.

После установки ускорителя Intel® QAT (QuickAssist Technology), vivo передает обработку дешифрования ускорителю QAT, что освобождает процессор, тем самым увеличивая QPS, поддерживаемый HTTPS на одной машине. Как видно из рисунка ниже, емкость HTTPS на одной машине примерно удвоилась.

Данные, показывающие улучшение vivo в обработке трафика

Как vivo сочетает бизнес с APISIX

Поддержка развития контейнеризации

Для поддержки развития контейнеризации vivo самостоятельно разработала контроллер K8s ingress. Ниже приведены некоторые его функции.

  1. Адаптация к модифицированному механизму асинхронной передачи изменений конфигурации vivo.

  2. Обработка уведомлений о событиях в нескольких кластерах K8s и передача их в APISIX.

  3. Обработка сложных сценариев проектов, таких как:

  • Один сервер с несколькими портами.

  • Когда другие серверы RPC-фреймворков, такие как Dubbo и gRPC, подключены к K8s, требуется единый набор логики обработки для уведомления APISIX или других фреймворков о портах в соответствии с характеристиками конфигурации проектов.

  1. Адаптация к особым потребностям внутренних DevOps и других автоматизированных сценариев компании, облегчая быстрое развертывание и включение трафика.

Помощь в миграции проектов с NGINX на APISIX

Проекты vivo развернуты на существующем кластере NGINX и долгое время стабильно работают. Однако это приводит к не бизнес-нагрузкам и нестабильности проектов. Следовательно, миграция является сложной задачей. Как же продвигать миграцию проектов на APISIX?

  • Сначала найти проект сотрудничающего отдела, хорошо обслужить бизнес-отдел, чтобы установить эталон, и предоставить техническое руководство и обучение.

  • Построить удобную систему управления плоскостью управления для облегчения доступа бизнеса и многомерного управления бизнес-отделами.

  • Предоставить возможность автоматического преобразования и базовой конфигурации для преобразования конфигурации NGINX в конфигурацию APISIX.

Обновление APISIX и поддержка его открытой версии

На основе версии APISIX 2.4, vivo внесла некоторые изменения и выпустила новую версию, которая была обновлена до более новой во втором квартале этого года.

С одной стороны, благодаря модульной архитектуре APISIX, относительно легко интегрировать модифицированный код Lua vivo в ветку более высокой версии APISIX. С другой стороны, vivo также продолжает обновлять секцию OpenResty, примерно одну версию в год. Поскольку vivo использует много PATCH и некоторые полезные функции, такие как QAT, обновление этого компонента является сложным и трудоемким.

Бесплатная версия NGINX обновляется медленно и неактивна. Vivo рассматривает возможность совместной разработки с APISIX. Чтобы уменьшить количество человеческих ресурсов, необходимых для тестирования системы, vivo внедрила Robot Framework, универсальную платформу автоматизации тестирования для системного интеграционного тестирования. Они продвигают соответствующие компоненты для покрытия модульных тестов и модели разработки TDD (Test-driven development).

Планы vivo на будущее

В следующем году vivo планирует расширить APISIX как шлюз трафика до API-шлюза, используя его преимущества ограничения скорости, аутентификации, разрыва цепи и т.д. Учитывая возможность сочетания APISIX с DPDK-NGINX, vivo также будет развивать технический персонал и участвовать в создании сообщества. Кроме того, она укрепит базовые навыки, чтобы заложить хорошую основу для управления трафиком и сервисами.

Добро пожаловать узнать больше о Apache APISIX.

Вы можете связаться с нами по адресу https://api7.ai/contact.

Tags: