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

OSCHINA-MIRROR/kevin158-flowlimit

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

Введение

Программа, основанная на OpenResty, представляет собой скрипт управления разделением и ограничением потока, работающий в соответствии с конфигурационной политикой и позволяющий в реальном времени корректировать конфигурацию через URI администрирования.

Описание компонентов

  • lua_scripts — Lua-скрипты, предназначенные для развертывания на OpenResty; точки внедрения указаны в файле nginx/conf/nginx.conf.
  • lualib — Lua-библиотеки, предназначенные для развертывания на OpenResty; включает различные инструментальные библиотеки Lua, необходимые для реализации контроля.
  • nginx/conf/nginx.conf — конфигурационный файл OpenResty.
  • lua_ext — расширения зависимостей, включающие uuid_ext, cookie_ext.
  • deps — сторонние библиотеки зависимостей, включая исходный код библиотеки UUID для uuid_ext.

Установка

  1. Установите OpenResty.
  2. Установите uuid_ext и cookie_ext.
  3. Копируйте папки lua_scripts и lualib в корневую директорию установки OpenResty.

Конфигурация

Файл lualib/ddtk/limit_policy.json Замечание: Этот файл должен иметь права записи для пользователя рабочего процесса OpenResty.```json { "версия" : 1472000000, "включить_лимит" : true, "личный_ключ" : "offline", "личный_qps" : 8, "общий_qps" : 50, "общий_контейнер" : 200, "секретный_ключ" : "abcdefgsalt", "корневой_секретный_ключ" : "123456789", "максимальный_интервал_доступа_секунды" : 3600, "область_установки_куки" : ".topdomain.com", "путь_куки" : "/", "url_блокировки" : "http://192.168.1.110/deny", "url_входа" : "http://192.168.1.116/login", "ключ_токена_доступа" : "some_biz_token", "тип_удаленного_пользователя" : 0, "логическая_операция_фильтров" : "and", "фильтры" : [ "читать_параметры", "единичный_qps", "черный_список_ip", [ ["общий_qps", "сбросить_токен_доступа"], ["проверить_корневой_токен", "проверить_токен_доступа", "сбросить_токен_доступа"] ] ], "включить_расщепление" : true, "расщепители" : [ "простой" ] }

| --- | --- |
| `version` | Версия конфигурации, значение в секундах с начала эпохи Unix, должно увеличиваться при каждом обновлении для применения изменений. |
| `enable_limit` | Включение/выключение лимита скорости запросов (`true` — включен, `false` — выключен). |
| `enable_split` | Включение/выключение режима разделения (`true` — включен, `false` — выключен). |
| `personal_key` | Метод идентификации личного пользователя, возможные значения: offline, ip, token. |
| `personal_qps` | Лимит скорости запросов для каждого отдельного пользователя. |
| `entire_qps` | Глобальный лимит скорости запросов. |
| `entire_bucket` | Максимальный допустимый объём превышения глобального лимита скорости запросов. |
| `secret_key` | Ключ шифрования токена доступа, который должен быть уникальным для бизнес-кластера. |Это описание конфигурации помогает понять основные параметры и их влияние на работу системы управления потоками и ограничениями.

| Параметр | Описание |
| --- | --- |
| `root_secret_key` | Основной зашифрованный ключ, который должен совпадать с ключом входа в систему |
| `max_access_interval_secs` | Максимальный интервал доступа, измеряемый в секундах |
| `cookie_domain` | Домен записи Cookie при работе в режиме PC |
| `cookie_path` | Путь записи Cookie при работе в режиме PC |
| `deny_url` | URL страницы дружественного отклонения запросов при превышении лимита в режиме PC, требует обработки параметра `returnurl`, указывающего адрес повторной попытки |
| `login_url` | URL страницы аутентификации при недействительности основного ключа при работе в режиме PC |
| `access_token_key_name` | Имя ключа доступа |
| `remote_user_type` | Тип удалённого пользователя |
| `filters_top_logic_op` | Логическое соединение верхнего уровня для выражения ограничений доступа, значение по умолчанию — `and` |
| `filters` | Выражение ограничений доступа, представленное в виде рекурсивного списка, где логическое соединение чередуется между элементами, можно изменять используя `[]` |
| `spliters` | Список разделителей, если один из разделителей получает целевой объект разделения, последующие разделители не будут выполнены |

# Функциональные возможности
1. Возможность разделения трафика для удобства проведения A/B тестирования на серверах backend
2. Ограничение доступа, основанное на логическом выражении, поддерживающее сложные вложенные определения
3.Деградация сервиса для запросов, ограниченных доступом, с конфигурацией деградации, будет осуществляться переадресацией на URL деградации.
4. Возможность изменения конфигураций разделения и ограничения доступа онлайн через URL управления доступом с мгновенным применением.
5. Разделители и фильтры ограничения доступа поддерживают расширение пользователей при соблюдении интерфейса и расположении в специальных директориях.# Управление URL
1. Обновление политики ограничения доступа /update_limit_policy  
HTTP POST + JSON 
Пример: Отключение разделения и ограничения доступа
Запросное тело::
{
    "version": 1472000002,
    "enable_limit": false,
    "enable_split": false
}
2. Получение информации о политике ограничения доступа /query_limit_policy
HTTP GET 
3. Обновление других конфигураций /update_shared_memory
HTTP POST + JSON 
Пример: Добавление конфигурации деградации
Запросное тело::
{
    "dic_name": "degrade_url_mapping",
    "operation": "insert",
    "records": [
        {
            "key": "/query/user",
            "value": "http://backup.some.com/query/user"
        },
        {
            "key": "/query/logo",
            "value": "http://backup.some.com/query/logo"
        }
    ]
}

# Контактная информация
Дон Хехот 421093703@qq.com

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

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

Введение

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

Обновления

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

Участники

все

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

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