キーポイント
はじめに
この記事では、メッセージキューの概念を紹介し、3つの特定のメッセージキューサービスの利点と欠点について説明します:BeanStalkd、IronMQ、およびAmazon SQS。この記事で説明されている情報は、執筆時点で正しいものであり、予告なく変更される場合があります。
メッセージキューとは何ですか?QUOTEを使用すると、後でジョブを処理できるようにメタデータを保存できます。彼らは、プロセスを分離するためのタスクを延期する柔軟性を提供することにより、SOA(サービス指向のアーキテクチャ)の開発を支援できます。正しく適用すると、キューは負荷時間を短縮することにより、ウェブサイトのユーザーエクスペリエンスを大幅に改善できます。
メッセージキューの利点:async:
キューにすぐにキューを行い、後で実行します。async:
ジョブが完了するまで待つ必要があります。時間のかかるプロセスは、キューに入れることができます:
クリエイティブな方法でキューを使用することもできます。ジョブをロックして、1人のユーザーのみが一度に情報にアクセスできるようにします。
service
多くのサービスを使用してメッセージキューを実装できます。この記事では、BeanStalkd、IronMQ、およびAmazon SQSの違いの概要を説明しています。
beanstalkd beanstalkdは「…シンプルで高速なジョブキュー」です。 MITライセンスの下でオープンソースソフトウェアとしてリリースされました。優れたドキュメントがあり、ユニットテストが行われ、ダウンロードして自分のサーバーで無料で実行できます。このアーキテクチャは、メッセージキュー用に特別に設計されたMemcachedから借用しています。
著者のデイブ・ケネディによって書かれたビーンズシュタルクのビート・ザ・ジャイアンツ・ザ・ジャイアンツのタイトルの投稿には、ビーンズシュタルクとルビーを始める方法に関する情報が含まれています。
Ironmq IRONMQは、管理されたRESTFUL WEBサービスです。開発者は無料のティアを利用できます。他の多くのサブスクリプションティアは、商用アプリケーションで使用できます。
sqs
Amazon SQSは、メッセージキューを実装するための安価なホスティングソリューションです。 Amazon Web Services(AWS)の一部です。 Amazonは、SQSを含むネットワークサービスを評価するための無料の層を提供します。
サーバーの設定
beanstalkd
Ironmqおよびsqs
IronMQおよびAmazon SQSはクラウドベースのネットワークサービスです。サーバーにアプリケーションを設定する代わりに、アカウントを登録してキューを設定するだけです。
サービスレベル契約(SLA)
beanstalkd beanstalkdはあなた自身のホストサーバーであり、その可用性を確保することはあなたの責任です。
Ironmq Iron.ioは、少なくとも99.95%の毎月の請求サイクル中に稼働時間の割合とサービスレベル契約を結んでいます。彼らのPro Platinum パッケージ(月額2450ドル)には、サービスレベルの契約を含むカスタム契約条件があります。彼らはサービスポイントの払い戻しを提供します。sqs
Amazonは、SQSに特定のサービスレベル契約を提供していません。彼らは、追加料金でSQSをカバーできるサポートサービスを提供しています。
アーキテクチャbeanstalkd
Beanstalkd | IronMQ | Amazon SQS |
---|---|---|
PUSH(套接字) | HTTP 网络服务 | HTTP 网络服务 |
Ironmq SQSは管理されたRESTFUL WEBサービスです。
IRONMQはプッシュのような機能をサポートしています。サブスクライバーは、プロバイダーがキューにジョブに参加するたびに呼び出すことができます。通常、プッシュメソッドの代わりに、標準のRESTFULサービスを使用してジョブを着信して脱出することをお勧めします。
sqs
SQSはマネージドネットワークサービスです。sqsはプッシュをサポートしていません。キューにジョブがあるかどうかを確認するには、定期的に投票する必要があります。
SQSは、メッセージ受信待機時間(デフォルト:0秒、最大:20秒)と呼ばれる長い投票を使用して、作業者が仕事を待っている間に接続を開いたままにしておくことができます。これは、リクエストが少なく、ソケットの営業時間が長くなることを意味します。
クライアントライブラリ
beanstalkd 多くのプログラミング言語で利用できるオープンソースのBeanStalkdクライアントライブラリがたくさんあります。これらは、BeanStalkdのスタンドアロンプロジェクトです。
Ironmq IronMQクライアントライブラリはIron.ioによって提供されており、開発センターからダウンロードできます。
Beanstalkd | IronMQ | Amazon SQS |
---|---|---|
开源 | 官方 | 官方 |
oauthコマンドを実装する必要があります。
sqs
AWSクライアントライブラリには、SQSクライアントライブラリが含まれています。これらはAmazonによって提供され、多くのプログラミング言語で利用できます。
管理インターフェイス
beanstalkd グラフィカル管理インターフェイスは、デフォルトでは分散されていません。 BeanStalkDツールページには、デバッグと管理に役立つオープンソースプロジェクトがいくつかあります。
AWS管理コンソールを使用すると、SQSを管理できます。インターフェイスは、ステートレスプロトコルの上に構築されているため、最新情報を取得するには更新ボタンを押す必要があります。 ジョブ(sqs:メッセージ)を作成、読み取り、削除し、キュー構成を管理できます。
冗長beanstalkd 冗長性はクライアント側で処理され、サーバーがダウンすると仕事が失われます。
Beanstalkd | IronMQ | Amazon SQS |
---|---|---|
客户端 | 基于云 | 基于云 |
BeanStalkdには、ジョブをバイナリログに保存するオプションが含まれています。 -bオプションでBeanStalkdを開始する必要がありますが、回復キューはサーバーディスクへのアクセスが必要な手動タスクです。
Ironmq IRONMQは、高い持続性、可用性、冗長性を備えたクラウドベースのサービスです。 sqsジョブは、ホストされた領域の複数のサーバーに保存されます。このアプローチにより、サービスとジョブの可用性が失われるべきではありません。
安全
beanstalkd BeanStalkDへの接続では、認証は必要ありません。プロバイダーはジョブのキューに参加でき、ワークプログラムはセキュリティモデルを通過せずにジョブを保持できます。したがって、BeanStalkdで実行されているポートへの外部接続をブロックするファイアウォールを作成することを強くお勧めします。
Ironmq 招待状のコラボレーターを設定することで、メッセージキューを使用できます。アプリケーションへの認証は、Iron.ioトークンとプロジェクトIDで行われます。
Beanstalkd | IronMQ | Amazon SQS |
---|---|---|
无 | 令牌 | 密钥和密钥 |
sqs
SQSへの認証は、Amazon APIキーとキーを介して実装されます。 AWS管理コンソールを介して、他のAWSアカウントに対してアクセスキューアクセス許可を許可および取り消すことができます。
速度
beanstalkd BeanStalkdは、プロバイダーやワーカーと同じネットワークにある必要があるため、非常に高速です。 BeanStalkdは非常に速い場合があり、プロバイダーがキューに就職してMySQLに電話をかけた場合、MySQLが実行を完了する前に労働者が仕事を得ることができます。
Ironmq リクエストの遅延は、httpを介してIronmq Restfulネットワークサービスに送信されるため、増加します。 sqsリクエストの遅延は、HTTPを介してSQSネットワークサービスに送信されるため、増加します。 ジョブは、異なるサーバーやデータセンターに配布する必要があるため、すぐに取得できない場合があります。アプリケーション、プロバイダー、またはワーカーがEC2インスタンスでホストされている場合、この遅延は無視できるはずです。
ジョブをSQSに排除したときにすぐに利用できない場合があります。ジョブは別のサーバーに伝播する必要があります。通常、最大1秒間待ちます。
忠実度
beanstalkd キューはFIFOです(最初は最初に)。非常に重要な割り当てに優先順位を付けることができます。これは、割り当てが除去される順序に影響します。
Beanstalkd | IronMQ | Amazon SQS |
---|---|---|
FIFO | FIFO | 无保证 |
可优先级 | 无优先级 | 无优先级 |
Ironmq キューはFIFOです(最初は最初に)。最初にジョブを処理することはできません。
sqsジョブの発生順序は、キューへの入場順序とは異なります。 SQSは分散サービスであるため、各サーバーのジョブはさまざまな時期に利用可能になります。これは、SQを設計する際に注意すべきことです。
一度に入手してください1回限りのフェッチは、2人以上の労働者が、労働者がタイミングを出さない限り、並行して同じ仕事を決して実行しないという制限を説明しています。
beanstalkd BeanStalkdのソケットベースのアーキテクチャは、1回限りの買収を保証します。
Beanstalkd | IronMQ | Amazon SQS |
---|---|---|
保证 | 保证 | 不保证 |
sqs
SQSは分散サービスであるため、1回限り(しかしありそうもない)を取得することは保証されていません。
fail-safe
beanstalkd 労働者が設定された時間内にBeanStalkDに応答しない場合、またはジョブに応答せずにソケットが閉じられている場合、ジョブは自動的にキューに戻ります。
次に要求された労働者はすぐにそれを取得できます(キックバックは必要ありません)。
Ironmqおよびsqs労働者はキューに接続し、仕事を保持します。この瞬間から、労働者はキューを解放する前にキューからジョブを削除し、労働者を保持するための時間を削除する時間を設定しています。
新しいキューを作成
beanstalkd ジョブがキューに参加すると、キューが自動的に作成されます(BeanStalkd:Pipeline)。手動で作成する必要はありません。
Ironmq ダッシュボードでプロジェクトを作成する必要があります。プロジェクトには多くのキューが含まれています。ジョブがエンキューされる場合、またはダッシュボードの構成を手動で使用してキューを自動的に作成できます。sqs
SQSのキューは、AWS管理コンソールから手動で設定する必要があります。各キューは、キュー名として使用される一意のURLを生成します。 キューが属する領域(たとえば、US-West-1、EU-West-1など)に注意してください。SQSに接続する必要があるためです。
フレーム統合laravel
Laravelフレームワークには、BeanStalkd、IronMQ、およびAmazon SQSのメッセージキューをカプセル化する優れた組み込みラッパーがあります。アプリケーションを変更せずに、構成ごとにサーバーを変更できます。
phpコードの例これらのコードの例は、サーバーに接続する方法と、ジョブをキューにキュー、保持し、キューにキューに入れる方法を示しています。例外がスローされた場合、それはジョブを埋めます(サーバーがサポートしている場合)。 ジョブがenQuedされた後に実行を停止し、管理ツールを使用してキューをデバッグしてみてください。
(BeanStalkd、IronMQ、およびSQSのPHPコードの例は、それらが長すぎて擬似オリジナルの目標と一致しないため省略されています。これらのスニペットは、元のテキストから簡単にコピーできます。
メッセージキューのヒント
どちらのサービスを選択しても、キューを強く保つためのいくつかのヒントを次に示します:メタデータシリアル化
あなたの仕事は、サーバーのジョブデータサイズの制限内にある場合、好きなデータを含めることができます。ジョブボディのJSONを使用して、メタデータを簡単に転送できます。
ジョブデータのサイズを制限します
仕事を埋めるためにあまりにも多くのメタデータを使用しないようにしてください。データベースにいくつかの情報を保存し、後で処理するためにIDのみをキューにすることができる場合、キューはより強力でデバッグが簡単になります。
宿題のステータスを追跡します
何らかの理由で、すでに処理されたアイテムがキューに再び入っている場合、再処理したくない場合があります。残念ながら、ジョブデータは必須で一意ではないため、データベース内のジョブのステータスを追跡してください。
これは、ジョブテーブルに列を追加して、処理されたものとしてアイテムをマークするのと同じくらい簡単です。プロジェクトが処理されている場合は、キューから削除できます。
用語
特定の単語は、BeanStalkdとAmazon SQSの間で異なって使用されています。簡単な翻訳リストは次のとおりです
(BeanStalkd、Amazon SQS、およびIronMQの用語比較表は省略されています。なぜなら、それらは長すぎて擬似オリジナルの目的と一致しないため、これらの表を簡単にコピーできます。)
glossary
キューを使用する場合、次の用語に遭遇する場合があります。 埋葬(ヨブ) - 失敗した状態に仕事を置きます。ジョブが手動でキューに戻されるまで、ジョブを再処理することはできません。 IronMQとSQSはサポートされていません。
結論
メッセージキュー(FAQ) に関するよくある質問があります
(メッセージキューに関するよくある質問は、長すぎて擬似オリジナルの目標と一致しないため省略されています。これらの質問と回答は、元のテキストから簡単にコピーできます。)
以上がBeanStalkd、IronMQ、Amazon SQSの比較の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。