Sto lavorando su qualcosa di simile (anche se il codice è tutt'altro che pronto). Descriverò un po 'del mio approccio previsto, ma se questo è adatto a te dipende da alcuni punti chiave di progettazione che dovresti prendere in considerazione. Sfortunatamente non sono a conoscenza di progetti pronti che lo faranno.
- In particolare, dovremmo sapere quale lingua si desidera utilizzare o quali lingue preferireste evitare.
- Inoltre, pensa a come intendi fare la dicotomia peer - puoi impostare la fiducia tra coppie di nodi manualmente o vuoi che vengano scoperti automaticamente?
- Presumibilmente tutti i peer possono inserire dati?
Se si è in grado di utilizzare PHP e si è felici di confrontare manualmente coppie di nodi, il mio approccio potrebbe essere interessante. Configura un ORM come Doctrine, Propel o NotORM e fai in modo che ciascun nodo si sincronizzi regolarmente con un'origine ora Internet. Per ogni nuova riga in un db, acquisisci i dati (in un array o in un oggetto ORM), serializzali e inseriscili in tutti i nodi con i quali hai una relazione di fiducia. Nei casi in cui un push non riesce, tenere una nota di questo e riprovare a intervalli periodici (potenzialmente rinunciando a un nodo remoto che non riesce a rispondere a un numero elevato di tentativi).
Le chiamate possono essere avviate dall'applicazione che crea la riga o possono essere richiamate da qualsiasi programma di pianificazione disponibile su ciascuna macchina. Un messaggio push può essere XML, o per semplicità può essere solo un messaggio POST contenente la nuova riga e qualsiasi metadata (ad esempio timestamp di salvataggio, in modo da risolvere l'ordine INSERT da diversi nodi).
Se i nodi non dispongono di indirizzi IP statici, potrebbero essere registrati con un servizio di indirizzamento DNS dinamico in modo da consentire a ciascun nodo di rimanere in contatto con i colleghi anche se il loro IP cambia. Potresti anche considerare l'aggiunta di un sistema di firma dei messaggi, per garantire che i messaggi tra i nodi siano autentici.
Grazie! Daremo un'occhiata a Jgroups. Capisco che ho bisogno di codificare la replica da solo. Con JXTA è probabilmente lo stesso. Sembra un problema molto meno complicato dell'efficiente comunicazione P2P. – user952460