Программа, основанная на 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
.uuid_ext
и cookie_ext
.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 )