Балансировка нагрузки
Комьюнити-чат образовтельного проекта приносит интересные ссылки и обсуждения.
Началось с обсуждения твита кого-то из Амазона, о том, что обычный алгоритм round robin (последовательно раскидывает нагрузку по всем нодам) даёт сильные “перекосы” в нагрузке. Предлагался альтернативный способ: выбирать случайно пару нод для балансировки, и из этой пары уже выбирать ту ноду, которая нагружена меньше.
Это безусловно шаг вперёд, но вообще ход рассуждений нужен следующий: давайте учитывать нагрузку и производительность. Ведь как только мы заявили требование "хочу уметь выбрать наименее загруженный", мы автоматически получаем требование сбора метрик, причем собирать нужно реалтайм. А как только ты собрал такие метрики реалтайм - открывается масса других возможностей, не только просто взять два и выбрать наименее загруженный.
Тот же Weighted Round-Robin (распределение нагрузки с динамическими весами) даёт отличные результаты, причем конечный результат заметно улучшается даже без реалтайма. Вот на этой уже довольно древней Хайлоад-конфе Юра Насретдинов, на тот момент ещё сотрудник Badoo, рассказывает, как он динамически раз в 15 минут пересобирает веса и регенерит их для LTM - и это даже нормально работало: https://www.youtube.com/watch?v=jHYzy6DDo9c.
А ещё прикольная статья с анимационной иллюстрацией алгоритмов балансировки (RR, WRR, Least connections, Latency-based). В конце страницы отличный “симуляционный” плейграунд на яваскрипте, можно выбрать любой алгоритм, плотность входящих запросов и смотреть, как наполняются очереди (и дропаются заявки от переполнения).
Сама статья здесь: https://samwho.dev/load-balancing/, ссылки изначально нашел Андрей Л, участник буткемпа, вот в этом канале: https://t.me/ThePr0Ger.
----
https://devhands.io/ru/ - образовательные треки по хайлоаду, системному дизайну, linux и другим advanced темам
https://t.me/feedmeetoo - интересные статьи, ссылки, презентации
Комьюнити-чат образовтельного проекта приносит интересные ссылки и обсуждения.
Началось с обсуждения твита кого-то из Амазона, о том, что обычный алгоритм round robin (последовательно раскидывает нагрузку по всем нодам) даёт сильные “перекосы” в нагрузке. Предлагался альтернативный способ: выбирать случайно пару нод для балансировки, и из этой пары уже выбирать ту ноду, которая нагружена меньше.
Это безусловно шаг вперёд, но вообще ход рассуждений нужен следующий: давайте учитывать нагрузку и производительность. Ведь как только мы заявили требование "хочу уметь выбрать наименее загруженный", мы автоматически получаем требование сбора метрик, причем собирать нужно реалтайм. А как только ты собрал такие метрики реалтайм - открывается масса других возможностей, не только просто взять два и выбрать наименее загруженный.
Тот же Weighted Round-Robin (распределение нагрузки с динамическими весами) даёт отличные результаты, причем конечный результат заметно улучшается даже без реалтайма. Вот на этой уже довольно древней Хайлоад-конфе Юра Насретдинов, на тот момент ещё сотрудник Badoo, рассказывает, как он динамически раз в 15 минут пересобирает веса и регенерит их для LTM - и это даже нормально работало: https://www.youtube.com/watch?v=jHYzy6DDo9c.
А ещё прикольная статья с анимационной иллюстрацией алгоритмов балансировки (RR, WRR, Least connections, Latency-based). В конце страницы отличный “симуляционный” плейграунд на яваскрипте, можно выбрать любой алгоритм, плотность входящих запросов и смотреть, как наполняются очереди (и дропаются заявки от переполнения).
Сама статья здесь: https://samwho.dev/load-balancing/, ссылки изначально нашел Андрей Л, участник буткемпа, вот в этом канале: https://t.me/ThePr0Ger.
----
https://devhands.io/ru/ - образовательные треки по хайлоаду, системному дизайну, linux и другим advanced темам
https://t.me/feedmeetoo - интересные статьи, ссылки, презентации