Estoy trabajando en algo similar (aunque el código está lejos de estar listo). Describiré un poco sobre mi enfoque previsto, pero si eso es adecuado para usted depende de algunos puntos clave de diseño que debería considerar. No estoy al tanto de ningún proyecto listo que haga esto, desafortunadamente.
- En particular, necesitaríamos saber qué idioma desea usar o qué idiomas preferiría evitar.
- Además, tenga en cuenta cómo piensa realizar el descubrimiento de pares: ¿puede configurar la confianza entre pares de nodos manualmente o desea que se descubran automáticamente?
- ¿Presumiblemente todos los pares pueden insertar datos?
Si usted es capaz de utilizar PHP, y son felices pares de nodos igualitarios manualmente, entonces mi enfoque puede ser de su interés. Configure un ORM como Doctrine, Propel o NotORM, y haga que cada nodo se sincronice regularmente con una fuente de tiempo de Internet. Para cada nueva fila en un db, tome los datos (ya sea en una matriz u objeto ORM), serialícelos y extráigalos a todos los nodos con los que tenga una relación de confianza. Cuando falla un impulso, anótelo e intente de nuevo a intervalos periódicos (posiblemente abandonando el trabajo después de que un nodo remoto no pueda responder a una gran cantidad de intentos).
La aplicación puede iniciar su empuje creando la fila, o puede ser invocado por cualquier planificador disponible en cada máquina. Un mensaje de inserción puede ser XML o, para simplificar, puede ser solo un mensaje POST que contenga la nueva fila y los metadatos (por ejemplo, fecha y hora de guardado, para resolver el pedido INSERT desde varios nodos).
Si sus nodos no tienen direcciones IP estáticas, se pueden registrar con un servicio de direccionamiento DNS dinámico para permitir que cada nodo permanezca en contacto con sus pares, incluso si su IP cambia. También podría considerar agregar un sistema de firma de mensajes para garantizar que los mensajes entre los nodos sean genuinos.
Gracias! Voy a echar un vistazo a Jgroups. Entiendo que necesito codificar la replicación yo mismo. Con JXTA eso es probablemente lo mismo. Parece un problema mucho menos complicado que una comunicación P2P eficiente. – user952460