RU Balancer: Add more details to BalancerObject

This commit is contained in:
Nikita Korotaev 2024-12-30 09:45:50 +05:00 committed by GitHub
parent b99deca89a
commit 4a12399fc7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -220,11 +220,12 @@
Массив строк, каждая из которых будет использоваться для сопоставления с префиксом тега исходящего канала. Например, для следующих тегов исходящих каналов: `[ "a", "ab", "c", "ba" ]`, `"selector": ["a"]` будет соответствовать `[ "a", "ab" ]`.
Если найдено несколько исходящих каналов, балансировщик нагрузки в настоящее время случайным образом выбирает один из них в качестве конечного исходящего канала.
Обычно, когда находится несколько исходящих подключений (outbound), они используются для равномерного распределения нагрузки.
> `fallbackTag`: string
Если балансировщик нагрузки не может выбрать подходящий исходящий канал, используется исходящий канал, указанный в этом параметре.
Если на основе результатов наблюдения за подключениями все исходящие (outbound) оказываются недоступными, то используется исходящее подключение, указанное в этой настройке.
Примечание: необходимо добавить конфигурацию [observatory](./observatory.md#observatoryobject) или [burstObservatory](./observatory.md#burstobservatoryobject).
> `strategy`: [StrategyObject](#strategyobject)
@ -239,14 +240,60 @@
- `random`: значение по умолчанию. Случайным образом выбирает соответствующий исходящий прокси.
- `roundRobin`: выбирает соответствующие исходящие прокси по очереди.
- `leastPing`: выбирает соответствующий исходящий прокси с наименьшей задержкой на основе результатов наблюдений за соединением. Необходимо добавить параметр конфигурации [observatory](./observatory.md#observatoryobject).
- `leastLoad`: выбирает наиболее стабильный соответствующий исходящий прокси на основе результатов наблюдений за соединением. Необходимо добавить параметр конфигурации [burstObservatory](./observatory.md#burstobservatoryobject).
- `leastPing` Выбирает исходящий прокси с наименьшей задержкой на основе результатов наблюдения за подключениями. Необходимо добавить конфигурацию [observatory](./observatory.md#observatoryobject) или [burstObservatory](./observatory.md#burstobservatoryobject).
- `leastLoad` Выбирает наиболее стабильный исходящий прокси на основе результатов наблюдения за подключениями. Необходимо добавить конфигурацию [observatory](./observatory.md#observatoryobject) или [burstObservatory](./observatory.md#burstobservatoryobject).
> `settings`: [StrategySettingsObject](#strategysettingsobject)
##### StrategySettingsObject
Это необязательный параметр конфигурации, формат которого различается для разных стратегий балансировки нагрузки. В настоящее время этот параметр конфигурации можно добавить только для стратегии балансировки нагрузки `leastLoad`.
```json
{
"expected": 2,
"maxRTT": "1s",
"tolerance": 0.01,
"baselines": ["1s"],
"costs": [{
"regexp": false,
"match": "tag",
"value": 0.5
}]
}
```
> `expected`: number
Количество оптимальных узлов, выбираемых балансировщиком нагрузки. Трафик будет случайным образом распределен между этими узлами.
> `maxRTT`: string
Максимально допустимое время RTT (задержки) при измерении скорости.
> `tolerance`: float number
Максимально допустимая доля неудачных измерений скорости, например, 0.01 означает, что допустим 1% неудачных измерений (похоже, не реализовано).
> `baselines`: \[ string \]
Максимально допустимое стандартное отклонение времени RTT при измерении скорости.
> `costs`: \[ CostObject \]
Необязательный параметр конфигурации, массив, позволяющий задать веса для всех исходящих соединений.
> `regexp`: true | false
Использовать ли регулярные выражения для выбора `Tag` исходящего соединения.
> `match`: string
Сопоставление `Tag` исходящего соединения.
> `value`: float number
Значение веса. Чем больше значение, тем менее вероятно, что соответствующий узел будет выбран.
### Примеры конфигурации балансировки нагрузки
```json
@ -309,4 +356,3 @@
- `tld-!cn`: содержит домены верхнего уровня, не используемые в материковом Китае, например, доменные имена, оканчивающиеся на `.tw` (Тайвань), `.jp` (Япония), `.sg` (Сингапур), `.us` (США), `.ca` (Канада) и т.д.
Вы также можете просмотреть полный список доменов здесь: [Domain list community](https://github.com/v2fly/domain-list-community).