kafka和rabbitmq比较之基础知识部分

author author     2023-05-03     167

关键词:

参考技术A 1.LinkedIn起初设计的基于Zookeeper协调的分布式消息系统。将消息持久化到磁盘中。

2.一个典型的 Kafka 体系架构包括若干 Producer、若干 Broker、若干 Consumer,以及一个ZooKeeper集群。

3.Producer:生产者,消息发送方。

4.Consumer:消费者,消息接收方,针对消息做业务处理。

5.Broker:服务代理节点,实际是Kafka服务器实例,接收Producer发送的消息,再把消息转发给Consumer。

6.Zookeeper,控制Producer向哪个Broker发送消息以及Consumer从哪个Broker接收消息。

7.发送的消息又有几个重要概念,Topic主题,Partition分区。

8.Topic主题,一个逻辑概念,每条消息必须有且只有一个主题。

9.Partition分区:在同一个主题下,可以设置一个或者多个分区,来增加消息处理的并发度。另外注意一个消息在同一个分区内是有序的,但是如果并发下发送消息,多个分区的消息顺序无法保证。

10.分区副本:分区如果设置了多副本,提升了容灾能力,则同时会有Leader副本处理消息读写请求,follower副本负责同步leader副本的消息,如果leader副本出现问题,则会选择一个follower副本成为新的leader副本。一般情况下,副本不在同一个Broker中处理,但是如果有三个Broker,但是设置了4个副本,那么肯定是有2个副本在同一个Broker中的,实际这种设计意义不大。

1.基于AMQP(Advanced Messaging Queuing Protocol)高级消息队列协议

2.一个典型的 RabbitMQ体系架构(这些实际也是AMQP的设计)包括Publisher、Message、Exchange、Binding、Consumer、Queue、Broker。

3.Producer:生产者,消息发送方。

4.Message:具体的发送的消息内容,包括消息头和消息体。

5.Exchange:交换器,用来接收生产者发送的消息,并把消息路由给服务器中的队列。

6.Binding:绑定交换器和队列。就是决定交换器过来的消息发送到哪个队列。

6.Queue:消息队列,用来保存消息直到发送给消费者,消息的容器,一个消息进入队列后,一直等待直到消息被取走。

7.Consumer:消费者,从消息队列中取出消息。

8.Broker:服务代理节点,实际是RabbitMQ服务器实例。

9.Exchange又分为四类:direct,交换器通过消息的routing key判断,如果与Binding的binding key一致,交换器就将消息发送到对应的队列;fanout,消息发送到所有交换器绑定的队列上去,类似于广播;topic,这种是通过某些规则匹配到不同的队列中,比如routing key是cn.test和cn.uat,bingding key规则为cn.#的队列就可以收到两个消息,bingding key为#.test的队列就只能收到routing key为cn.test的消息;header用的很少,有两种,完全匹配和匹配任意,也就是header中key value都匹配的队列才可以收到或者任意key value匹配就可以收到消息。

10.为了保证消息的可靠性,可以设置queue,exchange, message持久化到磁盘,但是有时候需要先存储到cache,一段时间后才写入到磁盘中。

1.使用方面,在java项目中Kafka需要单独引用kafka的maven包,而RabbitMQ由于基于AMQP协议,Springboot直接引入spring-boot-starter-amqp这个包即可,不用单独引用RabbitMQ的包,任何符合AMQP协议的消息中间件都可以通过spring-boot-starter-amqp使用。

2.消息类型方面,RabbitMQ的支持四种复杂的类型,direct,fanout,topic和header模式。Kafka只能通过Topic和partition来控制消息的发送类型。

3.服务器方面,RabbitMQ单独安装或者集群安装即可,不需要再安装其他组件,Kafka则需要Zookeeper配合使用,Producer和Consumer才能找到对应的Broker。

rabbitmq基础教程之基本概念(代码片段)

RabbitMq基础教程之基本概念RabbitMQ是一个消息队列,和Kafka以及阿里的ActiveMQ从属性来讲,干的都是一回事。消息队列的主要目的实现消息的生产者和消费者之间的解耦,支持多应用之间的异步协调工作由于工作原因,接触和使用r... 查看详情

kafka如何保证消息顺序消费

...<<<消息队列常用名词与中间件对比<<<Rabbitmq基础知识<<<Rabbitmq示例之点对点简单队列<<<Rabbitmq示例之工作(公平)队列<<<Rabbitmq示例之发布订阅模式<<<Rabbitmq示例之路由模式Routing<<<Rabbitmq... 查看详情

rabbitmqactivemqzeromqkafka之间的比较

MQ框架非常之多,比较流行的有RabbitMq、ActiveMq、ZeroMq、kafka。这几种MQ到底应该选择哪个?要根据自己项目的业务场景和需求。下面我列出这些MQ之间的对比数据和资料。 第一部分:RabbitMQ,ActiveMq,ZeroMq比较1、 TPS比较一ZeroM... 查看详情

mq框架的比较

MQ框架的比较MQ框架非常之多,比较流行的有RabbitMq、ActiveMq、ZeroMq、kafka。这几种MQ到底应该选择哪个?要根据自己项目的业务场景和需求。下面我列出这些MQ之间的对比数据和资料。 第一部分:RabbitMQ,ActiveMq,ZeroMq比较1、 ... 查看详情

