ストレージキューとサービスバス
これは、私がこの質問を通して考える際に持っていたいくつかの異なる考慮事項の内訳です。
可用性
昨年11月にストレージが停止したため、Azureは、コードをすべてのリージョンに一度にデプロイすることはないと約束しました。これをシステムに組み込んで、不可能にしました。 https://azure.microsoft.com/en-us/blog/final-root-cause-analysis-and-improvement-areas-nov-18-azure-storage-service-interruption/
msdnが可用性について言っていることは次のとおりです。
既にAzureStorageBlobsまたはTablesを使用していて、キューの使用を開始した場合、99.9%の可用性が保証されます。サービスバスキューでブロブまたはテーブルを使用すると、可用性が低下します。
Azureキューは、アプリケーションコンポーネントの分離をサポートして、スケーラビリティと障害に対する耐性を高めるように設計されています。
発達
個人的には、ストレージAPIに慣れており、ほとんどのアプリの他の領域でBLOBストレージをすでに必要としています。ストレージキューは、ストレージBLOBとまったく同じSDKを使用します。Azureキューは、キュー、テーブル、およびBLOB全体で統一された一貫性のあるプログラミングモデルを提供します
費用
Service Busでサポートされている受信および削除モードは、配信保証の低下と引き換えに、メッセージング操作の数(および関連するコスト)を削減する機能を提供します。
アプリを実行するための予算を維持し始めなければならない場合に活用できるサービスバスのコスト管理に関するツールがあるようです-私は潜在的なストレージキューのコストを以下に分解しようとしました:)。GRSの場合、1時間あたり40,000を超えるキューで、月に100ドル未満になります。残りのストレージコストとグループ化すると、ここでコストの削減に集中するメリットはありません。(帯域幅は両方で同じであり、比較するとキャンセルされます)
ストレージの価格
あなたは無制限の無料のキューと操作を手に入れます-あなたはスペースの代金を払います
- 平均として30Kのメッセージサイズを想定
- 1024ではなくMBで1000Kを想定
- 1TBを超える段階的な価格設定に達しないことを前提としています
30K/1メッセージ*1TB / 1000000000K * $ .095 / 1 GB * 1000GB / 1 TB = $0.00000285/最初のTBの使用に対するメッセージ
1メッセージ/〜30K * 1000000000K / 1 TB =1TBの33333333メッセージ
33333333メッセージ*$0.00000285/メッセージ=最初のTBで約$95ドル
1か月に渡って、その1番目のTBで1時間に40,000件のメッセージを処理できます。
サービスバスの価格
- 月額10ドル基本価格
- 操作ごとの支払い(すべてのAPI呼び出しは操作です)-キューの追加/キューの受信/キューの監視など。
- 1か月あたり1250万の無料オペレーションを利用できます
- その後、100万オペレーションごとに支払う
ここで使用量を見積もるのは難しいですが、1億回の運用には月に80ドルの費用がかかります
バッチ受信
ストレージは、メッセージを取得するときにメッセージ数を指定することで最大32のメッセージをバッチ処理できますが、Service Busでは、キュークライアントが複数のメッセージを1つの送信操作にバッチ処理できます。
したがって、ストレージはバッチ受信であり、サービスバスはバッチ送信です。
モニタリング
Azureキューを使用すると、キューに対して実行されたすべてのトランザクションの詳細なログと、集計されたメトリックを取得できます。この種のサポートは、Service Busではすぐに使用できるものではありませんが、構築済みのソリューションがどこかにある可能性があります。
フォワーディング
Service Busには、ストレージキューが欠落している自動転送機能があります。
自動転送を使用すると、数千のキューがメッセージを1つのキューに自動転送し、受信側のアプリケーションがそこからメッセージを消費します。このメカニズムを使用して、セキュリティを実現し、フローを制御し、各メッセージ発行者間でストレージを分離できます。
重複
Service Busキューでサポートされている重複検出機能は、MessageIDプロパティの値に基づいて、キューまたはトピックに送信された重複メッセージを自動的に削除します。
ストレージキューメッセージは、警告なしに複製される可能性があります。
メタデータ
Service Busは、メッセージヘッダーと本文の2つの部分を提供します。これは、グローバルに展開されたインフラストラクチャにとって非常に便利な機能です。リージョン名やインスタンスIDなどでメッセージを装飾できます。キューメッセージは単純な文字列です。一方、Azureストレージキューは、名前と値のペアの形式で、キューの説明に適用できる任意の属性のサポートを提供します。したがって、Service Busでメッセージを装飾し、ストレージキューでキューを装飾することができます
配達保証
ServiceBusはAt-Most-OnceとAt-Least-Onceを提供しますが、QueuesはAt-Least-Once配信のみを提供します。これにより、同時サブスクライバーに問題が発生した場合に、キューを使用する機能が制限される可能性があります。
パフォーマンス
Azureストレージキューは(データセンター内で)10ミリ秒のレイテンシーを提供し、Service Busは20〜25ミリ秒のレイテンシーを提供します。サービスバスは、必要に応じて10msよりも優れたロングポーリングを提供します。
安全
ストレージキューはプライマリ/セカンダリ共有キーを使用しますが、サービスバスはActiveDirectoryを介して送信者/受信者/管理者の役割を持つRBACを提供します。
参照