rabbitmqkafka对比_全场景

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


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

相关推荐

  • pytest报错_pytest失败重跑

    pytest报错_pytest失败重跑前言我们每天写完自动化用例后都会提交到git仓库,随着用例的增多,为了保证仓库代码的干净,当有用例新增的时候,我们希望只运行新增的未提交git仓库的用例。pytest-picked插件可以

    2022年7月29日
  • 详解BP神经网络

    BackPropagationNeuronNetWok  BP神经网络学习算法可以说是目前最成功的神经网络学习算法。显示任务中使用神经网络时,大多数是使用BP算法进行训练.  在我看来BP神经网络就是一个”万能的模型+误差修正函数“,每次根据训练得到的结果与预想结果进行误差分析,进而修改权值和阈值,一步一步得到能输出和预想结果一致的模型。举一个例子:比如某厂商生产一种产品,投放到市场之…

    2022年4月6日
  • SpringFramework5.0 @Indexed注解 简单解析

    纸上得来终觉浅 绝知此事要躬行 —陆游最近在看SpringBoot核编程思想(核心篇),看到走向注解驱动编程这章,里面有讲解到:在SpringFramework5.0引入了一个注解@Indexed ,它可以为Spring的模式注解添加索引,以提升应用启动性能。官网地址:Spring Framework 5.1.12.RELEASE beans-scanning-index…

    2022年2月28日
  • 站内搜索 简单粗暴放代码

    站内搜索 简单粗暴放代码第一步:创建表单,放搜索框第二步:写JS第三步:在Web层创建Servlet,使用的gson转换的json格式,需要导包第四步:创建Service第五步:创建Dao,使用的C3P0和

    2022年8月3日
  • phpstorm 2021激活码(破解版激活)

    phpstorm 2021激活码(破解版激活),https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月16日
  • 上市ASCII 表省内发现!

    上市ASCII 表省内发现!

    2022年1月17日

发表回复

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

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