1. ホーム

[解決済み】なぜPostgreSQLのようなデータベース上でRabbitMQのようなメッセージブローカーが必要なのでしょうか?

2022-04-02 08:02:12

質問

私は、以下のようなメッセージブローカーを初めて利用します。 ラビットMQ のようなスケジューリングシステムのタスク/メッセージキューを作成するために使用することができます。 セロリ .

さて、ここで問題です。

  • でテーブルを作成することができます。 PostgreSQL 新しいタスクが追加され、Celeryのような消費プログラムによって消費されることができます。

  • 一体なぜ、RabbitMQのような全く新しい技術をセットアップする必要があるのでしょうか?

PostgreSQLのようなデータベースは分散環境でも動作するので、スケーリングが答えになるとは思えません。

ある問題に対して、データベースがどのような問題を引き起こすのか、ググってみたら、ありました。

  • ポーリングによってデータベースが忙しくなり、低パフォーマンスになる
  • テーブルのロック ->これも低パフォーマンス
  • 数百万行のタスク -> ここでもポーリングは低性能です。

さて、RabbitMQやその他のメッセージブローカーは、これらの問題をどのように解決しているのでしょうか?

また AMQP プロトコルに従うものです。それのどこがすごいんですか?

可能 レディス は、メッセージブローカーとしても使えるのでしょうか?RabbitMQよりもMemcachedに類似していると思います。

是非ともご教示ください。

解決方法は?

Rabbitのキューはメモリ上に存在するため、データベースで実装するよりもはるかに高速になります。良い)専用メッセージキューは、スロットリング/フロー制御や、異なるルーティングアルゴリズムを選択する機能など、キューイングに関する重要な機能も提供する必要があります(rabbitはこれらを含む)。プロジェクトの規模にもよりますが、メッセージパッシングコンポーネントをデータベースから分離し、一方のコンポーネントが高負荷になっても、もう一方のコンポーネントの動作を妨げることがないようにすることもできます。

ご指摘の問題点についてですが

  • データベースをビジー状態にして低パフォーマンスを維持するポーリング : Rabbitmqを使用することで、プロデューサーは以下のことが可能になります。 プッシュ ポーリングよりもはるかに高いパフォーマンスでコンシューマに更新します。データは必要な時にコンシューマに送られるだけなので、無駄なチェックが不要になります。

  • テーブルのロック ->また低性能です。 ロックするテーブルがない :P

  • 数百万行のタスク -> 再びポーリングは低パフォーマンスです。 前述の通り、RabbitmqはRAMを常駐させ、フロー制御を行うため、より高速に動作します。また、必要に応じて、RAMがなくなった場合、ディスクを使用してメッセージを一時的に保存することもできます。2.0以降、RabbitはRAM使用率を大幅に向上させました。また、クラスタリングオプションも利用可能です。

AMQPに関しては、quot;exchange"と他のexchangeにルーティングする機能がとてもクールな機能だと思います。これにより、より柔軟性が増し、スケーリング時に非常に便利な様々な精巧なルーティングの類型を作成することができます。良い例としては、以下を参照してください。



<サブ (出典 スプリングソース・ドット・コム )

とします。 http://blog.springsource.org/2011/04/01/routing-topologies-for-performance-and-scalability-with-rabbitmq/

最後に、Redisについてですが、はい、メッセージブローカーとして使うことができますし、うまくやることも可能です。しかし、RabbitmqはRedisよりもメッセージキューの機能が充実しており、rabbitmqは全機能を備えたエンタープライズレベルの専用メッセージキューとして一から構築されています。一方、Redisは主にインメモリのKey-Valueストアとして作られました(現在ではそれ以上の機能を持っており、swiss army knifeとさえ呼ばれています)。しかし、私は多くの人が小規模なプロジェクトではRedisで良い結果を出していると聞いたことがありますが、大規模なアプリケーションではあまり聞いたことがありません。

ここでは、ロングポーリングチャットの実装でRedisを使用した例を紹介します。 http://eflorenzano.com/blog/2011/02/16/technology-behind-convore/