В Кассандре каждый узел хранит некоторые части данных.При создании кластера каждый узел будет отвечать за определенную часть данных.Это определяется на основе значения токена, назначенного этому узлу.Теперь, когда вы вставляете или выбираете данные, каждая вставка или выбор будет иметь ключ раздела.На основе этого ключа раздела вычисляется хеш-значение, и данные отправляются на узел, который отвечает за это конкретное значение токена.
Если имеется 6 узлов и RF = 3, то в кластере у вас есть 3 копиицелые данные.Первичная копия хранится на основе вышеуказанной концепции.Реплики будут храниться в зависимости от класса репликации, который вы указали при создании пространства ключей.Если вы берете SimpleStrategy
, он сохраняет реплику на следующем узле по часовой стрелке, то есть реплика узла 1 будет храниться на узле 2 и узле 3, а реплика узла 2 будет храниться на узле 3 и узле 4 и т. Д.
Если вы запрашиваете узатем на одном узле на основе ключа раздела запрос будет отправлен конкретному узлу, который отвечает за ключи этого раздела.Чтобы узнать, на какой узел будет отправлен ваш запрос, вы можете использовать утилиту nodetool.
nodetool getendpoints <keyspace> <table> <key>
Это даст вам Ip узла, куда будет отправлен запрос для получения результата