rabbitmqkafka对比_全场景

rabbitmqkafka对比_全场景这是陈东景于2021年8月29日下午16点原创作品,转载请标明出处!!!!在进行软件设计的过程中,如果软件设计业务上存在需要短时间内处理大批量的信息,又需要能保证软件能正常运行(保证软件的高可靠和高可用)。因为大批量(几十万,几百万级别的数据或者消息需要同一个时间处理),软件的IO过高,会导致软件运行阻塞或者消耗内存过高而崩溃,甚至是宕机。消息队列的概念被提了出来,通过缓存消息的模式,进行生产和消费。通过异步处理的方式,解耦这种短时间内出现大批量需要处理消息的场景。目前我们使用到的比…

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

Jetbrains全系列IDE稳定放心使用

这是陈东景于2021年8月29日下午16点原创作品,转载请标明出处!!!!

        在进行软件设计的过程中,如果软件设计业务上存在需要短时间内处理大批量的信息,又需要能保证软件能正常运行(保证软件的高可靠和高可用)。因为大批量(几十万,几百万级别的数据或者消息需要同一个时间处理),软件的IO过高,会导致软件运行阻塞或者消耗内存过高而崩溃,甚至是宕机。消息队列的概念被提了出来,通过缓存消息的模式,进行生产和消费。通过异步处理的方式,解耦这种短时间内出现大批量需要处理消息的场景。目前我们使用到的比较场景的消息队列有RabbitMq 、AtiveMQ、RocketMQ和Kafka。从单词字面上,我们可以看出前三者很明确的说他们是一种类型的MQ,而Kafka并没有说自己的是KafkaMQ。这里是非常有趣的事情。本贴今天就主要讲讲RabbitMq与Kafka的使用场景和区别。

那什么是RabbitMq和Kafka呢。

RabbitMq:RabbitMq是遵循AMQP协议,使用erlanng语言开发的一款用在实时的对可靠性要求比较高的消息传递上一种处理软件。从Rabbit上我们可以看出这是比如的手法,因为兔子一蹦一跳的,给人一种弹跳非常快的感觉。俗话说跑的比兔子还快。这个单词已经足够说明RabbitMq处理消息之快。

RabbitMq 的组成:交换器(exchange),队列(queue)、binding(绑定路由)、通道(Channels)、routing(路由)。

Kafka:kafka是Linkedin于2010年12月份开源的消息发布/订阅系统,主要用于处理活跃的流式数据,或者大数据量的数据处理上,横向扩展好,吞吐量大(几十万甚至百分级别)。常用日志采集,数据采集上。从kafka的特点上,kafka更像一套消息处理系统,或者是MQ的一种拓展。所以Kafka不叫KafkaMQ也是有道理的。而RabbitMq,更精确定义为消息中间件。这也是两者从定义上比较明显的区别。

Kafka的组成: Topic (主题)、Partition(分区) 、Offset(偏移) 、Replica(副本、)、 Message(消息)、  LogSegment(日志段 )Producer(消息生产者) Consumer(消息消费者 )

       单从他们的组成上我们就可以看出RabbitMq和Kafka的实现原理其实完全不同,差异巨大。但是之所以把他们放在一起讨论。他们的基本模式都是生产者/消费者的模式。其他的就是各自有各自的优点。所以RabbitMq和kafka的使用区别还是很大的。

下面讲讲他们的主要特性区别:

(1)RabbitMq的消息消费是无法保证有序的。而Kafka的实现原理可以保证消息消费有序。

(2)RabbitMq的消息被成功消费后,会被删除掉。而kafka是不管消费状态的。kakfa里的消息可以设置过期时间后删除。消息可以反复被消费。

(3)RabbitMq是不易做横向扩展的。而kafka可以做很好的横向扩展,性能处理上可达到百万级别。

(4)RabbitMq是 一个消费者同一时刻只能消费一个消息,消费失败就就丢回队列。而kafka,多个消费者可以消费同一个消息还可以重复消费,不做消费状态标志。

比较上了上面几点差异。我们可以看出kakfa更像一个数据库的功能。

这里就简单讲一下RabbitMq与Kafka的使用区别。这选择消息中间的业务场景上,希望对你们有参考作用。

 

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

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/182206.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 谷歌地球无法连接服务器解决方法_谷歌地图无法连接服务器是什么原因

    谷歌地球无法连接服务器解决方法_谷歌地图无法连接服务器是什么原因从2020年11月20号左右,谷歌地球中国服务器全部关停,所有原来可以使用的hosts,全部不能使用了,导致原来可以在电脑上打开谷歌地球的,现在全部提示无网络,如下图:这个是谷歌地球的最新版,一样打不开:解决办法,尝试了,国内所有的有关谷歌地图的软件。唯一现在可以使用的:BIGEMAP如下图分享地址给大家,大家可以安装来试一试,免费可用:http://download.bigemap.com/bmsetup.rar欢迎留言,提供更多谷歌地球的信息…

    2022年9月19日
    3
  • 织梦后台栏目显示文档数不为0,但点进去之后什么都没有

    织梦后台栏目显示文档数不为0,但点进去之后什么都没有

    2021年9月19日
    42
  • html显示当前脚本错误,访问网页总是提示当前网页脚本发生错误怎么办?「建议收藏」

    html显示当前脚本错误,访问网页总是提示当前网页脚本发生错误怎么办?「建议收藏」很多用户现在还在使用IE浏览器来浏览网页,不过最近有用户反映在访问网页的过程中弹出“脚本错误”的提示框,提示当前页面的脚本发生错误,这是怎么回事呢?出现这种情况的原因是用户使用的浏览器不能完全支持页面里的脚本,该如何解决此问题呢?方法一:清除IE缓存1、清除IE浏览器的缓存,点击工具》Internet选项,然后点击Internet删除文件(勾选删除所有脱机内容),之后重新打开IE浏览器,同时确认并…

    2022年8月30日
    2
  • ios消息推送

    ios消息推送

    2021年8月19日
    61
  • Nginx编译配置脚本篇(10)- Makefile相关脚本[通俗易懂]

    Nginx编译配置脚本篇(10)- Makefile相关脚本[通俗易懂]Nginx编译配置脚本篇(10)-Makefile相关脚本1、相关文章2、前言3、auto/make脚本文件详解3.1、输出调试信息表示创建objs/Makefile文件3.2、创建存放目标文件的目录3.3、设置ngx_objs_dir和ngx_use_pch3.4、输出编译参数相关信息到objs/Makefile文件中3.5、根据NGX_PERL_CFLAGS输出信息到objs/Makefile文件中3.6、输出ALL_INCS变量到objs/Makefile文件中3.7、输出CORE_DEPS和COR

    2022年6月4日
    45
  • mac 激活navicat15【最新永久激活】

    (mac 激活navicat15)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月30日
    327

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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