fbpx
Wikipedia

Problema del consenso

El problema del consenso es un problema fundamental de los sistemas distribuidos que consiste en poner de acuerdo a múltiples procesos en algo. Es el problema de averiguar cómo un conjunto de procesos de computación aislados que solo pueden comunicarse con mensajes se ponen de acuerdo sobre algo. El consenso es fácil en ausencia de fallos pero se convierte en algo difícil en escenarios intrincados de fallo con la presencia de canales imperfectos, caídas de participantes, violación de sincronizaciones o incluso cuando algunos de ellos pueden conspirar para que ese consenso no se produzca (comportamiento malicioso).

La solución a este tipo de problemas toma la forma de un algoritmo o protocolo (protocolo de consenso o algoritmo de consenso) y es usado por todos los procesos que no tienen un comportamiento malicioso.

Importancia

En general, los sistemas distribuidos son propensos a fallos ya sea por caídas o fallos intencionados (problema de los generales bizantinos). Para conseguir que los sistemas sean más fiables se intenta que sean lo más tolerantes frente a dichos fallos. Una de las estrategias más habituales para conseguirlo es mediante la réplica de información. El sistema de réplica de información es fiable pues la información reside en varios nodos. Sin embargo, es un reto mantener la consistencia entre los nodos que comparten información a la vez en un entorno en el que puede haber fallos (sistema tolerante de fallos). De esto se encargan los algoritmos o protocolos de consenso.

Por ejemplo: supongamos una base de datos distribuida que replica un estado común. Para mantener el estado consistente, cada réplica tiene que aplicar las mismas operaciones en el mismo orden para que su copia del estado sea consistente con el resto. Por tanto habrá un protocolo de consenso que tratará de mantener el estado consistente entre las múltiples réplicas conectadas asíncronamente no confiables[1]

Formalización

Supongamos que tenemos una colección de procesos   los cuales se comunican por paso de mensajes. El objetivo es llegar a consenso aunque haya fallos (por ejemplo comunicaciones no fiables o fallos en los procesos). Para llegar a un consenso, cada proceso   empieza en el estado de no decisión y propone un valor  . Los procesos se comunican unos con otros intercambiando valores siguiendo un protocolo (protocolo de consenso). A continuación, cada proceso fija un valor en una variable de decisión  . Cuando lo hace, entra en el estado decidido, en el cual ya no se podrá cambiar  . Un algoritmo de consenso debería satisfacer las siguientes condiciones:[2]

  • Finalización: Cada proceso correcto debe acabar asignando un valor a su variable de decisión.
  • Acuerdo: El valor finalmente decidido por todos los procesos correctos es el mismo.
  • Integridad: Si todos los procesos correctos han propuesto el mismo valor, entonces cualquier proceso correcto en el estado de decisión ha elegido este valor.


Ejemplos de protocolos de consenso

Se han elaborado distintos protocolos o algoritmos que solucionan este tipo de problemas. Cada uno se aplica para cierto tipo de entornos y tienen sus propias características. Veamos algunos ejemplos:

Referencias

  1. Consensus algorithms for distributed systems. Märt Bakhoff. 2014
  2. Navarro, Leandro (2009). «Sincronización,tolerancia a fallos y replicación». 
  •   Datos: Q2994424

problema, consenso, problema, consenso, problema, fundamental, sistemas, distribuidos, consiste, poner, acuerdo, múltiples, procesos, algo, problema, averiguar, cómo, conjunto, procesos, computación, aislados, solo, pueden, comunicarse, mensajes, ponen, acuerd. El problema del consenso es un problema fundamental de los sistemas distribuidos que consiste en poner de acuerdo a multiples procesos en algo Es el problema de averiguar como un conjunto de procesos de computacion aislados que solo pueden comunicarse con mensajes se ponen de acuerdo sobre algo El consenso es facil en ausencia de fallos pero se convierte en algo dificil en escenarios intrincados de fallo con la presencia de canales imperfectos caidas de participantes violacion de sincronizaciones o incluso cuando algunos de ellos pueden conspirar para que ese consenso no se produzca comportamiento malicioso La solucion a este tipo de problemas toma la forma de un algoritmo o protocolo protocolo de consenso o algoritmo de consenso y es usado por todos los procesos que no tienen un comportamiento malicioso Indice 1 Importancia 2 Formalizacion 3 Ejemplos de protocolos de consenso 4 ReferenciasImportancia EditarEn general los sistemas distribuidos son propensos a fallos ya sea por caidas o fallos intencionados problema de los generales bizantinos Para conseguir que los sistemas sean mas fiables se intenta que sean lo mas tolerantes frente a dichos fallos Una de las estrategias mas habituales para conseguirlo es mediante la replica de informacion El sistema de replica de informacion es fiable pues la informacion reside en varios nodos Sin embargo es un reto mantener la consistencia entre los nodos que comparten informacion a la vez en un entorno en el que puede haber fallos sistema tolerante de fallos De esto se encargan los algoritmos o protocolos de consenso Por ejemplo supongamos una base de datos distribuida que replica un estado comun Para mantener el estado consistente cada replica tiene que aplicar las mismas operaciones en el mismo orden para que su copia del estado sea consistente con el resto Por tanto habra un protocolo de consenso que tratara de mantener el estado consistente entre las multiples replicas conectadas asincronamente no confiables 1 Formalizacion EditarSupongamos que tenemos una coleccion de procesos p i i 1 2 N displaystyle p i i 1 2 N los cuales se comunican por paso de mensajes El objetivo es llegar a consenso aunque haya fallos por ejemplo comunicaciones no fiables o fallos en los procesos Para llegar a un consenso cada proceso p i displaystyle p i empieza en el estado de no decision y propone un valor v i displaystyle v i Los procesos se comunican unos con otros intercambiando valores siguiendo un protocolo protocolo de consenso A continuacion cada proceso fija un valor en una variable de decision d i displaystyle d i Cuando lo hace entra en el estado decidido en el cual ya no se podra cambiar d i displaystyle d i Un algoritmo de consenso deberia satisfacer las siguientes condiciones 2 Finalizacion Cada proceso correcto debe acabar asignando un valor a su variable de decision Acuerdo El valor finalmente decidido por todos los procesos correctos es el mismo Integridad Si todos los procesos correctos han propuesto el mismo valor entonces cualquier proceso correcto en el estado de decision ha elegido este valor Ejemplos de protocolos de consenso EditarSe han elaborado distintos protocolos o algoritmos que solucionan este tipo de problemas Cada uno se aplica para cierto tipo de entornos y tienen sus propias caracteristicas Veamos algunos ejemplos Commit de dos fases Commit de tres fases Raft Paxos y Multipaxos Prueba de trabajo Prueba de participacion tanto en su version original como en la version prueba de participacion delegada Prueba de quemadura Algoritmo de consenso Protocolo Ripple Es el usado en Ripple y Stellar Zookeeper Atomic Broadcast Viewstamped replicationReferencias Editar Consensus algorithms for distributed systems Mart Bakhoff 2014 Navarro Leandro 2009 Sincronizacion tolerancia a fallos y replicacion Datos Q2994424 Obtenido de https es wikipedia org w index php title Problema del consenso amp oldid 136827485, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos