1

私はアプリケーションについて読んscalabilityperformanceいて、それを述べている行に出くわしました

「アプリケーションから状態を削除すると、結果としてデータベースの負荷が大幅に増加します」

この行を理解できません。理由は次のとおりです。

  1. www[または休息]を使用していて、であるWebサーバーにリクエストを送信するとしましょうstateless
  2. statefulリクエストに DB 操作が必要な場合、それはどのリクエストにも相当しませんか?

DB 負荷を増加させるステートレス リクエストの何が問題なのでしょうか?

4

2 に答える 2

1

うーん、引用された内容の文脈がわからない。アプリケーションの状態を削除 (または最小化) できますが、すべての場合ではありません。これらの場合に最初にできることは、状態をデータベース (または redis のようなエンタープライズ キャッシュ) に移動することです。状態オブジェクトを保持するだけです。したがって、各リクエストは、ノードにデータが含まれている場合よりも多くのデータを DB から取得します。

現在のプロジェクトでは、応答時間をミリ秒にしようとしています。状態を削除すると、リクエストごとに 1 つのリクエストが数秒遅くなり、追加のデータベース負荷が発生する大きな DDD の集計が読み込まれることになります。これは、引用文の結果です。

于 2013-08-11T14:27:29.733 に答える
0

あなたの引用された声明は真実ではないと思います。

この制約は、可視性、信頼性、およびスケーラビリティの特性をもたらします。監視システムは、要求の完全な性質を判断するために単一の要求データを超えて調べる必要がないため、可視性が向上します。部分的な障害から回復するタスクが容易になるため、信頼性が向上します [133]。リクエスト間で状態を保存する必要がないため、サーバー コンポーネントがリソースをすばやく解放できるため、スケーラビリティが向上します。また、サーバーがリクエスト間でリソースの使用を管理する必要がないため、実装がさらに簡素化されます。

フィールディングの論文によると、通信から状態を削除するとスケーラビリティが向上し、スケーラビリティをさらに向上させる REST の階層化されたシステム制約を定義する必要があります。明確にするために、システムのどこにでもキャッシュを追加できるため、逆にデータベースの負荷が減少します。

于 2014-09-07T12:13:56.370 に答える