Меня тут недавно спросили, какие варианты балансировки бывают. Что ж, это популярный вопрос, особенно его любят на собеседованиях. Давай разбираться.
Во-первых, что такое балансировка? Если у тебя один сервер, то его проще завалить большим количеством запросов, но если у тебя их несколько, то и нагрузку можно распределить. Так вот, представь, что у тебя есть несколько серверов, и ты решаешь, как им раздать задачи.
1. Round Robin — «карусель». Запросы просто по очереди отправляются на каждый сервер: первый, второй, третий… и снова по кругу. Пример: зашли 3 пользователя, первый запрос пойдёт на сервер 1, второй на сервер 2, третий на сервер 3.
2. Weighted Round Robin — тот же принцип, но если сервер мощнее, он получит больше запросов. Пример: сервер 1 мощный — он получит 3 запроса, а слабый сервер 2 — только 1.
3. Least Connections — запрос отправляется на сервер, у которого сейчас меньше всего работы. Пример: если сервер 1 уже занят, запрос пойдёт на сервер 2, даже если до этого сервер 1 был первым в очереди.
4. IP Hash — распределяет запросы на основе IP-адреса пользователя, так что один и тот же юзер всегда попадёт на один и тот же сервер. Пример: юзер с IP 123.45.67.89 всегда пойдёт на сервер 1.