2

大規模な e コマース サイトが、セッション キャッシュを共有キャッシュから専用キャッシュに切り替えようとしています。

通常は中規模のサーバー (5 ~ 6 台) で実行されています... 繁忙期には 20 台の中規模サーバーで実行されます。非常に忙しい時期に、サイトへの 1 秒あたり 2000 件以上のリクエストがあっても不合理ではありません。

ここでは同じ場所に配置されたキャッシュで十分ですか、それとも専用のワーカー ロールにキャッシュを配置する必要がありますか?

また、セッション データに対して高可用性を有効にする必要がありますか? このサイトは、優れたユーザー エクスペリエンスを提供するために、セッション データの存在に依存しています。ただし、キャッシュは Azure BLOB ストレージに永続化されるため、高可用性オプションを完全に取得できるかどうかはわかりません

4

2 に答える 2

9

専用ロールの使用は、実行するロールの数と、Web ロールのメモリ使用量によってスケーリングが決定されるかどうかによって異なります。たとえば、Web ロールが常にメモリ使用量を押し上げており、スケールアウトのトリガーが CPU ではなくメモリである場合は、キャッシュに専用のロールを使用することを検討してください。これにより、Web ロールは負荷をより長く処理できるようになります。Web ロールが CPU を集中的に使用する場合は、各ロールのメモリをキャッシュ専用にすることをお勧めします。また、専用のロールで実行している場合、負荷と可用性を処理するために複数のロールが必要であることを考慮する必要があります。そのため、ビジーでない時間帯でも、キャッシュを実行するロールが少なくとも 3 つあることになります (ただし、Web ロールはおそらくそれより少なくなります)。 .

同じ場所にあるロール キャッシングに関する考慮事項の 1 つは、スティッキー セッションがある場合、アイテムが同じマシン上にあるため、待機時間が短くなるということです。残念ながら、Azure ロード バランサーはラウンド ロビンであり、スティッキーではありません。そのため、セッションが同じマシンに戻る可能性は低くなります (5 つのロールで 1/5 の時間)。これは、ほとんどの場合、キャッシュ アイテムがクラスター内の別のロールからフェッチされることを意味するため、同じ場所に配置された待機時間の利点が失われます。

キャッシュは分散され、メモリ内にあります-私が認識しているブロブストレージはありません(「クラスターのランタイム状態」を除いて-それが何であれ。キャッシュにロードされたアイテムは、そのマシンからクラスター上の他のマシンで利用できるようになりますit is stored (in memory) on (a read from machine A to machine A does not also store it on machine A - see below). キャッシュされたアイテムは常にメモリ内のみにあり、キャッシュ サイズは使用可能なメモリによって制限されます。

高可用性オプションは、アイテムを (ストレージではなく) 別のマシンにコピーするため、1 つのマシンに障害が発生した場合でも、どこかにコピーが残ります。アイテムは 2 つの異なる場所でメモリを使用するため、高可用性もより多くのメモリを使用します。失敗する可能性は、e コマース アプリにとって十分に低い可能性があります。アイテムが (失敗または期限切れによって) キャッシュされていない場合、永続化されたデータから再構築される可能性があります。たとえば、バスケットをキャッシュに保持し、ストレージに永続化しない場合、ロールがリサイクルされてもバスケットが失われることは望ましくありません。その場合、高可用性が最適なオプションになる可能性があります。

于 2013-02-12T18:48:33.393 に答える
2

素晴らしい答え@SimonMunroですが、私の経験では、Azure Co-located Cache は本番環境には適していません。私たちの負荷テストでは、サーバーがリサイクルされると、キャッシュが回復するまでに非常に長い時間がかかることが示されました。データベースからデータを取得することでこれを防ぐようにコーディングしましたが、データベースへのストレスによりサイトが停止します。これは、ノードがリサイクルされたときだけではありません。クラウド サービスをスケールアップまたはスケールダウンする場合も同様です。VIPスワップを実行する場合でも。

Azure 専用キャッシュを使用して同じテストを実行したところ、サイトのパフォーマンスにほとんどまたはまったく影響を与えることなく、キャッシュ ワーカー ロールのリサイクルの状況を処理できることがわかりました。 サイトを実行したい場合は、常にAzure Dedicated Cache を使用することをお勧めします。

于 2013-04-26T11:59:39.677 に答える