In base allo "Guide to Scaling Web Databases with MySQL Cluster", MySQL Cluster 7.3 può ottenere una disponibilità del 99,999% utilizzando la replica di aggiornamento sincrono. Questa sarebbe un'antitesi allo CAP Theorem poiché afferma che la perfetta disponibilità (99,999% può essere visto come questo, no?) E la coerenza non è accettabile nei sistemi distribuiti.In che modo MySQL Cluster 7.3 può raggiungere una disponibilità del 99,999%? Teorema CAP in antitesi
Come reagisce il cluster per un aggiornamento, se il datanode responsabile della replica non è raggiungibile? Per una replica di aggiornamento sincrono deve bloccarsi, il che influirebbe sulla disponibilità.
La Guida afferma:
- I dati all'interno di un nodo di dati viene replicata in modo sincrono a tutti i nodi all'interno del gruppo di nodi. Se un nodo dati non funziona, allora c'è sempre un altro nodo dati che memorizza le stesse informazioni su .
- In caso di errore del nodo dati, il server MySQL o il nodo applicazione possono utilizzare qualsiasi altro nodo di dati nel gruppo di nodi per eseguire le transazioni . L'applicazione riprova semplicemente la transazione e i nodi di dati rimanenti soddisfano correttamente la richiesta.
Ma come può questo lavoro se un gruppo di nodi è costituito da due nodi e uno va in crash (esempio here)? Non ci sarebbe alcun nodo per replicare un aggiornamento a ciò che, a quanto ho capito, farebbe fallire l'aggiornamento mentre si utilizza la replica di aggiornamento sincrono ?! La replica è appena sospesa per il tempo in cui non esiste un nodo in cui scrivere una replica?
forse abbiamo disponibilità per la lettura ma se abbiamo un solo nodo per nodo gruppo lasciato e il numero di repliche è definito come due, il nodo rimanente non può accettare una scrittura poiché non può aggiornare la seconda replica? o ho qualcosa di sbagliato qui? – NorRen
@NorRen no, se tutti i nodi sono ** master ** accetteranno richieste di aggiornamento e si sincronizzeranno con i nodi rimanenti. Se un nodo è morto, ovviamente, non può essere aggiornato.Se un nodo muore, il sistema continuerà a funzionare, ecco perché si hanno più nodi anziché uno; ** se non vuoi che il sistema smetta di accettare le richieste di aggiornamento dovresti avere più master **, invece di un'architettura master-slave. Questo o un nodo slave viene promosso come nuovo master **. –