をいただければ幸い処理は、このようにオフラインを要求しますが、大量のリクエストを扱っているときのための一般的なパターンです。
これを行う必要があるかどうかは、いくつかの要因に基づいています。
主な要因は、発信者がリクエストに対する応答を同期して確認する必要があるかどうかです。
呼び出し元は、コール応答の一部としてデータが正常にコミットされたかどうかを、即座に確実に知る必要がありますか?もしそうなら、要求処理をオフラインにすることは本当にオプションではありません。
しかし、発信者が自分の要求がオフラインで処理され、必要な応答もオフラインで送信されたという応答を送信できるのであれば、キューを使用することは間違いなく全体的なアーキテクチャに役立ちます。
利点は、フロントエンドの可用性の問題です。
短期間に何千ものリクエストを処理していて、各リクエストがスレッドによって処理されてデータベースにデータを挿入する場合、ディスパッチャスレッドが存在しない問題に遭遇する可能性がありますサービス受信要求。
しかし、IISがやっているバックエンドの作業量を減らすことによって(ローカルキューへの書き込みはデータベース呼び出しに対して非常に安い)、可用性に基づく失敗の可能性も低減します。
キューを使用することで、バックエンド処理のスループットを制御できるため、バックエンドトラフィックを抑制することができます。
たとえば、リクエストをデキューしてデータベースに処理するシングルスレッドキューリーダープロセスを使用できます。キューにメッセージが蓄積されている場合は、そのインスタンスをさらにホストすることによってキューリーダーサービスをスケールアウトできます。
これは、一度にデータベース上のアクセススレッドの数をより詳細に制御できるため、データベースの競合の問題が発生する可能性を減らすことを意味します。
このように、キューイングを使用することで、障害が少なく、管理オーバーヘッドが低くなります。これは、よく書かれたアプリケーションの特徴です。これは、特にあなたのWebサーバー上であなたのデータベースをホストすることを検討しているときに!
また、CQRSと呼ばれるアーキテクチャパターンの読み込みが必要です。このパターンの中心は、データベースへの書き込みをオフラインで行うことです。
クラッキングの回答ヒュー、大変ありがとうございます。私が疑っていることを確認して、もっとたくさん!オプションの大きな比較と説明のために –
+1。どうもありがとうございました。 –