Также ответ RussS правильный, я думаю, что его трудно понять.
Идея заключается не столько в распределении токенов, потому что это техническое средство, используемое Cassandra для концепции распределения доступа к данным.
Что важно, так это фактор репликации и кольцо, чтобы понять, что это значит.
Репликация работает путем копирования данных узла на два следующих узла. Поэтому, если вы находитесь на узле A, данные, назначенные A, реплицируются на B и C. Данные, назначенные B, реплицируются на C и D и так далее.
Если у вас всего 3 узла и 3 репликации, это не имеет никакого значения.
Если у вас есть 100 узлов, репликация 3 и num_tokens: 1
, то ровно 3 узла реплицируют назначенные им данные, и это всегда весь набор данных узла. В нашем примере выше это означает, что все данные, назначенные A, могут быть прочитаны из A, B или C и только из этих трех узлов. Поэтому, если вы пытаетесь часто загружать эти конкретные данные, а остальные не так часто, ваш кластер будет довольно несбалансированным.
При использовании v-узлов данные разбиваются на подразделы. Один компьютер представляет собой множество виртуальных узлов. Таким образом, старый компьютер A теперь может представлять A, D, G, J, M, предполагая num_tokens: 5
.
Дальше у нас кольцо. При построении кольца компьютеры будут подключаться друг к другу таким образом, что один и тот же компьютер не подключается сам к себе (A не будет напрямую разговаривать с D и наоборот).
Теперь это означает, что один физический компьютер будет подключен к num_tokens
× replication_factor - 1
другим компьютерам. Таким образом, с num_tokens
, установленным на 5, и репликацией на 3, вы будете подключены к 10 другим компьютерам. Это означает, что нагрузка будет распределяться между 10 компьютерами вместо 3 (как в противном случае подразумевал бы коэффициент репликации).
Таким образом, с 16 узлами, num_tokens: 256
и replication: 3
, это была бы странная установка, поскольку это означало бы, что все узлы соединены друг с другом 512 раз. При этом необходимость изменить num_tokens
позже может занять некоторое время, пока кластер приспособится к новому значению. Особенно, если у вас большая установка. Поэтому, если вы планируете иметь большое количество узлов, с самого начала хорошей идеей будет довольно большое num_tokens
.
В качестве побочного эффекта он также будет распределять данные между различными таблицами (файлами) на каждом узле. Это также может помочь быстрее находить данные. На самом деле рекомендуется использовать большее количество экземпляров (от 16 до 64) всякий раз, когда вы создаете кластер Elassandra, чтобы упростить поиск.
person
Alexis Wilke
schedule
27.12.2018