ホームページ > バックエンド開発 > PHPチュートリアル > BeanStalkd、IronMQ、Amazon SQSの比較

BeanStalkd、IronMQ、Amazon SQSの比較

尊渡假赌尊渡假赌尊渡假赌
リリース: 2025-02-22 09:48:11
オリジナル
297 人が閲覧しました

Comparing Beanstalkd, IronMQ and Amazon SQS

キーポイント

  • サービス設定: beanstalkdは自己ホストされており、LinuxまたはMac OS Xで手動で設定する必要がありますが、IronMQとAmazon SQSはローカル設定を最小限に抑えるクラウドホスティングサービスです。
  • サービスレベル契約(SLA):IRONMQは99.95%のアップタイムSLAを提供し、BeanStalkdとAmazon SQはそのようなプロトコルを提供しません。これは追加料金でオプションのサポートサービスを提供します。
  • クライアントライブラリおよび管理インターフェイス:BeanStalkdはオープンソースのクライアントライブラリをサポートし、組み込みの管理インターフェイスを欠いていますが、IronMQとAmazon SQは、ユーザーフレンドリーな管理パネルまたはコンソールを公式クライアントライブラリに提供します。
  • 冗長性とセキュリティ:IRONMQとAmazon SQは、クラウドベースのインフラストラクチャと、トークンやキーキー認証などのセキュリティ機能を強化した強化されたセキュリティ機能を通じて高い冗長性を提供します。組み込みのセキュリティ対策の。
  • パフォーマンスと機能:BeanStalkdは同じネットワーク内で高速処理を提供しますが、IronMQで提供されるメッセージの優先度などの高度な機能がありません。 Amazon SQSは、遅延を減らすために長い投票をサポートしていますが、BeanStalkdやIronMQのFIFOシステムとは異なるメッセージ検索の順序を保証しません。

はじめに

この記事では、メッセージキューの概念を紹介し、3つの特定のメッセージキューサービスの利点と欠点について説明します:BeanStalkd、IronMQ、およびAmazon SQS。

この記事で説明されている情報は、執筆時点で正しいものであり、予告なく変更される場合があります。

メッセージキューとは何ですか?

QUOTEを使用すると、後でジョブを処理できるようにメタデータを保存できます。彼らは、プロセスを分離するためのタスクを延期する柔軟性を提供することにより、SOA(サービス指向のアーキテクチャ)の開発を支援できます。正しく適用すると、キューは負荷時間を短縮することにより、ウェブサイトのユーザーエクスペリエンスを大幅に改善できます。

メッセージキューの利点:

async:

キューにすぐにキューを行い、後で実行します。
  • デカップリング:個別のアプリケーションロジック。
  • 弾力性:アプリケーションの一部が失敗した場合、アプリケーション全体がクラッシュしません。
  • 冗長:ジョブが失敗した場合は、再試行できます。
  • 保証:ジョブが処理されることを確認してください。
  • スケーラブル:多くの労働者は、キューで単一の仕事を処理できます。
  • 分析:パフォーマンスの問題を特定するのに役立ちます。
  • メッセージキューの短所:

async:

