L'algoritmo di Paxos può tollerare fino a errori F quando si utilizzano processori 2F + 1. Per quanto ho capito, questo algoritmo funziona solo con un numero fisso di processori. È possibile utilizzare questo algoritmo in un ambiente dinamico, in cui i nodi possono essere aggiunti e rimossi dinamicamente?Utilizzo di Paxos in ambiente dinamico
risposta
Sì. Gryadka è un'implementazione Paxos JavaScript che supporta la riconfigurazione dinamica in 500 linee. Si basa su idee di Vertical Paxos e Raft.
Se si dispone di un numero massimo assoluto di nodi, dovrebbe comunque funzionare. Ma ti rimane una situazione in cui il tuo numero di nodi dinamici è 6 il tuo massimo è 11, quindi se 1 nodo fallisce non sei fortunato (i nodi inesistenti falliscono di default). Se si rimuovono e aggiungono nodi, è possibile ripristinare lo stato di un nodo rimosso a un nodo aggiunto per evitare che venga conteggiato come errore.
Sì, è possibile, ci sono anche alcuni documenti su di esso. Da quello che ricordo ho letto un po 'su come farlo è stato descritto qui http://research.microsoft.com/pubs/64634/web-dsn-submission.pdf Spero che sia quello che stavi chiedendo. Cerca "paxos dinamici".
Il paxos dinamico è un po 'scarry :) – Lazin
@Lazin in realtà no! Io uso Paxos dinamico ed è stato estremamente stabile. L'idea è che tu abbia due macchine a stati. Il primo è ciò che si pensa tipicamente: lo stato Paxos è quello di mantenere la sincronizzazione. L'altra macchina a stati è la lista dei membri dei nodi. Qualsiasi istanza di Paxos deve utilizzare un'istantanea della macchina dello stato dell'appartenenza. –
@MichaelDeardeuff Dynamic Paxos diventa un po 'spaventoso quando si introduce Multi-paxos. È piuttosto banale quando lo usi con Paxos a istanza singola. –
Lo Stoppable Paxos carta è un po 'più facile da capire e permette la riconfigurazione di sicurezza (addizione e sottrazione di nodi): http://research.microsoft.com/apps/pubs/default.aspx?id=101826
La convinzione che sia necessario estendere Paxos per l'appartenenza ai cluster è su una base molto instabile. La versione cartacea Microsoft di Dynamic Paxos come discusso nella risposta di @ Mateusz di seguito è sufficiente. Tutte le implementazioni pratiche di Paxos Sono a conoscenza dell'aggiornamento dello stato distribuito in modo coerente. Quello stato condiviso può essere banalmente sia lo stato dell'app che l'appartenenza al cluster. Quindi, piuttosto che dover leggere, comprendere e implementare un nuovo approccio, tutte le implicazioni pratiche possono utilizzare "flusso principale Paxos" e "mangiare il proprio cibo per cani" per gestire le modifiche all'appartenenza al cluster. Paxos è stato progettato per questo. – simbo1905