Как избежать перекоса рабочей нагрузки при разбиении данных значения ключа - PullRequest
0 голосов
/ 05 февраля 2019

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

Проблема:

У нас есть данные значения ключа.Мы разделяем эти данные по хешу ключа и таким образом распределяем его по нескольким узлам.Если хеш-функция дает вам одинаково распределенные хеш-коды, то мы обычно получим равное распределение запросов по нашим узлам. Исключение: Если имеется «горячая клавиша» и к ней обращаются многие запросы.

Когда это могло произойти?

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

Мой подход будет следующим:

Если есть горячая клавиша, добавьте случайное целое число (в диапазоне, например, 1-100) к клавише,Теперь вы распределите нагрузку на большее количество узлов. Недостаток: Если вы хотите прочитать, вам также нужно будет проверить все возможные комбинации ключа и всех целых чисел в указанном диапазоне.Этот подход может распределить нагрузку более равномерно, но замедляет чтение.

Есть ли лучший подход? Идеально равномерное распределение нагрузки, но не замедление, - это очень много читает.

...