32

Azureアプリケーションに関する簡単な質問です。通信する必要のあるWebとワーカーの役割が多数ある場合、ドキュメントにはAzureQueueServiceを使用するように記載されています。

ただし、新しい.NETServiceBusがキューも提供するようになったことを読みました。これらは、はるかに詳細なAPIを提供しているように見えるため、より強力に見えます。.NSBはもっと面白そうに見えますが、分散アプリケーションでの使用を警戒するいくつかの問題があります。(たとえば、キュ​​ーの有効期限...キューが時間どおりに更新されることを保証できない場合は、すべてを失う可能性があります!)。

誰かがこれらの2つのテクノロジーのいずれかを使用した経験があり、どちらを選択するかについてアドバイスを与えることができますか。

私のユースケースは実際にはWeb/ワーカーの役割が相互に通信できるようにするだけなので、サービスバスはより強力に見えますが、AzureQueueServiceが私が求めているものだと思います。しかし、私は自分自身を隅に追いやる前に、それの確認を本当に探しています:-)

前もって感謝します。

アップデート

休憩中に2つのシステムについて読んだことがあります。.NETサービスバスは、汎用の信頼性の高いメッセージングシステムを提供するのではなく、システムを統合するために特別に設計されているように見えます。Azureキューは分散されており、信頼性と拡張性に優れているため、.NSBキューは、Azure自体でホストされているコードには適していません。

回答ありがとうございます。

4

6 に答える 6

29

ストレージキューとサービスバス

これは、私がこの質問を通して考える際に持っていたいくつかの異なる考慮事項の内訳です。

可用性

昨年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を提供します。

参照

于 2016-01-22T00:24:23.080 に答える
12

Webロールとワーカーロール間の通信には、Azureキューを使用することをお勧めします。キューを使用することは、Azureプロセス間で通信するための公式で認可された方法であり、私はあなたが自分自身を隅にプログラムすることを心から疑っています。Service Bus(AppFabric)はオーバーヘッドが高く、外部アプリとの通信には非常に適していますが、Azureアプリ内の迅速で単純なメッセージには最適ではない場合があります。

于 2009-12-18T17:38:48.097 に答える
0

私が理解しているように、Service Busは(以前のように)しばらくの間キューを持っていましたが、これらはメッセージを配信することが保証されていません-偶然です!

于 2009-12-23T14:31:12.273 に答える
0

Azure Queuesの継ぎ目は一致します。これは、ユースケースが単純なRESTベースのGet / Put/Peekインターフェイスで基本的なままであるためです。

ドキュメントは最近更新され(2015年5月21日)、どちらか一方を使用する場合の詳細と、一般的な機能(トランザクションのサポート、キューとメッセージのサイズ、存続時間など):

https://azure.microsoft.com/en-us/documentation/articles/service-bus-azure-and-service-bus-queues-compared-contrasted/

于 2015-07-20T23:00:17.553 に答える
0

開発者が学習するキュー関連のパターンは、両方に適用できます。どちらも、信頼性と実装の容易さの観点から使用できます。

ストレージキューのみが実行できること1)メッセージを処理しているワーカーがクラッシュします。後続のワーカーは、メッセージのステータスを読み取って、前のワーカーが中断したところから続行したいと考えています。2)キューに対して実行されたすべてのトランザクションのサーバー側ログが必要です。

しかし、比較は重要ではありません。カスタムキューの開発が必要な場合は、常にストレージキューを使用します。これは、Microsoftによって開発された最初のものでした。サービスバスはBizTalkをコピーして導入され、目的は統合(ハイブリッド)であるため、このラインには、セッション、トランザクション、自動デッドレターなどの高度な機能があります。

このリンクは比較を提供するので、このリンクも同様です。すべてを分析してアジャイル開発を開始することは難しいため、上記のルールが適用されます。

于 2018-10-14T06:33:52.690 に答える
0

明確にするために、これは、さまざまな理由でさまざまな時点で作成された2つのAzureコンポーネント間の比較です。

ストレージキューとサービスバスキュー-比較対照

Azureは、ストレージキューとServiceBusキューの2種類のキューメカニズムをサポートしています。

Azureストレージインフラストラクチャの一部であるストレージキューは、シンプルなRESTベースのGET / PUT / PEEKインターフェイスを備えており、サービス内およびサービス間で信頼性の高い永続的なメッセージングを提供します。

Service Busキューは、キューイング、パブリッシュ/サブスクライブ、およびより高度な統合パターンをサポートする、より広範なAzureメッセージングインフラストラクチャの一部です。Service Busのキュー/トピック/サブスクリプションの詳細については、ServiceBusの概要を参照してください。

両方のキューイングテクノロジが同時に存在しますが、Azure Storageサービス上に構築された専用のキューストレージメカニズムとして、ストレージキューが最初に導入されました。Service Busキューは、複数の通信プロトコル、データコントラクト、信頼ドメイン、ネットワーク環境にまたがる可能性のあるアプリケーションまたはアプリケーションコンポーネントを統合するように設計された、より広範なメッセージングインフラストラクチャ上に構築されます。

于 2018-10-28T22:19:37.250 に答える