1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors_Tencent-ModernFlux

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

1. Проектный фон

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

  • Требования: во время проведения мероприятий типа «Мгновенная распродажа» в бэкенд системы поступает огромный объём трафика, что создаёт нагрузку на систему. Этот мгновенный трафик может превышать прогнозируемый пиковый трафик в 7–8 раз, а иногда и более чем в 10 раз.
  • Бэкенд-архитектура: бэкенд широко использует микросервисную архитектуру, структура топологии системы сложна, и трудно оценить общую нагрузку безопасности системы. Кроме того, устойчивость к нагрузкам у разных сервисов внутри системы неодинакова: некоторые модули демонстрируют линейное снижение производительности с увеличением трафика, вызывая эффект «лавины», который может привести к сбою всей системы.
  • Уровень эксплуатации: независимая развёртывание каждого бизнес-модуля приводит к низкой эффективности использования машинных ресурсов, а смешанное развёртывание может влиять на трафик между разными бизнес-процессами.

Эти проблемы нельзя решить простым добавлением машин. Во-первых, заранее невозможно запросить такое количество ресурсов. Даже если ресурсы будут предоставлены, после пика трафика эффективность использования машин будет низкой, что приведёт к ненужным затратам. Поэтому требуется механизм защиты от нагрузки, который позволит системе выдерживать внезапные всплески трафика и предоставлять пользователям гибкие услуги, одновременно снижая операционные расходы.

2. Дизайн решения

Дизайн решения должен соответствовать следующим основным принципам:

  • Механизм защиты от нагрузки не должен существенно увеличивать существующую нагрузку на систему, он должен быть незаметным в нормальных условиях трафика и обеспечивать защиту системы во время пиковых нагрузок.
  • Поддержка гетерогенного машинного развёртывания и удобство динамического масштабирования системы.
  • Сам сервис управления трафиком должен быть нечувствительным к изменениям трафика, чтобы избежать частого масштабирования при резких изменениях трафика.
  • Возможность контролировать как трафик отдельных машин, так и общий трафик системы.
  • Способность управлять как трафиком на уровне бизнеса, так и трафиком на уровне ресурсов, обеспечивая безопасное совместное использование машин различными бизнес-процессами и повышая эффективность использования ресурсов.
  • Обеспечение эффективного взаимодействия между восходящими и нисходящими потоками, позволяя восходящим потокам эффективно управлять входящим трафиком, а нисходящим — оказывать «обратное давление», позволяя восходящим потокам активно ограничивать доступ к нисходящим и при необходимости «отключать».
  • Наличие хорошей способности к восстановлению после сбоев, минимизируя влияние на бизнес при временном отказе сервиса управления трафиком.
  • Простота механизма управления трафиком для удобства эксплуатации, без значительного увеличения сложности системы.

Исходя из этих принципов, система защиты от нагрузки разрабатывается на трёх уровнях:

  • Управление входящим трафиком в реальном времени через сервис квотирования.
  • Периодический мониторинг потребления аппаратных ресурсов отдельными машинами.
  • Мониторинг качества услуг нисходящих потоков в режиме реального времени.

Архитектура системы

3. Каталог

1.1 CPPAPI

— C++ версия библиотеки API управления трафиком, подробности использования см. в (docs/wiki/API-C++.md).

3.2 PHPAPI

— Версия библиотеки API управления трафиком PHP, подробности использования см. в (docs/wiki/API-php.md).

3.3 Protocol

— Протокол Pb.

3.4 QuaAgent

— Агент с небольшим квотированием, предназначенный для балансировки нагрузки для действий с низким QPS. Зависимости среды: среда Linux x64, рекомендуется CentOS 7.x; Golang 1.0 или выше. Компиляция: перейдите в QuaAgent/src/flux и выполните sh huild.sh. Запустите ./qagent.

3.5 QuaServer

— Сервер расчёта квот, собирает статистику и распределяет квоты по узлам. Компиляция: войдите в каталог QuaServer и выполните make.

4. Примеры эффектов

Image text

Image text

Image text

5. Лицензия

ModernFlux основан на лицензии BSD3, подробнее см. LICENSE.

Комментарии ( 0 )

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

Введение

Микросервисная система защиты нагрузки от Tencent. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/mirrors_Tencent-ModernFlux.git
git@api.gitlife.ru:oschina-mirror/mirrors_Tencent-ModernFlux.git
oschina-mirror
mirrors_Tencent-ModernFlux
mirrors_Tencent-ModernFlux
master