2017-08-05 4 views
3

Je suis nouveau à Cassandra. Supposons que j'ai 3 noeuds et le facteur de réplication (de RF) du keyspace est 3.Niveau de cohérence de Cassandra et facteur de réplication

  1. Puis-je supposer sans risque que si 2/3 nœuds sont en baisse, je reçois toujours les données complètes pour une requête quelle que soit la Niveau de cohérence?
  2. En gardant les 2/3 nœuds en panne, quel niveau de cohérence m'assurera les données complètes pour une requête?

Répondre

2

Cela dépend du niveau de cohérence que vous avez utilisé pour les demandes d'écriture et de lecture.

For strong consistency: R + W > N  
For eventual consistency: R + W =< N, where  
    - R is the consistency level of read operations  
    - W is the consistency level of write operations  
    - N is the number of replicas 

Dans nos soins R + W < = 3
Maintenant, supposons que nous avons utilisé pour QUORUM les opérations de lecture et un pour écrire.

quorum = (sum_of_replication_factors/2) + 1 = (3/2) + 1 = 2  
    read = 1 
    R + W <=3 is satisfied in our case. 

Vous pouvez configurer le niveau de cohérence en fonction des besoins, mais garder à l'esprit la latence.
Vous pouvez lire à ce sujet plus consistency-handing et consistency-configuration

Pour en revenir à vous remettre en question, si un seul nœud a été utilisé alors vous n'auriez pas une cohérence à terme. Vous pouvez utiliser ONE pour lire et écrire, mais cela va aller à l'encontre du but. En supposant que les nœuds seront à nouveau ouverts, je préfèrerais utiliser LOCAL_QUORUM pour write et TWO pour read.

+0

Donc, si j'écris à la table (RF est 3) avec la cohérence d'écriture comme ONE, est-ce que Cassandra réplique mes données ou pas? –

+0

Oui, car les nœuds sont en hausse. Vous devriez lire ce concept [hinted-handoff] (http://docs.datastax.com/en/archived/cassandra/2.0/cassandra/dml/dml_about_hh_c.html) Il est très important de comprendre ce qui arrive à lire/écrire quand vous avoir des nœuds vers le bas. – Bigby

0

Dans votre cas, puisqu'il y a 3 nœuds et que le facteur de réplication est également 3, chaque nœud aura toutes les données. Par conséquent, même si seulement 1/3 nœud est opérationnel, vous pourrez toujours récupérer les données complètes. Cependant, la cohérence des données (que vous obteniez ou non les dernières données) dépendra, dans ce cas, de la consistance d'écriture utilisée (je suppose que puisque seul 1/3 nœud est opérationnel, la cohérence de lecture est donc 1). Dans l'ordre, pour obtenir des données cohérentes, la consistance d'écriture doit être 3 (en utilisant la condition, R + W> N pour une cohérence forte). Ce n'est qu'alors que vous obtiendrez des données cohérentes tout en lisant même lorsque seulement 1/3 nœud est opérationnel.