rabitmq,redisおよびkafukaはメッセージキューの違いとして

2871 ワード

kafuka
kafukaが関与する名詞の意味解釈:
Kafka              ,           、    、    、       。    RocketMQ         ,Kafka              ,            。

  Kafka          ,       :https://segmentfault.com/a/1190000003985468,      Kafka          :

Topic:    Message     ,  Topic       Broker 。

Partition: Kafka              ,  Topic       1 Partition。

Offset:   Partition    ,      Partition。

Consumer:   Broker   /  Message。

Producer:   Broker   /  Message。

Replication:Kafka   Partition    Message      ,  Partition       1 Replication(  1 Replication    Partition  )。

Leader:  Replication    Partition         Leader,         Leader  。  Replicas Leader           ,         MySQL  Binlog  。

Broker:Kafka   Broker   Producer Consumer   ,  Message        。  Cluster        Broker   Controller,    Partition Leader  ,  Partition     。

ISR(In-Sync Replica): Replicas     ,    Alive  Leader  “Catch-up” Replicas  。          Leader ,             Leader      Replica   Leader     (                ),            Replica  ISR。  Partition        ISR。

  • 負荷等化:kafkaはzookeeperを採用してクラスタ内のbroker、consumerを管理し、topicをzookeeperに登録することができる.zookeeperの協調メカニズムにより、producerはtopicに対応するbroker情報を保存し、ランダムまたはポーリングしてbrokerに送信することができる.さらにproducerは、意味に基づいてスライスを指定し、brokerのスライスにメッセージを送信することができる.
  • Scale out:オンラインレベルの拡張をサポートします.
  • kafkaのbrokerはプライマリ・スタンバイ・モードをサポートします.
  • 性能:kafkaは高いスループットを持ち、内部ではメッセージの一括処理、zero-copyメカニズムを採用し、データの記憶と取得はローカルディスクの順序で一括操作であり、O(1)の複雑さを持ち、メッセージ処理の効率が高い.非常に安価な商用機器でも、毎秒100 K以上のメッセージの伝送を単機でサポートできる.
  • は、Kafkaサーバ間のメッセージパーティション、および分散型消費をサポートし、各パーティション内のメッセージの順序転送を保証します.
  • は、オフラインデータ処理とリアルタイムデータ処理を同時にサポートする.

  • Kafkaの詳細については、以下を参照してください.https://segmentfault.com/a/1190000003985468
    RabbitMQ
     
  • RabbitMQは、Erlangを使用して作成されたオープンソースのメッセージキューであり、AMQP、XMPP、SMTP、STOMPなど多くのプロトコルをサポートしています.そのため、非常に重量級であり、企業レベルの開発に適しています.
  • RabbitMQはBrokerフレームワークを実現し、これは、メッセージがクライアントに送信される前にセンタキューにキューされることを意味する.ルーティング、負荷分散、またはデータ持続化に優れたサポートがあります.
  • RabbitMQはAMQPプロトコルに従い、RabbitMQのbrokerはExchange、Binding、queueからなり、ここでexchangeとbindingはメッセージのルーティングキーを構成する.クライアントProducerはchannelとserverを接続して通信し,Consumerはqueueからメッセージを取得して消費する(長接続,queueはconsumer側にプッシュされ,consumerは入力ストリームからデータをループする).
  • rabbitMQはbrokerを中心としている.メッセージの確認メカニズムがあり、信頼性が高い.
  • の可用性の面では、rabbitMQはmirorのqueueをサポートし、メインqueueは失効し、miror queueは引き継ぐ.
  • rabbitMQの負荷等化は、単独のloadbalancerによってサポートされる必要がある.

  • redis
    redisはKey-ValueペアベースのNoSQLデータベースで、開発・メンテナンスが活発です.KeyValueデータベースストレージシステムですが、MQ機能自体がサポートされているため、軽量レベルのキューサービスとして利用できます.
  • redisのlistデータ構造は軽量レベルのメッセージキューを実現でき、少量のメッセージを処理する際の読み書き性能が高く、書き込みメッセージ数が大きい場合(単機ローカルテスト10 k程度)の書き込み性能が大幅に低下し、読み取り性能に影響はなく、依然として優れている.
  • は、Webシーンでのキューサービスとして
  • を使用するのに比較的適している.
  • redisはメッセージキューとしてメッセージの分類を実現することができず、メッセージを受信した消費者が実行に成功したかどうかを知る確認メカニズムがあるかどうか
  • .