Esiste una serie di problemi di sistemi distribuiti canonici da cui è possibile ridurre tutti i possibili problemi di sistema distribuito?
Non sono a conoscenza di un elenco di problemi così pubblicato.
Tieni presente che ci sono molti modelli diversi (e in qualche modo incomparabili) nel calcolo distribuito, che vanno dal modello sincrono "benigno" (senza errori) in cui i nodi vengono eseguiti in round lock-step e tutti i messaggi vengono recapitati in modo affidabile in ogni round, a il modello asincrono in cui non vi sono limiti alla velocità di elaborazione e ritardi e nodi dei messaggi stessi potrebbe arrestarsi in modo anomalo o inviare messaggi danneggiati. Per aggiungere ulteriormente a questa varietà, ci sono altri requisiti e ipotesi che sono ortogonali alla sincronia e ai guasti: la conoscenza iniziale dei nodi (dimensione della rete, diametro della rete, grado massimo del nodo, ecc.), La capacità di interrogare i rilevatori di guasti , se i nodi hanno identificatori univoci, atomicità dei passaggi di invio e ricezione, dimensione massima di un singolo messaggio e molti altri.
Il modello attuale a portata di mano implica spesso una natura molto diversa della domanda. (Vedi [1] per ulteriori elaborazioni su questi2
Quando si osservano i guasti d'altra parte, le domande sono più legate a problemi di solvibilità come "Il consenso è risolvibile in questo modello?" o "Possiamo implementare questo rivelatore di guasti fantasia sotto questi presupposti?"
Se non esiste un elenco canonico, qual è l'attuale elenco di problemi e quali riduzioni esistono?
Ci sono molti esempi di tali riduzioni in alcuni modelli di calcolo distribuito, limiterò la mia risposta ai seguenti 2:
Calcolo locale nel modello sincrono (privo di errori)
Ω ( logn----√+ logΔ )nΔ2UNUN
Modello asincrono con errori di arresto
Qui il problema più studiato è il consenso tollerante agli errori e le sue numerose varianti, poiché l'implementazione di primitivi di base come la trasmissione atomica e / o un sincronizzatore richiedono consenso.
S PTPS .
PQPQK
Ad esempio, direi in modo molto ingenuo che i problemi di elezione dei leader e di mutua esclusione possono essere ridotti al problema del consenso.
Certo, se riesci a risolvere il consenso, hai immediatamente un algoritmo per l'elezione del leader: usa semplicemente l'ID di ciascun nodo come input per l'algoritmo di consenso. Il modo opposto vale solo nei modelli in cui è garantito che il leader sia finalmente noto a tutti.
[1] Pierre Fraigniaud: Complessità computazionali distribuite: sei dipendente dalla volvo o ossessionato dal nascar? PODC 2010.
http://doi.acm.org/10.1145/1835698.1835700
[2] Fabian Kuhn, Thomas Moscibroda, Roger Wattenhofer: Calcolo locale: limiti inferiori e superiori. CoRR abs / 1011.5470 (2010)
http://arxiv.org/abs/1011.5470
[3] Tushar Deepak Chandra, Sam Toueg: rilevatori di guasti non affidabili per sistemi distribuiti affidabili. J. ACM 43 (2): 225-267 (1996).
http://doi.acm.org/10.1145/226643.226647
[4] Prasad Jayanti, Sam Toueg: ogni problema ha un rilevatore di guasti più debole. PODC 2008: 75-84.
http://doi.acm.org/10.1145/1400751.1400763
[5] Tushar Deepak Chandra, Vassos Hadzilacos, Sam Toueg: il rilevatore di guasti più debole per la risoluzione del consenso. J. ACM 43 (4): 685-722 (1996)
http://doi.acm.org/10.1145/234533.234549
[6] Michel Raynal: i rilevatori di guasti non hanno risolto l'accordo k-set asincrono: uno sguardo ai risultati recenti. Bollettino dell'EATCS 103: 74-95 (2011)
http://albcom.lsi.upc.edu/ojs/index.php/beatcs/article/view/61