Buenas,
A continuación planteo un par de dudas que me surgieron, más que nada a la hora de pasar a código en DisJ el algoritmo:
- Tomé la decisión de implementar el algoritmo de manera que cada nodo pueda cumplir cualquiera de los roles de Paxos en simultáneo, esto es, que cada uno pueda ser tanto Proposer, como Acceptor y/o Learner. ¿Esto es lo esperable? ¿o se debería asumir que cada nodo puede tomar un rol en particular de estos?
- Dos de los puntos claves del Proposer (o Suggestor) según las referencias del tema es que pueda manejar tanto la pérdida de mensajes, lo cual en mi caso intenté abordarlo mediante la solución más común propuesta que es retransmisión de mensajes de parte del Proposer, como la convergencia del algoritmo, donde se recomienda algún algoritmo de backoff exponencial. ¿Es correcto manejar ambos problemas en nuestra solución? Mi consulta va dirigida a que el DisJ no provee operaciones para manejar varios clocks (que fue como lo encaré en la solución "teórica" del algoritmo), lo cual parece complicar un poco de más la solución.
- En la letra se plantea validar la complejidad del algoritmo en DisJ. ¿Debe probarse de manera teórica primero esto? ¿cómo se validaría en DisJ esto?
- ¿Está mal que los nodos adopten un estado "final" pero sigan ejecutando cosas?
Desde ya agradezco cualquier respuesta.
Saludos.