0

プレーヤー、ゲーム、ボードに関するステータス情報をサーバーに保存する必要があるソーシャルゲームを構築しています。ステータス情報は、効率を上げるためにバイト配列に簡単にエンコードでき、単一のID(たとえば、ユーザーID、ゲームID)で参照できます。書き込みよりも読み取りの方がはるかに多いと思います。書き込みはそれほど効率的である必要はありません。

Windows Azureを使用して、この情報を保存および公開するための最も効率的な方法を見つけたいと思います。ここで、効率的な方法とは(重要度の高い順に)次のことを意味します。

  • 最速の応答時間、および
  • 最低の運用コスト。

私の最初の目的は、blobストレージを使用してこれらのバイトblobを公開することです(必要に応じて更新するWebロールを使用)。しかし、パフォーマンスは最高ですか?または、ステータス情報をSQL Azureデータベースに保存し、 Web APIを介して公開することもできます(オンザフライで応答を作成します)。

iOSデバイスからblob情報にアクセスする際の落とし穴はありますか?

4

3 に答える 3

1

提供された情報を使用すると、blob ストレージが両方の要件を満たす可能性が高くなると思います。大規模で分散したユーザーがいる場合はなおさらです。レイテンシが問題になるように思われるため、SQL Azure を使用するには、「グローバルな利用者」をサポートするために複数のデータ センターに展開する必要があり、インスタンス間で何らかのデータ同期レイヤーを取り込む必要があります。

BLOB ストレージを使用すると、バイトあたりのストレージ コストが確実に安くなります。また、CDN を利用して、追加の (ただし管理可能な) コストを使用して、そのグローバル オーディエンスの待機時間を短縮できます。いずれにせよ、SQL Azure のリレーショナル機能が必要なようには思えません。

上記のコメントで述べたように、Windows Azure Mobile Servicesを監視してください。現在はニーズに合わないかもしれませんが、追加のプラットフォーム サポートが発表されており、現在 Windows 8 からのサービスを使用するのは非常に簡単です。ちなみに、バックエンドとして SQL Azure を使用しているため、コストを考慮する必要があります (ただし、プレビュー モードのサービス自体は無料です)。参考までに、iOS での Windows Azure モバイル サービスの使用に関するこのブログを見つけました。オープン スタンダードとインターフェイスで期待されるように、何でも可能です :)

于 2012-09-18T13:35:45.273 に答える
1

BLOB ストレージを使用するという最初の考えは、良い出発点でした。アプリケーションでいくつかのハイスコアを表示したいとしましょう (これは、あなたが話している半静的であると仮定します)。

Worker ロールは、過去 4 時間の上位 100 人のユーザーを計算し、このリストを blob に (JSON 文字列として) 保存できます。次に、ブロブ ストレージのパフォーマンスがアプリにとって十分かどうかを判断する必要がありますか? スケーラビリティ ターゲットを見てみましょう。

  • 1 つの BLOB で最大 60 MB/秒
  • トランザクション: 1 秒あたり最大 5,000 のエンティティ/メッセージ/BLOB (ストレージ アカウントごと)

大量のユーザーがいる場合、トランザクション制限がボトルネックになる可能性があります。その場合、CDN を使用してパフォーマンスを向上させることができます。CDN を使用すると、コンテンツは24 か国の CDN ノードに複製されます。つまり、エンド ユーザーは、アプリケーションがホストされているデータセンターとは関係なく、「より近い」/より高速であると判断されたノードから BLOB をダウンロードし、前述のスケーラビリティ ターゲットに制限されません。

また、リアルタイムでこれを行う必要なく (おそらくユーザーがゲームを終了するたびに)、この半静的データを参照したいシナリオがあるかもしれないことを考慮する必要があります (ブロックしたくない)これが長時間実行されるプロセスの場合はユーザー)。このようなシナリオは、キュー、トピック、およびサブスクリプションを使用して簡単に対処できます。これにより、ユーザーがゲームを終了したときにメッセージをキュー (またはトピック) にドロップし、1 つまたは複数のバックグラウンドの「ワーカー」(おそらく他のロール/VM/...) にメッセージを処理させることができます。

于 2012-09-18T13:50:24.407 に答える
0

個人的には、Windows Azure クラウド サービスの "ローカル ストレージ" 領域に半静的コンテンツをキャッシュすることの大ファンです。リクエストが届いたときに、すでにファイルがある場合は、そのファイルへのファイル ストリーム参照をリクエスタに返すことができます。このアプローチにより、BLOB ストレージ アカウントを消費クライアントに直接公開することを防ぎ、トランザクション コストの削減にも役立ちます。リクエストを処理するサービスが、ACS スタイルの動作などのビジネス ロジックをストリームに導入できるようにすることには、潜在的な利点もあります。

もちろん、これにはトレードオフが伴います。キャッシュを管理する必要があり、クラウド サービスで使用できる帯域幅は、Windows Azure ストレージに任せるのではなく、要求応答を提供するのに役立つ必要があります。

于 2012-09-18T18:09:18.917 に答える