ネットワーク全体の構成ストレージとしてmongodbを使用しようとしています。この同じアプリがネットワーク上の複数のマシンで実行され、それぞれがローカルの mongodb から構成を取得します。mongodb が同期されます。私が望むのは、1 つのアプリケーションが構成値のいずれかを変更した場合、すべての n-1 アプリでコールバック/通知を取得することです。このような設定は可能ですか?
(ネットワーク転送/同期などを自分で行う必要がなくなります。)
ネットワーク全体の構成ストレージとしてmongodbを使用しようとしています。この同じアプリがネットワーク上の複数のマシンで実行され、それぞれがローカルの mongodb から構成を取得します。mongodb が同期されます。私が望むのは、1 つのアプリケーションが構成値のいずれかを変更した場合、すべての n-1 アプリでコールバック/通知を取得することです。このような設定は可能ですか?
(ネットワーク転送/同期などを自分で行う必要がなくなります。)
MongoDB にはまだトリガーがありませんが、アプリケーションをフックして oplog コレクションをテールオフし、ドキュメントが削除 (または更新、挿入など) されるたびに何かを行うことができます。
これを行う方法については、3 部構成のブログ投稿が役立つ場合があります 。
モンゴッドが同期しているとはどういう意味ですか?彼らは実際に彼らの間でデータを複製していますか?あなたがその同期を管理したいと思うように聞こえるので、私はそうは思わない。
過去に、私はMongoDBとaspで同様のことを達成しましたが、これには一元化されたmongoインスタンス(レプリカペアなど)が必要です。基本的に、ローカルインスタンスに変更が加えられるたびに、中央インスタンスの上限付きコレクションも、新しいバージョンの構成値と、その値が最後に更新された日時と、どのサーバーが値を更新したかを示すタイムスタンプで更新されます。
次に、個別のスレッドが個々のサーバーで実行され、中央インスタンスに対して調整可能なカーソルが開いたままになります。カーソルによって新しいレコードが取得されるたびに、新しい値がローカルインスタンスのタイムスタンプと比較され、それに応じて更新されます(または更新されません)。これらのタイムスタンプと変更を行った「信頼できる」サーバーを比較するときは注意して、更新の嵐に巻き込まれないようにする必要があります。また、更新が誰かが実際に値を変更したためか、値が「複製」されたためかを認識する必要があります。更新が複製更新である場合は、中央インスタンスを更新しないでください。