ジョブが完了するまで待つ必要があります。
  • ロード:キュー内の各ジョブは、処理する前に順番に待機する必要があります。ジョブがタイムアウトした場合、それはその後の各ジョブに影響します。
  • アーキテクチャ:設計時にキューを考慮する必要があります。
  • メッセージキューのユースケース:

    時間のかかるプロセスは、キューに入れることができます:

    • サードパーティAPIからデータを送信/受信
    • メールを送信します
    • レポートを生成します
    • 労働集約的なプロセスを操作

    クリエイティブな方法でキューを使用することもできます。ジョブをロックして、1人のユーザーのみが一度に情報にアクセスできるようにします。

    service

    多くのサービスを使用してメッセージキューを実装できます。この記事では、BeanStalkd、IronMQ、およびAmazon SQSの違いの概要を説明しています。

    beanstalkd beanstalkdは「…シンプルで高速なジョブキュー」です。 MITライセンスの下でオープンソースソフトウェアとしてリリースされました。優れたドキュメントがあり、ユニットテストが行​​われ、ダウンロードして自分のサーバーで無料で実行できます。このアーキテクチャは、メッセージキュー用に特別に設計されたMemcachedから借用しています。

    著者のデイブ・ケネディによって書かれたビーンズシュタルクのビート・ザ・ジャイアンツ・ザ・ジャイアンツのタイトルの投稿には、ビーンズシュタルクとルビーを始める方法に関する情報が含まれています。

    Ironmq IRONMQは、管理されたRESTFUL WEBサービスです。開発者は無料のティアを利用できます。他の多くのサブスクリプションティアは、商用アプリケーションで使用できます。

    sqs

    Amazon SQSは、メッセージキューを実装するための安価なホスティングソリューションです。 Amazon Web Services(AWS)の一部です。 Amazonは、SQSを含むネットワークサービスを評価するための無料の層を提供します。

    サーバーの設定

    beanstalkd Beanstalkd IronMQ Amazon SQS 自托管 远程托管 远程托管

    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
    开源 官方 官方
    2つのサービスを柔軟に切り替える必要がある場合は、BeanStalkDクライアントライブラリをIRONMQで使用することもできます。また、サービスに接続するには、手動で

    oauthコマンドを実装する必要があります。

    sqs

    AWSクライアントライブラリには、SQSクライアントライブラリが含まれています。これらはAmazonによって提供され、多くのプログラミング言語で利用できます。

    管理インターフェイス

    beanstalkd グラフィカル管理インターフェイスは、デフォルトでは分散されていません。 BeanStalkDツールページには、デバッグと管理に役立つオープンソースプロジェクトがいくつかあります。

    Ironmq IronMQパネルがキューを管理します。キューをセットアップする方法を説明し、Curlを介してキューにジョブ(IronMQ:メッセージ)を追加する方法を示す便利なチュートリアルが含まれています。 このインターフェイスを使用すると、Ajax駆動型Webサイトでキューを管理できます。ジョブを作成、読み取り、削除し、履歴情報を表示し、ダッシュボードビューからキュー構成を管理できます。

    sqs

    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
    保证 保证 不保证
    Ironmq IRONMQは、1回限りの買収を保証します。

    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はサポートされていません。

    ユーザー - 作業プログラムを参照してください。

    遅延 - 労働者に送られず、一定期間仕事を遅らせます。

    delete(job) - 出発を参照してください。

    dequeue - 完了したジョブをマークし、キューから削除します。

    キューを入力 - キューにジョブを追加し、労働者が使用するために準備します。

    fifo - キューでジョブがどのように処理されるか、つまり最初の最初のアウトを説明します。これは、メッセージキューの最も一般的なタイプです。

    filo-キューでジョブがどのように処理されるか、つまり、最初に出てから出て行っていることを説明します。

    ジョブ - 処理するタスクを識別するために使用されるメタデータを含むキューの遅延タスク。データベース行に似ています。

    kick(job) - 以前に埋葬された仕事をキューに戻して、労働者が取得できるようにします。 IronMQとSQSはサポートされていません。

    プロバイダー - メッセージサーバーに接続してジョブを作成するクライアント。

    QUOTE-同様のジョブをキューにグループ化する方法。データベーステーブルに似ています。

    リザーブ(ジョブ) - ジョブを労働者に渡し、それをロックして、他の労働者に渡されないようにします。

    ワーカー - メッセージサーバーに接続して、ジョブを削除、埋めるクライアント。実行プロセスのこれらの労働集約的な部分。

    結論

    メッセージキューサービスの普遍的なソリューションはありません。 BeanStalkd、IronMQ、Amazon SQSにはすべて、独自の利点と短所があり、使用できます。この記事では、スキルレベルとプロジェクトのニーズに最適なサービスに関する情報に基づいた決定を下すのに役立つ十分な情報を提供する必要があります。

    どのメッセージキューサービスを使用しますか?現在キューを使用している場合、切り替えを検討しますか?他の人を助けることができる非伝統的な方法でメッセージキューを使用しましたか?みんなに知らせるためにメッセージを残してください。

    メッセージキュー(FAQ) に関するよくある質問があります

    (メッセージキューに関するよくある質問は、長すぎて擬似オリジナルの目標と一致しないため省略されています。これらの質問と回答は、元のテキストから簡単にコピーできます。)

以上がBeanStalkd、IronMQ、Amazon SQSの比較の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート