zoukankan      html  css  js  c++  java
  • RabbitMQ和Kafka对比以及场景使用说明

    我目前的项目最后使用的是RabbitMQ,这里依然是结合网上大神们的优秀博客,对kafka和rabbitmq进行简单的比对。最后附上参考博客。

        1.架构模型

        rabbitmq

        RabbitMQ遵循AMQP协议,RabbitMQ的broker由Exchange,Binding,queue组成,其中exchange和binding组成了消息的路由键;客户端Producer通过连接channel和server进行通信,Consumer从queue获取消息进行消费(长连接,queue有消息会推送到consumer端,consumer循环从输入流读取数据)。rabbitMQ以broker为中心;

        Kafka

        kafka遵从一般的MQ结构,producer,broker,consumer,以consumer为中心,消息的消费信息保存的客户端consumer上,consumer根据消费的点,从broker上批量pull数据

         2.消息确认机制

        rabbitmq

        具有生产者confirm机制以及消费者的消息应答机制ack。

        Kafka

        不具有应答机制。

        3.消息的顺序

        rabbitmq

        在一个队列里面,rabbitmq的消息是严格顺序的,按照先进先出。

        kafka

        在同一个partition中消息是有序的,但是生产者put到Kafka中数据会分布在不同的partition中,所有总体是无序的。

        4.吞吐量

        rabbitmq

        根据测试,RabbitMQ在不使用ACK机制的,Msg大小为1K的情况下,QPS可达6W+。再双方ACK机制,Msg大小为1K的情况下,QPS瞬间降到了1W+。

        Kafka

        Kafka具有巨大的吞吐量,数据的存储以及获取是本地磁盘的批量处理,可以达到百万/s。

        5.可靠性

        rabbitmq

        RabbitMQ使用了MirrorQueue的机制,也可以做到多个机器进行热备。

         Kafka

        Kafka的broker支持主备模式。

        7.持久化

        rabbitmq

        支持

        kafka

        Kafka 是一个持久性消息存储。

         

        对于他们的使用场景如下

        rabbitmq       

    1.RabbitMQ的消息应当尽可能的小,并且只用来处理实时且要高可靠性的消息。

    2.消费者和生产者的能力尽量对等,否则消息堆积会严重影响RabbitMQ的性能。

    3.集群部署,使用热备,保证消息的可靠性。

    kafka

    1.应当有一个非常好的运维监控系统,不单单要监控Kafka本身,还要监控Zookeeper。(kafka强烈的依赖于zookeeper,如果zookeeper挂掉了,那么Kafka也不行了)

    2.对消息顺序不依赖,且不是那么实时的系统。

    3.对消息丢失并不那么敏感的系统。

    4.从 A 到 B 的流传输,无需复杂的路由,最大吞吐量可达每秒 100k 以上。

  • 相关阅读:
    PermissionError: [Errno 1] Operation not permitted: '/tmp/tmpg255ml7f' -> '/tmp/jieba.cache'
    远程连接MySql
    Unity 连接MySql数据库
    Unity WIndows语音识别(一)关键字识别
    Mac M1原生(ARM64)Golang dev&debug
    记一次思考:中级开发的突破之道
    深入web workers (上)
    indexDB出坑指南(二)
    html+css展示空白类字符的技巧
    前端冷知识
  • 原文地址:https://www.cnblogs.com/iiwen/p/10195293.html
Copyright © 2011-2022 走看看