1

活動イベントを Web サービス経由でデータベースに報告するシステムを設計しようとしています。Web サービスとデータベースは既に構築されています (COTS ソフトウェア)。後は、イベント ソースを提供するだけです。

ただし、問題は、イベント ソースがフォールト トレラントである必要があることです。対話できるレプリケートされたデータベースが複数あるため、対話している Web サービスまたはデータベースがダウンした場合、ソフトウェアは稼働中の別のサービスにすばやく切り替えることができます。

私が助けを必要としているのは、すべてのデータベースがダウンしている場合です。イベントが山積みになったときにイベントを保持するキューを既に設計しましたが (接続が復元されるとバーストします)、キューはメモリ内構造です: アプリがこの状態でクラッシュした場合、または電源が失われた場合など、キュー内のすべてのイベントが失われます。これは受け入れがたい。私が必要としているのは、データベースがオンラインに戻ったときに、停電やクラッシュが発生した場合でも、キューに入れられたイベントのバーストを送信できるように、イベントを永続化する方法です。

ファイル システムをバッキング ストアとして使用するために、キュー自体を再実装したくないことはわかっています。これは機能します (私も試しました) - しかし、この方法では、ハード ドライブがボトルネックになるため、システムの速度が劇的に低下します。これ以外に、データベースへのアクセスが利用できない場合にのみ、すべてのイベントがハード ドライブに安全に保存されるように、このシステムを設計する 1 つの方法は思い浮かびません。

誰にもアイデアはありますか?=)

4

3 に答える 3

0

msmq。Jobオブジェクトの概念も見ていただけると思います。

于 2011-06-30T13:54:34.793 に答える
0

フォールト トレランスを備えたメッセージングが必要な場合 (および/または保証された配信。説明に基づいて、あなたも必要であると推測しています)、私は通常 MSMQ を使用します。フォールト トレランス (マシンの再起動時にメッセージがディスクに保存される) と保証された配信 (メッセージは受信されるまで自動的かつ継続的に再送信される) の両方を提供するだけでなく、トランザクションの送受信、メッセージのジャーナリング、有害なメッセージの処理なども提供します。特徴。

MSMQ を使用して、毎秒数千メッセージのスループットを達成できました。率直に言って、フォールトトレラントでありながら、それよりもはるかに優れているかどうかはわかりません。

于 2011-06-30T13:51:22.600 に答える
0

私は、MSMQ のようなすぐに使用できるシステムを使用して、一連のメッセージング パターンを手元に置いたほうがよいという意見に同意します。

とにかく、自分でやらなければならない場合は、データを自分でシリアル化する代わりにメモリ内データベースを使用できます。十分に高速になるはずです。

于 2011-06-30T13:59:58.047 に答える