私は、世界48カ国にオフィスを持つ組織のためにいくつかの仕事をしています。基本的には、現在作業している方法は、データベースのローカルコピーにすべてデータを格納し、それを世界中のすべての地域/オフィスに複製することです。ロンドンのサーバーに「開発コピー」がある場所で直接作業する必要のある奇妙な機会に、世界中のどこにいるかにかかわらず、ロンドンのサーバーに直接接続する必要があります。グローバルに分散されたNeo4jのアーキテクチャ?
したがって、組織全体に1つのグラフを作成して、各領域が比較的高速にグラフを読み込むように断片化したいとしましょう。私は書き込みがパフォーマンスを殺すだろうと心配しています。私は書き込みが単一のマスターを通過することを理解します。つまり、グローバルに単一のマスターが存在するのでしょうか?つまり、そのマスターがロンドンにいる場合、シドニーからデータベースに書き込むたびに、ローカルシャーディングに関係なくその距離を移動する必要がありますか?シドニーとロンドンが(何らかの理由で)断ち切れば、どうなるでしょうか?
本質的に、Neo4jはどのようにグローバルな配布の問題を解決しますか?
偉大な答え:2つの場所間のリンクが切断され、両方のクラスタに変更が加えられた後、リンクが復元されるとどうなりますか?私は、競合イベントのハンドラを提供しなければならないことについて何かを読んだと思います...そうですか? – gremwell
マスター選挙では、クォーラムを持つためには、クラスタメンバーの半分以上が必要です(そのため、奇数が必要です)。クォーラムがなければ、マスターは選出されません。クラスタの孤立した少数派は依然として読み込みを処理できますが、書き込みは受け付けません。 –
しかし、ロンドンには3つのクラスターがあり、シドニーには3つのクラスターがあります。マスターはロンドンにいて、誰かがロンドンのオフィスを切り離しています(注:サーバーはまだ稼動しており、ロンドンのオフィスにいるすべてのユーザーが引き続き使用しています)。シドニーは現在新しいマスターを選出し、しばらくの間運営しています。しばらくしてロンドンオフィスとの接続がオンラインに戻ります。何が起こるのですか? – gremwell