O artigo que você mencionou é importante por 2 razões:
- Isso mostra que não há algoritmo de consenso determinístico assíncrono que tolera até uma única falha de falha. Observe que na configuração síncrona , existe um algoritmo determinístico que termina em rodadas de quando ≤ f processos falham.f+1≤f
- Ele introduz bivalência e univalência de configurações (*), que são usadas em muitos limites inferiores e provas de impossibilidade posteriormente.
Formulários
Uma aplicação importante do problema de consenso é a eleição de um coordenador ou líder em um ambiente tolerante a falhas para iniciar alguma ação global. Um algoritmo de consenso permite que você faça isso rapidamente, sem precisar fixar um "supernó" com antecedência (o que introduziria um único ponto de falha).
Outro aplicativo está mantendo a consistência em uma rede distribuída: suponha que você tenha diferentes nós de sensores monitorando o mesmo ambiente. No caso em que alguns desses nós do sensor travam (ou até começam a enviar dados corrompidos devido a uma falha de hardware), um protocolo de consenso garante robustez contra essas falhas.
C1C10CCC
Isso mostra que não há algoritmo determinístico tolerante a falhas. Um resultado teórico bastante forte, que força os designers a lidar de maneira diferente com a tolerância a falhas, alguns dos quais são sincronização e randomização.
Comentário: Na minha opinião, a sincronização é uma suposição adicional do sistema que dificilmente é encontrada em aplicações práticas.
Para referências, consulte o link da Wikipedia . Confira também este blog para aplicações práticas
fonte
Um dos motivos pelos quais os problemas de consenso são importantes é que eles são muito simples e são um tipo de problema universal para sistemas de computação distribuídos.
Se pudermos resolver o consenso em um sistema distribuído assíncrono, podemos usá-lo para linearizar ações em objetos compartilhados e obter linearizabilidade para objetos compartilhados.
Por simplicidade, quantos problemas você consegue pensar que são mais simples do que concordar com um valor?
O resultado da impossibilidade sobre o consenso em sistemas distribuídos assíncronos (puros) nos diz que não podemos resolver problemas que queremos resolver em sistemas distribuídos assíncronos (puros) sem algumas "coisas" adicionais. Isso leva a modelos assíncronos, onde podemos resolver consensos, por exemplo, algoritmos aleatórios, detectores de falhas, modelos de sincronia parcial, etc.
Essa também é a razão pela qual, na prática, algoritmos que resolvem consensos como o Paxos de Lamport, o Chubby do Google, o Apache ZooKeeper e, mais recentemente, o Raft estão no centro dos sistemas distribuídos, onde geralmente queremos replicar um estado entre os servidores.
fonte
Eu apenas acrescentaria que a natureza da computação está se tornando cada vez mais distribuída na pilha: muitas CPUs, muitos processos em uma máquina, muitas máquinas conectadas por LANs, muitas LANs conectadas por Internet.
Isso torna o problema do estado comum (distribuído / global) primordial - cada algoritmo assume determinado estado e se a computação deve ser executada em mais de um local, o estado também deve ser distribuído.
Artigos influentes ( Paxos e, mais recentemente, Raft ) nesse domínio foram publicados após o artigo que você está citando. Ambos abordam as questões de consenso na presença de algumas falhas.
Erros bizantinos podem ser evitados em sistemas distribuídos usando poucas abordagens.
Dê uma olhada na entrada da Wikipedia sobre Tolerância a falhas bizantinas .
fonte