現在、他のサービスからリアルタイム情報を送信するソケットからデータを収集する NodeJS プログラムがあります。
このデータは、前述のインスタンスによってデータベースに保存されます。このプロセスは、ストリームをリッスンするだけです。オブジェクトを解析し、その情報でデータベースを更新します。
次に、別のサービスがデータベースからデータを読み取るだけです。これは、ユーザーが情報を得るためにポーリングするものです。
私の質問は:
このコードの 2 つのインスタンスが実行され、2 つの別々のデータ センターで実行され続けていることを確認するにはどうすればよいですか? そのため、1 つのインスタンスがダウンしても、もう 1 つのインスタンスがデータベースの更新を開始するだけです。他のプロセスを修正している間。
ここで私が考えていたこと:
各データセンターに 1 つずつ、2 つの PosgresSQL サーバーを実行することを考えていました。マスターおよびスタンバイモードで実行中。これにより、両方のデータ センターの Web サービスがデータベースからデータを読み取ることができるようになりますが、マスターがまだ稼働している間はデータを更新することはできません。私が望む唯一の更新を私に与えます。
しかし、もう 1 つの問題は、NodeJS インスタンスが停止した場合です。私はそれを知る方法がありませんか?ハートビート システムを実装することはできますが、もっと良いものがあるはずです。
キューを使用して Rabbit MQ サービスを実行することも検討しましたが、これでは単一障害点が発生します。
これについてしばらく考えていましたが、機能するアーキテクチャが見つからないようです。何かアドバイス ?