Sistemas distribuidos: ¿es posible utilizar el algoritmo de Paxos para generar números de secuencia (seqnums)?

Paxos es una implementación de registro distribuido de escritura única que se vuelve interesante cuando usa una instancia para cada entrada consecutiva en una o más máquinas de estado distribuidas.

Se requiere un mensaje de ida y vuelta con una escritura correspondiente persistente (para el tiempo de vida de los datos) en cada aceptador durante la operación de estado estable con el mismo nodo actuando como proponente en instancias sucesivas cuando se utiliza la optimización trivial de Multi-Paxos. Se requieren al menos dos cuando hay conflictos y no se garantiza el progreso; por lo que la mayoría de los sistemas que usan Paxos le dan a un nodo un contrato de arrendamiento para actuar como proponente para obtener el mejor rendimiento y evitar el bloqueo en vivo.

Si bien podría usar eso para implementar relojes Lamport o tiempos lógicos (cada solicitud de número de secuencia es un comando de incremento para un contador distribuido), el nodo será un cuello de botella y no debe hacer eso donde no necesita que suceda. antes de la relación Por ejemplo, los identificadores únicos a nivel mundial podrían ser suficientes, en cuyo caso podría usar una dirección MAC (garantizada como única) y una marca de tiempo monotónica que se genera localmente (agregue un número de época incrementado en cada reinicio para que el tiempo del sistema no retroceda) tú).

Si necesita la relación antes de pasar para un mejor rendimiento, puede hacer que los bits de orden superior sean un número de época, los bits de orden bajo un tiempo monotónicamente creciente que no persiste a través de las épocas, y almacenar la época más otra información como la asignación del número de secuencia actual coordinador en una tienda de objetos distribuidos construida con Paxos.

También tenga en cuenta que Paxos es una abstracción de muy bajo nivel. Como un solo transistor, puede ser el mejor bloque de construcción para algunos sistemas (puede ejecutar múltiples instancias en paralelo, lo cual es útil en un almacén de valores clave para operaciones en diferentes claves) aunque para muchos está mejor con un componente más funcional como un circuito integrado

El algoritmo Raft de John Osterhout para la replicación del registro (de entradas a una máquina de estado distribuida) documentado en En busca de un algoritmo de consenso comprensible puede ser más fácil de aplicar a su problema. Es una abstracción de nivel superior y el documento está escrito para una audiencia de ingenieros que implementan cosas, mientras que los documentos de Paxos de Lamport tratan más sobre informática teórica y dejan mucho más para que el practicante descubra.

sí. Paxos se utiliza para lograr un consenso entre los procesos y ese consenso puede ser cualquier cosa.

te refieres a números cada vez mayores o secuencia continua de números?

More Interesting

¿Cuáles son algunos problemas de nivel intermedio en los que es imprescindible comprender la corrección de los algoritmos (y por qué)?

Como principiante, ¿debo invertir mi tiempo en escribir mi propio algoritmo de aprendizaje automático desde cero?

¿Cuántos niveles habrá en un árbol completamente binario si tiene n número de nodos?

¿Cuál es la diferencia entre árboles binarios completos y completos?

¿Puedo encontrar el camino hamiltoniano más corto en un gráfico completo ponderado no dirigido en tiempo polinómico (donde todos los pesos no son negativos)?

¿Cuáles son los algoritmos para determinar si un punto está dentro de una forma cerrada arbitraria o no?

Supongamos que tenemos una matriz 8 * 8. Cada celda tiene 0 o 1. Se le dará una ubicación y deberá encontrar todas las que se encuentran en la misma isla. ¿Los puntos se encuentran en la misma isla si un punto está en alguna de las celdas adyacentes?

Cómo ordenar en orden ascendente en el programa C

¿Qué tipo de algoritmo utiliza Google para clasificar los correos?

¿Desde dónde debemos comenzar a aprender IA, aprendizaje automático y algoritmos?

¿Cuáles son algunos "problemas de práctica" en los que todos deberían trabajar para mejorar la programación (en cualquier lenguaje de programación)?

¿Cuáles son los algoritmos y las estructuras de datos que tengo que aprender para competir en Google Code Jam?

¿Por qué son importantes las pruebas para estudiar algoritmos y estructuras de datos? ¿Estudiar esas pruebas complejas es realmente necesario?

¿Cuál es la diferencia entre los siguientes dos fragmentos de código?

¿Cómo funciona el algoritmo de armonía?