2017-08-06 5 views
0

J'ai un couchdb dans une configuration de cluster. 3 nœuds, tous les fragments sur tous les nœuds et W = 2. Nous avons du code pour créer un document dans couchdb et le lire depuis une vue. Cependant, la vue ne renvoie aucune donnée correspondante par intermittence. Les données sont là après que nous vérifions couchdb directement. Donc, ma question est la suivante: pourquoi les troisièmes nœuds prennent-ils tant de temps à écrire une valeur et combien de temps devrais-je attendre de la latence d'écriture?Le cluster Couchdb écrit le comportement

Merci d'avance.

Répondre

1

Si vous interrogez une vue et n'utilisez pas le paramètre stale, les vues doivent toujours renvoyer des données nouvelles. Une vue sera d'abord mise à jour à la base de données, puis renvoie les résultats de votre requête.

Une vue peut obtenir des résultats à partir de n'importe quel noeud. Si vous interrogez une vue et que vous n'obtenez pas les nouvelles données attendues, cela signifie que les mises à jour ne sont pas encore disponibles sur le noeud utilisé.

Si vous écrivez un document avec W = 2, au moins deux nœuds sur trois doivent mettre à jour ce document avec succès. Et si tous les nœuds sont actifs, la synchronisation interne entre les nœuds, en millisecondes ou en secondes, devrait apporter des mises à jour à tous les nœuds. Donc, la latence devrait être juste quelques secondes.

Combien de temps a duré la latence? Votre vue a-t-elle finalement été capable de produire les résultats attendus après cette latence?

+0

Merci pour votre réponse. Nous ne savons pas vraiment comment tester la latence entre les nœuds de communication. Nous venons de mettre en place ce nouvel environnement, donc rien ne fonctionne vraiment dessus. La vue donne finalement la bonne valeur. – leiz

+0

Si la latence est en secondes, alors je considère que c'est trop lent. – leiz