В YugabyteDB, когда происходит сбой узла, равномерно ли распределяется нагрузка планшетов на вышедшем из строя узле среди других узлов? - PullRequest
1 голос
/ 21 января 2020

Таблетки распределяются случайным образом? Я имею в виду следующее: если узел выходит из строя, распределяется ли нагрузка планшетов на неисправном узле равномерно между оставшимися доступными узлами или он перемещается только на один другой одноранговый узел? Первое было бы очень желательно. Другими словами, выполняет ли YugabyteDB что-то вроде виртуальных узлов / токенов в Cassandra, но автоматически?

1 Ответ

0 голосов
/ 21 января 2020

Таблетки распределены по узлам в YugabyteDB с балансировкой нагрузки.

В частности, когда узел выходит из строя, нагрузка распределяется равномерно по оставшимся подходящим узлам. [См. Пример ниже, чтобы выяснить, почему необходимо учитывать «подходящие» узлы.] Бремя сбойного узла НЕ go только для одного равноправного узла. Так что да, вы получаете преимущество Apache Cassandra как виртуальные узлы, но автоматически. Этот аспект применим ко всем API-интерфейсам YugabyteDB (Y SQL и YCQL). ​​

В качестве примера:

Предположим, у вас есть кластер из 9 узлов, один кластер D C с каждым узел, скажем, 96 таблеток. Принимая во внимание фактор репликации (RF) 3, каждый узел будет лидером для 1/3 из них - около 32 планшетов и последователем для 2/3 из них - около 64 планшетов.

Когда узел выходит из строя, оставшиеся 8 узлов берут на себя расширенные обязанности довольно равномерным образом. Первоначально 32 лидера будут распределены между 8 узлами, поэтому каждый узел станет лидером для ~ 4 дополнительных планшетов. Это переключение происходит довольно агрессивно, когда последователи не слышат от лидеров несколько ударов сердца.

Если узел не работает в течение продолжительного периода времени, то эти 96 недостаточно реплицированных 96 планшетов (с RF = 2) будут возвращены к RF = 3, снова в унифицированной манере с использованием оставшихся 8 узлов .

При настройке нескольких регионов не все узлы могут быть приемлемыми. Например, при 15-узловой настройке с 3 участками (с 5 узлами в каждой области) с коэффициентом репликации (RF), равным 3, если узел в области не работает, в итоге останутся только 4 оставшихся узла в области. принимая нагрузку на неисправный узел равномерно. Это связано с тем, что при размещении данных по-прежнему необходимо соблюдать ограничения репликации данных по регионам. Мы не хотим, чтобы несколько копий данных оказались в одном регионе.

...