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 5Aqui 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,