Existe um conjunto de problemas de sistemas distribuídos canônicos dos quais todos os possíveis problemas de sistemas distribuídos podem ser reduzidos?
Não conheço essa lista publicada de problemas.
Lembre-se de que existem muitos modelos diferentes (e um tanto incomparáveis) na computação distribuída, desde o modelo síncrono "benigno" (sem falhas), onde os nós são executados em rodadas de bloqueio e todas as mensagens são entregues de maneira confiável em cada rodada, até o modelo assíncrono em que não há limites nas velocidades de processamento e atrasos nas mensagens e nos próprios nós podem travar ou enviar mensagens corrompidas. Para aumentar ainda mais essa variedade, existem outros requisitos e suposições ortogonais à sincronia e falhas: o conhecimento inicial dos nós (tamanho da rede, diâmetro da rede, grau máximo de nós, etc.), a capacidade de consultar detectores de falhas , se os nós têm identificadores exclusivos, atomicidade das etapas de envio e recebimento, tamanho máximo de uma única mensagem e muito mais.
2
Por outro lado, quando analisamos as falhas, as questões estão mais relacionadas a questões de solvabilidade como "O consenso é solucionável neste modelo?" ou "Podemos implementar esse detector de falha sofisticado sob essas suposições?"
Se não houver uma lista canônica, qual é a lista atual de problemas e que reduções existem?
Existem muitos exemplos dessas reduções em certos modelos de computação distribuída. Limitarei minha resposta às seguintes 2:
Cálculo local no modelo síncrono (sem falhas)
Ω ( logn----√+ logΔ )nΔ2UMAUMA
Modelo assíncrono com falhas de falha
Aqui, o problema mais estudado é o consenso tolerante a falhas e suas muitas variações, uma vez que implementar primitivas básicas como transmissão atômica e / ou um sincronizador requer consenso.
S PTPS .
PQPQk acordo com o conjunto , o detector de falha mais fraco ainda está aberto [6].
Por exemplo, eu diria muito ingenuamente que os problemas de eleição e exclusão mútua de líderes podem ser reduzidos ao problema de consenso.
Claro, se você pode resolver o consenso, você imediatamente tem um algoritmo para a eleição do líder: basta usar o ID de cada nó como entrada para o algoritmo de consenso. O caminho oposto ocorre apenas nos modelos em que é garantido que o líder é finalmente conhecido por todos.
[1] Pierre Fraigniaud: Complexidades computacionais distribuídas: você é viciado em volvo ou obcecado por nascar? PODC 2010.
http://doi.acm.org/10.1145/1835698.1835700
[2] Fabian Kuhn, Thomas Moscibroda, Roger Wattenhofer: computação local: limites inferiores e superiores. CRR abs / 1011.5470 (2010)
http://arxiv.org/abs/1011.5470
[3] Tushar Deepak Chandra, Sam Toueg: Detectores de falhas não confiáveis para sistemas distribuídos confiáveis. J. ACM 43 (2): 225-267 (1996).
http://doi.acm.org/10.1145/226643.226647
[4] Prasad Jayanti, Sam Toueg: Todo problema tem um detector de falhas mais fraco. PODC 2008: 75-84.
http://doi.acm.org/10.1145/1400751.1400763
[5] Tushar Deepak Chandra, Vassos Hadzilacos, Sam Toueg: o mais fraco detector de falhas para resolver consensos. J. ACM 43 (4): 685-722 (1996)
http://doi.acm.org/10.1145/234533.234549
[6] Michel Raynal: detectores de falhas para resolver o acordo assíncrono do conjunto k: um vislumbre dos resultados recentes. Boletim do EATCS 103: 74-95 (2011)
http://albcom.lsi.upc.edu/ojs/index.php/beatcs/article/view/61