Raft elections in depth¶
PGDでの書き込みリーダーの選択は、PGDのRaftメカニズムに依存しています。 Raftメカニズムは、PGDのBDR Postgres拡張機能の完全に内部であり、透過的に動作します。グループ内のノードは、グループのノード内にRaftリーダーを確立することから始まります。
ノードの相互作用¶
Raftリーダーが確立されると、リーダーはカタログを照会して、プロキシルーティングの書き込みリーダーが指定されたかどうかを確認します。
書き込みリーダーが指定されていない場合、ラフトリーダーは新しい書き込みリーダーを指定する手順を実行します。プロセスは、グループ内のすべてのノードを照会して状態を確立することから始まります。結果のノードのリストは、不適格なノード(たとえば、監視ノード)でフィルタリングされ、優先順位が付けられます。リストの最初/一番上のエントリーは、 Raftログの新しい書き込みリーダーとして設定されます。
プロキシ相互作用¶
すべてのプロキシは、最初にグループ内のデータノードに接続します。この動作により、現在の書き込みリーダーのカタログを照会し、そのノードへの接続のルーティングを開始できます。
それらはラフトリーダーに接続し、書き込みリーダーのカタログエントリへの変更をリッスンします。書き込みリーダーの変更が通知されると、ルーティングを再構成し、新しい書き込みリーダーに接続を送信します。
ノードとプロキシの相互作用の両方を次のシーケンス図に示します。 2つのノードと1つのプロキシが関与し、どのノードが書き込みリーダーであるかを調整し、プロキシはどのノードが書き込みリーダーであるかを学習するのを待っています。
Sequence Diagram¶