RabbitMQ和Kafka对比以及场景使用说明

RabbitMQ和Kafka对比以及场景使用说明  我目前的项目最后使用的是RabbitMQ,这里依然是结合网上大神们的优秀博客,对kafka和rabbitmq进行简单的比对。最后附上参考博客。  1.架构模型  rabbitmq    RabbitMQ遵循AMQP协议,RabbitMQ的broker由Exchange,Binding,queue组成,其中exchange和binding组成了消息的路由键;客户端Producer通过…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

    我目前的项目最后使用的是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 以上。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/181942.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Java WebService接口生成和调用 图文详解

    Java WebService接口生成和调用 图文详解webservice简介:WebService技术,能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件,就可相互交换数据或集成。依据WebService规范实施的应用之间,无论它们所使用的语言、平台或内部协议是什么,都可以相互交换数据。WebService是自描述、自包含的可用网络模块,可以执行具体的业务功能。WebService也很容易部署,因为它们

  • 如何安装HAXM,如何解决HAXM installation failed问题

    如何安装HAXM,如何解决HAXM installation failed问题如何安装HAXM,如何解决HAXMinstallationfailed问题在安卓开发的过程中,大家都会需要用到安卓虚拟设备,在AndroidStudio中运行虚拟设备要求安装Intel硬件加速器(HAXM),虽然说是推荐使用但实际上不安装就无法运行虚拟设备。按照AndroidStudio提示的步骤安装HAXM,大多数人都会遇到HAXMinstallationfailed.ToinstallHAXMfollowtheinstructionsfoundat:https://so

  • 请写出用Graphics2D类的新方法画一个图形的步骤(表格如何画斜线)

    在机器人需要发表格图片需求,我搜索了一些第三方包,最终使用了java内置的Graphics2D来画表格生成jpg图片,再通过cq语句发送。表格图片,需要有标题,表格头,表格内容,将表格头和表格前三名设置背景色。使用Graphics2D画图,需要画横线,竖线,还有字体,其中选择位置进行渲染比较繁琐。所以我将画表格分为几部分来画1、先定图片大小图片的高…

  • c#做四则运算小程序

    c#做四则运算小程序

  • java接口和抽象类区别面试题_接口是一个特殊抽象类

    java接口和抽象类区别面试题_接口是一个特殊抽象类原文:http://blog.csdn.net/sunboard/article/details/38318231.概述一个软件设计的好坏,我想很大程度上取决于它的整体架构,而这个整体架构其实就是你对整个宏观商业业务的抽象框架,当代表业务逻辑的高层抽象层结构合理时,你底层的具体实现需要考虑的就仅仅是一些算法和一些具体的业务实现了。当你需要再开发另一个相近的项目时,你以前的抽象层说不定还可

  • mysql基本sql语句大全(基础用语篇)_mysql常用查询语句

    mysql基本sql语句大全(基础用语篇)_mysql常用查询语句MySQL常用语句大全一、连接MySQL格式:mysql-h主机地址-u用户名-p用户密码1、例1:连接到本机上的MYSQL。首先在打开DOS窗口,然后进入目录mysqlbin,再键入命令mysql-uroot-p,回车后提示你输密码,如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中了,MYSQL的提示符是:m…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号