私はCRUD webserviceを持っており、データベースがダウンしたときにデータが失われないようにする方法を見つけようとしています。誰もが、データベースがダウンすると、「読み込み」を取得することはできないが、データの損失がないことを確認する操作の特定のサブセットについては、誰もが認識しています。RabbitMQ、ZeroMQ、Service Brokerなどの高可用性データベースWebサービスを作成するのに適したソリューションですか?
私はこれが0MQ、RabbitMQ、またはMicrosoft MQサービスの1つのようなサービスによってカバーされているという印象を与えられました。読書や調査の数日後には、私たちがMQサービスで話しているメッセージにデータベース操作が含まれていることさえ確信していません。しかし、100%確信していますが、私がこれまでに望むことのできるくらい多くのこんにちは世界を並べることができます。
メッセージキューを使用してデータベースに保護層を追加することができれば、私はラビットに頼るだろう(クラッシュによって永続するように見えるため)。ターゲットはMicrosoft SQLサーバーのデータベースなのでそのソリューション(SQL Service BrokerやMSMQなど)がより適切です。
私がまだ確信していない本当の根本的な質問は、私がカードの正しいデッキでプレイしているかどうかということです。
データベースがダウンした場合でも機能し続ける高可用性のWebサービスが必要な場合、Webサービスとデータベースの間にRabbit MQインスタンスを配置するのは意味がありますか? RabbitMQにWebサーバーにメッセージを送信させるのがチェーンの正しいリンクでしょうか?
これを達成するための解決策がいくつかありますか?現時点では、データベース停止や何かのイベントでウェブログをロールアップする方法を見つけ出すというアイデアは数多くあります...しかし、私たちはまだ十分早い段階にあります(少なくとも私には)私はするつもりです。
メッセージキューは適切なソリューションですか?
問題ありません - キューイングを使用してもすべてのデータが失われることはありません。たとえば、IISがディスパッチできない場合、クライアントブラウザの要求が破棄される可能性があります。 –
Service BrokerはEFまたはADO.Netで簡単に使用できます。 async/awaitでうまく動作します。 –