Théorème de CAP-disponibilité et tolérance de Partition

alors que j'essaie de comprendre la "disponibilité" (A) et la "tolérance de Partition" (P) dans CAP, j'ai trouvé difficile de comprendre les explications de divers articles.

j'ai un sentiment qu'Un et P peuvent aller ensemble (je sais que ce n'est pas le cas, et c'est pourquoi je ne comprends pas!).

expliquant en termes simples, qu'est-ce que A et P et la différence entre eux?

112
demandé sur mrsrinivas 2012-09-10 10:25:45

6 réponses

La cohérence

signifie que les données sont les mêmes dans tout le cluster, de sorte que vous pouvez lire ou écrire à partir de/vers n'importe quel noeud et obtenir les mêmes données.

disponibilité signifie la capacité d'accéder au cluster même si un noeud dans le cluster descend.

tolérance de Partition signifie que le cluster continue à fonctionner même s'il y a une "partition" (rupture de communication) entre deux noeuds (les deux noeuds sont en haut, mais ne peuvent pas communiquer).

In pour obtenir à la fois la disponibilité et la tolérance de partition, vous devez renoncer à la cohérence. Considérez si vous avez deux noeuds, X et Y, dans une configuration maître-maître. Maintenant, il y a une rupture entre la communication réseau entre X et Y, donc ils ne peuvent pas synchroniser les mises à jour. À ce point vous pouvez soit:

a) permettre aux noeuds de se désynchroniser (en renonçant à la consistance), ou

B) considérer que le groupe est "en baisse" (en renonçant à la disponibilité)

tous les combinaisons disponibles sont:

  • CA - les données sont cohérentes entre tous les noeuds - aussi longtemps que tous les noeuds sont en ligne - et vous pouvez lire/écrire à partir de n'importe quel noeud et être sûr que les données sont les mêmes, mais si jamais développer une partition entre les noeuds, les données seront hors de synchronisation (et ne sera pas re-sync une fois que la partition est résolue).
  • CP - les données sont cohérentes entre tous les noeuds, et maintient la tolérance de cloison (empêchant la désync de données) en devenant indisponible quand un noeud descend.
  • AP - les noeuds restent en ligne même s'ils ne peuvent pas communiquer entre eux et vont resync data Une fois que la partition est résolue, mais vous n'êtes pas garanti que tous les noeuds auront les mêmes données (pendant ou après la partition)

vous devez noter que les systèmes CA n'existent pas en pratique (même si certains systèmes d'affirmer l'être).

215
répondu Chris Heald 2018-04-15 14:40:30

considérer P en termes égaux avec C et A est un peu une erreur, plutôt "2 sur 3" notion parmi C,A,P est trompeur. La manière succincte que j'expliquerais le théorème de CAP est, "dans un magasin de données distribuées, au moment de la partition du réseau, vous devez choisir la cohérence ou la disponibilité et ne peut pas obtenir les deux". Les nouveaux systèmes NoSQL tentent de mettre l'accent sur la disponibilité, tandis que les bases de données ACID traditionnelles mettent davantage l'accent sur la cohérence.

vous ne pouvez vraiment pas choisir CA, réseau de partition n'est pas quelque chose que tout le monde aimerait avoir, c'est juste un indésirable à la réalité d'un système distribué, les réseaux peuvent échouer. La Question Est de savoir quel compromis choisir pour votre application lorsque cela se produit. Ce article de l'homme qui a formulé ce terme semble l'expliquer très clairement.

21
répondu jayadev 2014-01-23 17:10:41

Voici comment je parle CAP, en ce qui concerne P en particulier.

CA n'est possible que si vous êtes OK avec une base de données monolithique, serveur unique (peut - être avec la réplication, mais toutes les données sur un "bloc d'échec" - les serveurs ne sont pas considérés comme partiellement défectueux).

si votre problème nécessite une mise à l'échelle, des partitions réseau distribuées et multi-serveurs peuvent se produire. Vous avez déjà besoin de P. peu de problèmes que j'aborde se prêtent à serveur unique-toujours paradigmes (ou, comme Stonebraker dit, "est distribué enjeux de table"). Si vous pouvez trouver un problème de CA, les solutions comme les SGBDR traditionnels sans mise à l'échelle offrent beaucoup d'avantages.

