Apache Cassandra Split Brain

5

Em primeiro lugar, desculpas se isso já foi solicitado, não consigo encontrar uma resposta no Google ou no StackExchange.

É possível colocar o Apache Cassandra em um cenário de divisão de cérebro em que um serviço de dados particionados da rede continuará a executar o armazenamento e o acesso a dados sem acesso ao cluster completo?

Se não, quais são as técnicas usadas (links para documentação OK) para evitar um cérebro dividido?

Se sim, (parece haver tweets sobre isso acontecer), quais são as opções de recuperação neste caso?

    
por Drew Anderson 09.09.2013 / 12:36

1 resposta

5

Então, isso realmente depende de algumas coisas.

Primeiro, o Cassandra foi projetado para ser tolerante a partições, o que significa que ele deve continuar funcionando em situações como as que você está descrevendo. Por exemplo, você pode ter dois datacenters definidos e a conexão de rede cai entre eles. Se suas consultas retornam ou não com êxito depende do nível de consistência para o qual você consulta seu cluster. Se você escolher LOCAL_QUORUM, obterá um resultado de volta, mesmo que os dois datacenters não possam se comunicar. Esta é uma característica pretendida do banco de dados.

Cada nó no cluster mantém a topologia completa do cluster, portanto, quando a conexão de rede for resolvida, o handoff sugerido será ativado e os datacenters resolverão seus problemas. Pode ser necessário executar o reparo do nodetool para garantir que todos os dados estejam consistentes neste momento. (não pode doer)

    
por 12.09.2013 / 08:21

Tags