Como o cassandra encontra o nó que contém os dados?

Eu já li muitos artigos e muitas perguntas / respostas sobre o SO sobre o Cassandra, mas ainda não consigo descobrir como o Cassandra decide para quais nós acessar quando estiver lendo os dados.

Primeiro, algumas suposições sobre um cluster imaginário:

Estratégia de replicação = simplesUsando o Particionador AleatórioCluster de 10 nósFator de replicação 5

Aqui está meu entendimento de como as gravações funcionam com base em vários artigos do Datastax e em outras postagens de blog que li:

Cliente envia os dados para um nó aleatórioO nó "aleatório" é decidido com base no hash MD5 da chave primária.

Os dados são gravados no commit_log e na tabela de memórias e depois propagados 4 vezes (com RF = 5).

Os quatro seguintes nós no anel são selecionados e os dados são mantidos neles.

Por enquanto, tudo bem.

Agora, a pergunta é: quando o cliente envia uma solicitação de leitura (digamos com CL = 3) ao cluster, como o Cassandra sabe quais nós (5 em 10 como o pior cenário) precisam entrar em contato para obter esses dados? Certamente não vai para todos os 10 nós, pois isso seria ineficiente.

Estou correto ao supor que o Cassandra fará novamente, faça um hash MD5 da chave primária (da solicitação) e escolha o nó de acordo com isso e, em seguida, percorra o anel?

Além disso, como funciona o caso de topologia de rede? se eu tenho vários datacenters, como o Cassandra sabe quais nós em cada DC / Rack contêm os dados? Pelo que entendi, apenas o primeiro nó é óbvio (já que o hash da chave primária resultou nesse nó explicitamente).

Desculpe se a pergunta não está muito clara e adicione um comentário se precisar de mais detalhes sobre minha pergunta.

Muito Obrigado,

questionAnswers(3)

yourAnswerToTheQuestion