美文网首页小卜java
Kafka和RabbitMQ比较之基础知识部分

Kafka和RabbitMQ比较之基础知识部分

作者: 汤太咸啊 | 来源:发表于2022-01-06 15:37 被阅读0次
我写的今天这部分内容都源自于《深入理解Kafka:核心设计与实践原理》和《RabbitMQ实战指南》两本书,都是一个大神写的,非常不错。今天先写基础部分,后边在单独针对使用方面以及效率并发方面做深入的研究,究竟两个中间件适合具体哪一种情况。下面进入Kafka和RabbitMQ的基础知识部分。

Kafka

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中的,实际这种设计意义不大。

RabbitMQ

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。

感谢各位的阅读,帮忙点赞,感谢各位。

相关文章

网友评论

    本文标题:Kafka和RabbitMQ比较之基础知识部分

    本文链接:https://www.haomeiwen.com/subject/qthrcrtx.html