私は似たようなことに取り組んでいます (コードは準備ができていませんが)。意図したアプローチについて少し説明しますが、それが適切かどうかは、考慮すべき重要な設計ポイントによって異なります。残念ながら、これを行う既製のプロジェクトは知りません。
- 特に、どの言語を使用したいのか、またはどの言語を避けたいのかを知る必要があります。
- また、ピア検出を行う方法を検討してください。ノード ペア間の信頼を手動で設定できますか、それとも自動検出しますか?
- おそらくすべてのピアがデータを挿入できますか?
PHP を使用でき、ノード ペアを手動でピアリングすることに満足している場合は、私のアプローチに興味があるかもしれません。Doctrine、Propel、NotORM などの ORM をセットアップし、各ノードをインターネット時刻ソースと定期的に同期させます。データベースの新しい行ごとに、データを (配列または ORM オブジェクトのいずれかで) 取得し、シリアル化し、信頼関係にあるすべてのノードにプッシュします。プッシュが失敗した場合は、これを記録し、定期的に再試行してください (リモート ノードが多数の再試行に応答できなかった場合は、あきらめる可能性があります)。
プッシュは、行を作成するアプリケーションによって開始されるか、各マシンで使用可能なスケジューラによって呼び出されます。プッシュ メッセージは XML にすることも、簡単にするために新しい行とあらゆるメタデータを含む POST メッセージにすることもできます (たとえば、複数のノードからの INSERT 順序を解決するための保存のタイムスタンプ)。
ノードに静的 IP アドレスがない場合は、動的 DNS アドレス指定サービスに登録して、IP が変更された場合でも各ノードがピアと連絡を取り合うことができるようにすることができます。ノード間のメッセージが本物であることを保証するために、メッセージ署名システムを追加することも検討してください。