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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java面试问题大全及答案大全word,逆袭面经分享

    java面试问题大全及答案大全word,逆袭面经分享一、对象的实例化1.创建对象的方式new:最常见的方式(本质是构造器)变形1:Xxx的静态方法变形2:XxBuilder/XxoxFactory的静态方法Class的newInstance():反射的方式,只能调用空参的构造器,权限必须是publicConstructor的newInstance(Xxx):反射的方式,位于java.lang.reflect.Constructor可以调用空参、带参的构造器,权限没有要求使用clone():不调用任何构造器,当前类需

    2022年7月7日
    27
  • mysql 查看函数fsync_sync/fsync/fdatasync的简单比较

    mysql 查看函数fsync_sync/fsync/fdatasync的简单比较此文主要转载自官网上有关于MySQL的flushmethod的设置参数说明,但可能很多人不太明白。下文就详细说明此问题。首先官网的说明如下:http://dev.mysql.com/doc/refman/5.6/en/innodb-parameters.html#sysvar_innodb_flush_methodinnodb_flush_methodCommand-LineFormat–i…

    2022年5月31日
    34
  • idea 2022.01.13激活码【中文破解版】2022.02.20

    (idea 2022.01.13激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.htmlHCIQ56F36O-eyJsaWN…

    2022年4月1日
    71
  • 分层抽样不按比例如何加权_按比例分层抽样和定额抽样的区别?

    分层抽样不按比例如何加权_按比例分层抽样和定额抽样的区别?从宏观上,两者的目的都是为了提供更好的样本代表性,并且两者的理论基础都来自于:总体的个体的同质性越高,抽样误差越小,样本的代表性越好。两者的本质区别在于是否以概率为基础,比例分层抽样是概率抽样而后者是非概率抽样。从最宏观的角度来说,比例分层抽样产生的样本是随机抽样样本,其本身可以进行抽样误差的评估和推断检验,进而把你样本的结论推广到总体。而定额抽样本身不具备这种可能。从具体操作上,两者都需要选取一…

    2022年5月14日
    69
  • C++命名空间_thinkphp命名空间

    C++命名空间_thinkphp命名空间这篇文章不错转载

    2022年8月9日
    5
  • Maven报错:The packaging for this project did not assign a file to the build artifact[通俗易懂]

    Maven报错:The packaging for this project did not assign a file to the build artifact[通俗易懂]一、问题发生    我想使用IDEA的Maven管理工具将项目安装到本地仓库,于是选择了Plugins下的install:install去执行,如下图所示:结果出现了如下报错信信息:[ERROR]Failedtoexecutegoalorg.apache.maven.plugins:maven-install-…

    2022年5月15日
    66

发表回复

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

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