Pour moi, rare: alors, nous passons à discuter PA vs CP.

vous ne choisissez entre AP et CP que lorsque vous avez une partition. Si le réseau et le matériel fonctionne correctement, vous obtenez votre gâteau et le manger aussi.

parlons l'AP / CP distinction.

AP-lorsqu'il y a une partition réseau, laisser les parties indépendantes fonctionner librement.

CP-quand il ya une partition réseau, fermer les noeuds ou ne permet lit et écrit de sorte qu'il ya des échecs déterministes.

j'aime les architectures qui peuvent faire les deux, parce que certains problèmes sont AP et certains sont CP - et certaines bases de données peuvent faire les deux. Parmi les solutions CP et AP, il y a aussi des subtilités.

par exemple, dans un ensemble de données AP, vous avez la possibilité à la fois des lectures incohérentes, et de générer des conflits d'écriture - ce sont deux modes AP différents possibles. Est-ce que votre système peut être configuré pour AP avec une grande disponibilité en lecture mais refuse les conflits d'écriture? Ou votre système AP peut-il accepter des conflits d'écriture, avec un système de résolution fort et flexible? Aurez-vous besoin des deux éventuellement, ou pouvez-vous choisir un système qui ne fait qu'un?

dans un système CP, comment beaucoup de non-disponibilité que vous obtenez avec de petites partitions (serveur unique), s'il y en a? Une plus grande réplication peut augmenter l'indisponibilité dans un système CP, comment le système gère-t-il ces compromis?

ce sont toutes des questions à poser avec CP vs AP.

Une bonne lecture dans ce domaine pour le moment est la levure de bière "12 ans plus tard," après. Je pense que cela fait avancer le débat sur la PAC avec clarté et je le recommande vivement.

http://www.infoq.com/articles/cap-twelve-years-later-how-the-rules-have-changed

13
répondu Brian Bulkowski 2014-07-09 17:31:47

CAP Theorem

Cohérence:

Une lecture est garanti retour les plus récents écrire(comme l'ACIDE) pour un client donné. Si n'importe quelle requête vient pendant ce temps il doit être attendu jusqu'à ce que les données sync complété à travers/dans le noeud(s).


disponibility:

chaque noeud (si non échoué) exécute toujours les requêtes et devrait toujours répondre aux requêtes. Peu importe s'il retourne la dernière copie ou non.


Partition-la tolérance:

le système continuera de fonctionner lorsque des cloisons de réseau se produiront.


en ce qui concerne AP , la disponibilité(toujours accessible) peut exister avec ( Cassendra ) ou sans ( RDBMS ) tolérance de partition

pic source

3
répondu mrsrinivas 2017-08-01 03:24:34
Cohérence

- lorsque nous envoyons la demande de lecture, si elle renvoie le résultat, elle doit renvoyer l'écriture la plus récente donnée par demande du client. Disponibilité – votre demande de lecture / écriture devrait toujours réussir. Tolérance de Partition – quand il y a une partition réseau (problème pour certaines machines de parler entre elles) se produit, le système devrait toujours fonctionner.

dans un distribué il ya des chances que la partition réseau se produira et nous ne pouvons pas éviter" P " de CAP. Nous avons donc Choisissez entre "cohérence"et " disponibilité".

http://bigdatadose.com/understanding-cap-theorem /

0
répondu rajnish 2015-03-05 08:46:06

En simple BOUCHON théorème dit qu'il est impossible pour un système distribué de fournir simultanément tous les trois garanties:

enter image description here

Cohérence

chaque noeud contient les mêmes données au même moment

disponibility

au moins un noeud doit être disponible pour servir les données à chaque fois

Partition de tolérance

la défaillance du système est très rare

la plupart du temps, chaque système ne peut garantir qu'un minimum de deux caractéristiques soit CA, AP, ou CP .

0
répondu JERRY 2018-05-17 07:45:39