Для HTTP-серверов Round Robin, Weight Round Robin и Random являются, вероятно, наиболее часто используемыми и безопасными шаблонами для использования, поскольку они не создают горячих точек, вызванных попытками определить, на какой хост отправлять.
Я понимаю, что можно использовать многоуровневый подход, чтобы равномерно распределить запросы. Здесь у вас есть 2 кластера, которые являются циклическими, и каждый кластер имеет несколько серверов, которые имеют случайное распределение.
Наименьшее количество подключений и самый быстрый ответ основаны на прогнозировании производительности каждого сервера на основе прошлой производительности. Хотя они могут быть полезны для определенных типов нагрузки - скажем, для большого количества длительных подключений, они могут быть проблематичными для веб-серверов с высоким трафиком, поскольку они могут вызвать поток запросов к недавно развернутому серверу или серверу, который только что вышел из строя.
Идеальный алгоритм балансировки нагрузки - это тот, который на самом деле не поддерживается HTTP - «Конкурирующие потребители». Так работают многие системы очередей (например, RabbitMq). Клиенты извлекают сообщения, а не отправляют их им. Тот, кто быстрее всех выполнит эту работу - и, следовательно, наиболее доступен для ее выполнения - получит ее.
Веб-серверы HTTP основаны на push, а не на pull, поэтому этот шаблон не совсем подходит.
Тем не менее, можно создать такое решение самостоятельно, используя промежуточный прокси-сервер, который реализует шаблон запрос-ответ, но имеет свой собственный набор проблем.
Я немного писал об этом здесь: https://www.quora.com/Why-use-message-queues-for-a-request- шаблон-ответа-который-синхронен-когда-очереди-асинхронны / answer / Tom-Burnell-5? nsrc = 4 & snid3 = 6113161011
person
Tom
schedule
19.12.2019