load_balancing
- случайный (по умолчанию)
- близкое имя хоста
- расстояние Левенштейна для имени хоста
- Наибольший общий префикс имени хоста
- Наибольший общий суффикс имени хоста
- заданный порядок
- Первый либо случайный
- Round robin
Random (по умолчанию)
Наиболее близкое имя хоста
Расстояние Левенштейна для имени хоста
nearest_hostname, но сравнивает имена хостов по расстоянию Левенштейна. Например:
Наибольший общий префикс имени хоста
nearest_hostname, но предпочтение отдаётся реплике, чьё имя хоста имеет самый длинный общий префикс с локальным именем хоста (чем длиннее общий префикс, тем выше приоритет). В отличие от nearest_hostname, который подсчитывает различающиеся символы позиция за позицией, эта стратегия не сбивается из-за имён хостов, у которых числовые части имеют разную длину. Например, для локального имени хоста sfe301:
sfe10101, потому что у него самый длинный общий префикс (sfe, длина 3) с sfe301.
Реплики с одинаковой длиной общего префикса выбираются случайным образом. В частности, если ни одна реплика не имеет общего префикса с локальным именем хоста (все длины общих префиксов равны нулю), эта стратегия работает точно так же, как random.
Наибольший общий суффикс имени хоста
hostname_longest_common_prefix, но вместо префикса сравнивается самый длинный общий суффикс. Это полезно, когда идентификатор центра обработки данных закодирован в виде суффикса имени хоста. Например, для локального имени хоста et46gtghn.qc.localdomain:
ab999.qc.localdomain, поскольку у него самый длинный общий суффикс (.qc.localdomain, длина 15) с et46gtghn.qc.localdomain.
Реплики с одинаковой длиной общего суффикса выбираются случайным образом. В частности, если ни одна реплика не имеет общего суффикса с локальным именем хоста (то есть длина всех общих суффиксов равна нулю), эта стратегия работает точно так же, как random.
В заданном порядке
Первый либо случайный
first_or_random решает проблему алгоритма in_order. При использовании in_order, если одна реплика выходит из строя, следующая получает двойную нагрузку, тогда как остальные реплики обрабатывают обычный объем трафика. При использовании алгоритма first_or_random нагрузка равномерно распределяется между репликами, которые остаются доступными.
Можно явно задать, какая реплика считается первой, с помощью настройки load_balancing_first_offset. Это дает больше контроля над перебалансировкой рабочих нагрузок запросов между репликами.
Round Robin
round_robin).