BMINAIEV_BLOG Telegram 86
The Power of Two Random Choices

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

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

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

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

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



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: |

On June 7, Perekopsky met with Brazilian President Jair Bolsonaro, an avid user of the platform. According to the firm's VP, the main subject of the meeting was "freedom of expression." A vandalised bank during the 2019 protest. File photo: May James/HKFP. Add the logo from your device. Adjust the visible area of your image. Congratulations! Now your Telegram channel has a face Click “Save”.! How to create a business channel on Telegram? (Tutorial) 1What is Telegram Channels?
from us


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