2017-04-03 1 views
1

j'ai un cas d'utilisation où Je cherche à reproduire une base de données unique sur plusieurs serveurs (à des fins HA et d'évolutivité),Cluster vs réplication

ce qu'il y aurait aucun inconvénient pour exécuter une réplique 3 de noeud au lieu d'un 3 nœuds cluster?

Répondre

2

Couchdb docs 11.2 fournit un exemple de configuration du cluster de:

[cluster] 
    q=8 
    r=2 
    w=2 
    n=3 

q - Le nombre de tessons.

r - Le nombre de copies d'un document avec la même révision qui doit être lu avant que CouchDB ne revienne avec un 200 et le document. Si une seule copie du document est accessible, celle-ci est retournée avec 200.

w - Le nombre de nœuds qui doivent enregistrer un document avant qu'une écriture ne soit renvoyée avec 201. Si les nœuds enregistrant le document sont 0 202 est renvoyé.

n - Le nombre de copies de chaque document. Les répliques.

Le comportement de votre 3 réplique de la pièce doit être équivalente à:

[cluster] 
    q=1 
    r=1 
    w=1 
    n=3 

lors de la réplication correctement. Ceci est une configuration possible du regroupement, mais pas optimale car il manque:

  • au profit de la confirmation que plusieurs noeuds et la majorité des noeuds ont confirmé une sauvegarde avant qu'il ne soit reconnu.

  • l'avantage de la confirmation que plusieurs nœuds et une majorité de nœuds ont confirmé qu'une révision est correcte avant d'être renvoyée.

  • Extension de la base de données au-delà du stockage d'un seul noeud via sharding.

  • La possibilité de passer à toute configuration équivalente aux paramètres de cluster avec q, r ou w> 1 sans passer à un cluster.

Indirectement, les limites sur les accusés de réception rendent les conflits potentiels pour résoudre entre les répliques si les répliques sont effectivement utilisées pour l'évolutivité du réseau et une plus grande probabilité une incohérence réelle sous forme de dossiers perdus si un nœud échoue entre la reconnaissance un sauvegarder et le transmettre aux autres répliques.

2

Quelle version de CouchDB utiliserez-vous? Si 2.0.0+, il n'y a probablement aucune raison de ne pas utiliser le vrai clustering. La seule raison que je peux penser à utiliser des répliques au lieu de la mise en cluster serait pour faciliter la configuration, ou parce que votre db (c.-à-d. CouchDB < 2.0.0) ne le supporte pas. Mais si vous utilisez le clustering, même sur seulement 3 nœuds maintenant, vous êtes déjà configuré pour une plus grande expansion plus tard, simplement en ajoutant plus de nœuds.

Y a-t-il une raison pour laquelle vous souhaitez et non utiliser un cluster?

+0

Merci pour votre réponse. Actuellement, j'utilise déjà un cluster pour mes 3 nœuds. La raison pour laquelle je voudrais essayer de passer à une réplication simple serait comme vous l'avez dit, la facilité de configuration. J'utilise des conteneurs docker pour faire fonctionner les clusters, et de temps en temps certains problèmes se posent comme si les cookies erlang étaient désynchronisés. Avoir un cluster me force également à créer un quatrième serveur qui est utilisé pour sauvegarder ma base de données. Fondamentalement, ma question est, y at-il un inconvénient (performance, plus de données corrompues, etc.) pour exécuter une réplique à 3 nœuds simple. – romainrbr