問題タブ [raft]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
neo4j - Neo4j カジュアル クラスタリング - サーバーがお互いを検出できない
Neo4j (3.1 エンタープライズ) Causal クラスターをデプロイしようとしていました。オペレーション マニュアルを注意深く読み、ローカル マシンに 3 コア クラスターを作成しようとしました (新規インストールと Docker の両方を使用)。しかし、クラスターを別のマシン (Google Cloud Compute) にデプロイしようとすると、すべてのクラスター メンバーが次の場所でスタックします。
ポートを変更して、パブリック/プライベート IP を使用しようとしました。また、5000 ポートが開いていることも確認しました (はい、必要なファイアウォール ルールを追加しました)。
しかし、まだクラスターを起動することができません。
編集:
異なる GCP マシンで次の Docker コンテナを実行しています。
consensus - パーティション下の Raft レプリケーション
- 7 メンバー クラスタ。そのうちの 1 つがリーダーです。
- リーダーはログの複製を試みます (いくつかの書き込み)
- ネットワーク パーティションが発生します。それぞれ3名と4名。
- リーダーは少数派のパーティションに行き着く
- リーダーが 2 人のフォロワーにしか到達しない → レプリケーションの失敗
この状況ではどうなりますか?
私が理解しているように、2人のフォロワーは「悪い」書き込みを適用し、ネットワークパーティションが修復されると、その書き込みを多数派リーダーの履歴で上書きします. しかし、これは線形化に違反しています。
thrift - 分散データ システム (クライアント、サーバー) のスリフト実装を Raft プロトコルと統合する
だから、まず第一に、私の英語でごめんなさい。私はネイティブスピーカーではありません。
問題は..Thrift を使用して分散データ (3 サーバー) を使用する Cliente-Server アプリケーションを既に実装しています。現在 (プロジェクトの最終段階) は、Raft の実装 (Java を使用しているため、オプションは模倣) を使用して各サーバーを複製することです。しかし、Thrift は彼のやり方でサーバーとクライアントを作成し (Grafosd.Client client = new... のようなもの)、Grafosd は Thrift によって生成されます。また、Thrift はデータを Handler? に保存します。そして、copycat は別の方法でサーバーとクライアントを作成します (CopycatClient client = builder.build(); のようなもの)。データは StateMachine? に格納されます。
したがって、両方を統合するのは困難です。Raft プロトコルの実装で Thrift Client-Server を使用したことがある人はいますか? (真似する必要はありません。Java での Raft の任意の実装にすることができます)。