活動イベントを Web サービス経由でデータベースに報告するシステムを設計しようとしています。Web サービスとデータベースは既に構築されています (COTS ソフトウェア)。後は、イベント ソースを提供するだけです。
ただし、問題は、イベント ソースがフォールト トレラントである必要があることです。対話できるレプリケートされたデータベースが複数あるため、対話している Web サービスまたはデータベースがダウンした場合、ソフトウェアは稼働中の別のサービスにすばやく切り替えることができます。
私が助けを必要としているのは、すべてのデータベースがダウンしている場合です。イベントが山積みになったときにイベントを保持するキューを既に設計しましたが (接続が復元されるとバーストします)、キューはメモリ内構造です: アプリがこの状態でクラッシュした場合、または電源が失われた場合など、キュー内のすべてのイベントが失われます。これは受け入れがたい。私が必要としているのは、データベースがオンラインに戻ったときに、停電やクラッシュが発生した場合でも、キューに入れられたイベントのバーストを送信できるように、イベントを永続化する方法です。
ファイル システムをバッキング ストアとして使用するために、キュー自体を再実装したくないことはわかっています。これは機能します (私も試しました) - しかし、この方法では、ハード ドライブがボトルネックになるため、システムの速度が劇的に低下します。これ以外に、データベースへのアクセスが利用できない場合にのみ、すべてのイベントがハード ドライブに安全に保存されるように、このシステムを設計する 1 つの方法は思い浮かびません。
誰にもアイデアはありますか?=)