MSMQ のようなものを使用すると、スケーラビリティと信頼性がどのように向上しますか? 1 つの Web サーバーから 1 つのデータベース サーバーへのシナリオでは、それはまったく役に立ちますか?
コメントやリンクは大歓迎です。ありがとう
編集: Web サーバーは、SOAP スタイルの Web メソッドを公開する WCF を実行します。また、将来的には複数の Web サーバーが存在する可能性もあります。
MSMQ のようなものを使用すると、スケーラビリティと信頼性がどのように向上しますか? 1 つの Web サーバーから 1 つのデータベース サーバーへのシナリオでは、それはまったく役に立ちますか?
コメントやリンクは大歓迎です。ありがとう
編集: Web サーバーは、SOAP スタイルの Web メソッドを公開する WCF を実行します。また、将来的には複数の Web サーバーが存在する可能性もあります。
キュー (特にフォールト トレラントおよび永続的なキュー) は、コンポーネント間の通信を可能にし、最終的にはキュー ライターがリーダーに対して非同期になることを可能にします。これは、キューの使用率に応じてリーダーとライターをスケールアップできることを意味します。
Web リクエストを処理する簡単な例を考えてみましょう。負荷の高い操作がキューにプッシュされた場合、別の一連のコンポーネントがキューを読み取り、ライターに影響を与えることなくリクエストを処理できるため、HTTP リスナーは拘束されていないため、より多くのリクエストを処理できます。キュー内のアイテムの数が増えると、より多くのリーダーをオンラインにして処理することができます。
信頼性に関しては、キューが信頼できる場合、コンポーネント間のメッセージは失われないため、通信は本質的に信頼性が高くなります。リーダーとライターは上下する可能性がありますが、メッセージが安全である限り、メッセージが失われる可能性があるシステムよりも信頼性の高いシステムの基盤が得られます。
実際には、実行時の結合が低いシステムを作成しているため、ある時点での障害が必ずしもシステム全体に伝播するとは限りません。フォールト トレランス戦略をより効果的に採用できるようにします。
データベースと通信する Web サーバーは、MSMQ のメリットが得られるシナリオとは思えません。
ただし、Web サーバー、ドメイン サーバー、およびデータベース サーバーがある場合は、すべて異なります。このような場合、Web サーバーは MSMQ を介してドメイン サーバーと通信できます (配信が保証され、トランザクション形式で - 信頼性が確保されます)。追加の Web サーバーを導入しても、アーキテクチャはほとんど変わらないため、スケーラビリティが実現されます。
CQRS について読むのはいつでも良いことです。
はい、非同期処理と、キューに配置されたタスクが実行されるという合理的な保証が必要な場合は、1 つの Web/データベース サーバー シナリオに価値があります。高可用性は提供されません (特に、MSMQ を実行しているサーバーに障害が発生する可能性があります)。
詳細情報が必要な場合は、実装固有の詳細を提供してください。