Поддерживает ли Apache Helix разделение и объединение разделов?
Я понимаю, что Apache Helix позволяет динамическое расширение / сжатие кластера (например, добавление / отказ / удаление физических узлов). Однако в случае, если один физический узел не может обработать одну реплику раздела, мне нужно разделить раздел на два. Я понимаю, что нам нужно предварительно оценить рабочую нагрузку, чтобы мы могли заранее установить достаточное количество разделов. Однако, поскольку трафик непредсказуемо возрастает, такую предварительную оценку практически невозможно. Может кто-нибудь сказать мне, поддерживает ли Helix перераспределение из коробки? Если мне нужно настроить его, чтобы добавить функциональность перераспределения, насколько велики усилия и как это сделать в принципе. Я хочу иметь быструю оценку. Спасибо
2 ответа
Helix не поддерживает разбиение / слияние разделов из коробки. Мы не могли придумать общий способ поддержать это, не понимая основную систему.
Сказав это, можно создать собственное решение, используя примитивы, предоставленные Helix. Если вы можете предоставить дополнительную информацию о вашей системе, я мог бы предложить кое-что.
Я бы предложил начать с большого количества (логических) разделов и назначить каждому узлу несколько разделов. Когда службе требуется больше ресурсов, добавьте узлы и переместите некоторые разделы из существующих узлов в новые узлы. Например, предполагая, что вы начнете с 50 узлов, вы разделите пространство своей рабочей нагрузки на 50000 логических разделов и назначите 1000 разделов для каждого узла. Затем при увеличении, скажем, до 75 узлов, перераспределить. Таким образом, это будет 667 разделов на узел. В зависимости от реального сценария вы можете минимизировать перераспределение разделов, например, используя согласованный алгоритм хеширования.