2012-04-09 14 views
9

Non so se questa è una domanda corretta qui.Come capire la "disponibilità" del teorema CAP?

Come sappiamo, nel teorema CAP, "A" significa "disponibilità". Sul wikipedia, la spiegazione di "disponibilità" è:

Availability: a guarantee that every request receives a response about whether it was successful or failed 

Tuttavia, dal punto di vista dell'ingegneria, non v'è alcuna ASSOLUTA disponibilità. Possiamo solo dire che la disponibilità di un sistema è 5'9 '(99,999%), o anche 8'9', ma non possiamo dire che la disponibilità di un sistema sia al 100%, il 100% del sistema disponibile non esca nella realtà , anche se il sistema ha milioni di nodi duplicati, giusto?

Il teorema CAP dimostra che nessun sistema può soddisfare i 3 requisiti contemporaneamente. La mia domanda è, se un sistema afferma di soddisfare sia "A" che "P", qual è il significato esatto di questa "A"? 6'9 'o anche più in alto?

+0

Questo è off-topic per SO; probabilmente appartiene a [cstheory.se] –

risposta

10

Si consiglia di evitare Wikipedia e leggere invece la definizione come fornita dalla prova Gilbert and Lynch.

"ogni richiesta ricevuta da un non-non riuscendo nodo nel sistema deve risultato in una risposta"

e la relativa nota in calce, che risponde alla tua domanda

"Brewer inizialmente richiedeva quasi tutte le richieste per ricevere una risposta . Come consentire la disponibilità probabilistica non cambia il risultato di in caso di errori arbitrari verificarsi, per semplicità ci stanno richiedendo disponibilità del 100%"

Quindi, se quasi tutte le richieste ricevono una risposta o ci permettono di guasti arbitrari a verificarsi, un sistema può essere considerato di avere un'elevata disponibilità.

2

La disponibilità in CAP significa "Tutti i nodi (non in errore) sono disponibili per le query". Non ha NIENTE da fare con il link di Wikipedia, che parla di "Alta disponibilità".

Ad esempio, l'algoritmo PAXOS è CP (nessuna proprietà di disponibilità) perché i nodi di minoranza "si bloccano" durante una partizione. Ma se hai bisogno di coerenza, allora PAXOS è considerato "Alta disponibilità".

Al contrario, un server di database MySQL a nodo singolo è CA (ha la proprietà Disponibilità CAP). Può riavviarsi (e rimanere inattivo per ore mentre controlla BIOS, FileSystem, DB Repair, ecc.). Al termine dell'avvio, inizia nuovamente a rispondere alle query. Questa è la disponibilità perfetta (come nel teorema CAP), ma la disponibilità orribile per "alta disponibilità".

+0

Questo è visivamente spiegato qui http://guide.couchdb.org/editions/1/en/consistency.html#figure/1 – user454322

1

Sono d'accordo con Mark Burgess: The CAP Theorem Is Not a Theorem. Le proprietà CAP nella congettura di Brewer sono semplicemente non sufficientemente definite da fornire una rigorosa dimostrazione matematica. Quindi, la ragione per cui la disponibilità è difficile da "capire" potrebbe essere perché semplicemente non è ben definita in questo contesto.

0

Un punto di vista interessante da Coda Hale

Un sistema che sceglie disponibilità gestirà una partizione di rete continuando a servire tutte le richieste, anche se portano a contraddizioni (per esempio, i nodi in diverse partizioni di rete sia accettare, eventualmente in conflitto scrive).

Un sistema che sceglie La coerenza limita la quantità di operazioni legali durante una partizione di rete (ad esempio, le scritture non vengono accettate in quanto potrebbero causare conflitti/incongruenze).

Non è possibile scegliere entrambi.

suppongo un ipotetico sistema può anche scegliere di mandare in crash proprio durante le partizioni di rete, ma questo non sembra un disegno molto pratico ...

Problemi correlati