kafka与rabbitmq选型比较

kafka与rabbitMQ选型比较1.实际场景选择RabbitMQ:交易数据,金融场景。具有较高的严谨性,数据丢失的可能性更小,同时具备更高的实时性;kafka:高吞吐量,虽然可以通过策略实现数据不丢失,但从严谨性角度来讲,大不如rabbitmq... 查看详情

rabbitmq和kafka从几个角度简单的对比

...的传递有多种方案和产品,本文就比较有代表性的两个MQ(rabbitMQ,kafka)进行阐述和做简单的对比在应用场景方面,RabbitMQ,遵循AMQP协议,由内在高并发的erlanng语言开发,用在实时的对可靠性要求比较高的消息传递上。kafka是Linkedin于... 查看详情

rabbitmq与activemqzeromq以及kafka的比较

...息队列推拉模式的文章,可以参考:link 关于Active与RabbitMQ以及其他的比较,有如下记录: 这篇文章link提到:基本介绍RabbitMQ:基于AMQP协议(AdvancedMessageQueueProtocol)ActiveMQ:基于STOMP协议(注:我只知道是基于JMS) rab... 查看详情

kafka和rabbitmq啥区别,各自适合啥场景?

参考技术ARabbitMQ遵循AMQP协议,由内在高并发的erlanng语言开发,用在实时的对可靠性要求比较高的消息传递上,适合企业级的消息发送订阅,也是比较受到大家欢迎的。kafka是Linkedin于2010年12月份开源的消息发布订阅系统,它主要... 查看详情

消息中间件(mq)的技术选型(kafka、rabbitmq、rocketmq)

...:在RocketMQ没有出现之前,好多公司都从ActiveMQ切换到了RabbitMQ,它的优势在于可以保证数据不丢失,也能保证高可用性,即使集群部署部分机器宕机也能运行,然后支持部分高级功能,比如死信队列,消息重试之类的。缺点:Rab... 查看详情

rabbitmq和kafka从几个角度简单的对比

在应用场景方面,RabbitMQ,遵循AMQP协议,由内在高并发的erlanng语言开发,用在实时的对可靠性要求比较高的消息传递上。kafka是Linkedin于2010年12月份开源的消息发布订阅系统,它主要用于处理活跃的流式数据,大数据量的... 查看详情

rabbitmq和kafka的区别

RabbitMQ,遵循AMQP协议,由内在高并发的erlang语言开发,用在实时的对可靠性要求比较高的消息传递上。kafka是Linkedin于2010年12月份开源的消息发布订阅系统,它主要用于处理活跃的流式数据,大数据量的数据处理上。1)在架构模型方面... 查看详情

消息队列之zeromq、rabbitmq、kafka

...  本文说明主流的消息队列,针对使用过的zeroMQ和rabbitMQ、Kakfa:     zeroMQ:C语言开发,号称最快的消息队列,本着命名zero的含义,中油中间架构使用简单,表面上是基于socket的封装套接字API,在多个节... 查看详情

rabbitmq回顾下rabbitmq知识点,还记得哪些?

回顾下RabbitMQ知识点,还记得哪些?什么是RabbitMQ?为什么要选择RabbitMQ,不选其他MQ?使用MQ可以解决那些问题?RabbitMQ如何保证消息的有序性?如何防止MQ消息被重复消费?RabbitMQ如何确保消息的不丢失?RabbitMQ... 查看详情

rabbitmq回顾下rabbitmq知识点,还记得哪些?

回顾下RabbitMQ知识点,还记得哪些?什么是RabbitMQ?为什么要选择RabbitMQ,不选其他MQ?使用MQ可以解决那些问题?RabbitMQ如何保证消息的有序性?如何防止MQ消息被重复消费?RabbitMQ如何确保消息的不丢失?RabbitMQ... 查看详情

java开发-消息队列之rabbitmq初体验(代码片段)

目录前言RabbitMQ什么是RabbitMQRabbitMQ特点安装启动RabbitMQ和Kafka的消息收发区别RabbitMQ使用案例添加依赖添加配置创建RabbitMQ配置类RabbitMQ消息的发送RabbitMQ消息的接收测试结语前言前一篇,我们学习了Kafka的基本使用,这一篇... 查看详情

请问kafka和rabbitmq有什么区别啊?

为什么rabbitmq比kafka可靠kafaka和rabbitmq的最主要区别在于数据的可靠性和吞吐量上;在实际场景中,需要按需求取舍。rabbitmq在金融场景中经常使用,具有较高的严谨性,数据丢失的可能性更小,同时具备更高的实时性,基于存储... 查看详情

消息队列之rabbitmq

...了。市面上的消息队列产品有很多,比如老牌的ActiveMQ、RabbitMQ,目前我看最火的Kafka,还有ZeroMQ,去年底阿里巴巴捐赠给Apache的RocketMQ,连redis这样的NoSQL数据库也支持MQ功能。总之这块知名的产品就有十几种,就我自 查看详情

为啥说rabbitmq比kafka可靠

  Kafka和RabbitMq一样是通用意图消息代理,他们都是以分布式部署为目的。但是他们对消息语义模型的定义的假设是非常不同的。我对"AMQP更成熟"这个论点是持怀疑态度的。让我们用事实说话来看看用什么解决方案来解... 查看详情