Na semana passada, eu estava lendo novamente o transcrito de Leslie de Lamport, de 1982, de uma conferência que ele deu sobre problemas resolvidos, problemas não resolvidos e não problemas em simultâneo . O artigo é de fácil leitura, mas uma das coisas que me fez pensar é a seguinte afirmação:
Algum problema pode ser considerado um problema de exclusão mútua ou um problema produtor-consumidor ou uma combinação dos dois?
Gostaria de saber se esta pergunta foi respondida para o caso de sistemas distribuídos.
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? O que é essa lista canônica?
Se não houver uma lista canônica, qual é a lista atual de problemas e que reduções existem?
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. Eu diria também que um instantâneo distribuído pode ser reduzido a um relógio distribuído. É verdade ou errado?
Se possível, eu preferiria que as respostas fizessem referência a um artigo / livro publicado que apoiasse suas alegações :)
fonte
Respostas:
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.
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?"
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)
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.
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
fonte