BMINAIEV_BLOG Telegram 86
The Power of Two Random Choices

Метод, который многие упомянули в комментариях к предыдущему посту, который я узнал относительно недавно, и который неожиданно (для меня) очень хорошо работает.

В идеальной ситуации, мы бы хотели узнать нагрузку на всех серверах, и отправить запрос в самый менее нагруженный. Но такой возможности нет — серверов слишком много, если спрашивать их все на каждый наш запрос, то это сгенерирует слишком много дополнительной нагрузки. Поэтому, давайте выберем два случайных сервера, узнаем у них их нагрузку, а потом отправим запрос в наименее нагруженный из двух.

Интуитивно кажется, что этот метод почти не отличается от посылания запроса в случайный сервер. Условно, часто мы будем выбирать два уже нагруженных сервера, и добавлять нагрузку к ним. Но в реальности оказывается, что нагрузка на сервера становится очень равномерной. Например, в случае с 1М запросов и 1000 серверами, максимально нагруженный сервер обработает ~1002 запроса.

Если нужно еще поддерживать добавление серверов "на лету", можно использовать consistent hashing из предыдущего поста + идею с выбором одного из двух серверов. И это приводит к максимальной нагрузке в ~1007 запросов в симуляции, которую я написал.

Понятно, что в реальной жизни все сложнее, и в некоторых ситуациях мы не можем себе позволить отправить два дополнительных запроса на каждый существующий запрос. Но, если пользовательские запросы тяжелые, то такой метод работает неожиданно хорошо.
87👍37🤯177❤‍🔥7🔥3



tgoop.com/bminaiev_blog/86
Create:
Last Update:

The Power of Two Random Choices

Метод, который многие упомянули в комментариях к предыдущему посту, который я узнал относительно недавно, и который неожиданно (для меня) очень хорошо работает.

В идеальной ситуации, мы бы хотели узнать нагрузку на всех серверах, и отправить запрос в самый менее нагруженный. Но такой возможности нет — серверов слишком много, если спрашивать их все на каждый наш запрос, то это сгенерирует слишком много дополнительной нагрузки. Поэтому, давайте выберем два случайных сервера, узнаем у них их нагрузку, а потом отправим запрос в наименее нагруженный из двух.

Интуитивно кажется, что этот метод почти не отличается от посылания запроса в случайный сервер. Условно, часто мы будем выбирать два уже нагруженных сервера, и добавлять нагрузку к ним. Но в реальности оказывается, что нагрузка на сервера становится очень равномерной. Например, в случае с 1М запросов и 1000 серверами, максимально нагруженный сервер обработает ~1002 запроса.

Если нужно еще поддерживать добавление серверов "на лету", можно использовать consistent hashing из предыдущего поста + идею с выбором одного из двух серверов. И это приводит к максимальной нагрузке в ~1007 запросов в симуляции, которую я написал.

Понятно, что в реальной жизни все сложнее, и в некоторых ситуациях мы не можем себе позволить отправить два дополнительных запроса на каждый существующий запрос. Но, если пользовательские запросы тяжелые, то такой метод работает неожиданно хорошо.

BY Боря программирует


Share with your friend now:
tgoop.com/bminaiev_blog/86

View MORE
Open in Telegram


Telegram News

Date: |

Joined by Telegram's representative in Brazil, Alan Campos, Perekopsky noted the platform was unable to cater to some of the TSE requests due to the company's operational setup. But Perekopsky added that these requests could be studied for future implementation. Clear How to create a business channel on Telegram? (Tutorial) Developing social channels based on exchanging a single message isn’t exactly new, of course. Back in 2014, the “Yo” app was launched with the sole purpose of enabling users to send each other the greeting “Yo.” The public channel had more than 109,000 subscribers, Judge Hui said. Ng had the power to remove or amend the messages in the channel, but he “allowed them to exist.”
from us


Telegram Боря программирует
FROM American