赞
踩
1.消息中间件的概念:消息中间件是一种分布式系统架构中常用的软件组件,用于在不同的应用程序之间传递消息。它提供了一种可靠、异步和解耦的通信机制,使得应用程序可以通过发送和接收消息来实现彼此之间的通信和数据交换。
2.消息中间件的作用:
(1)异步通信:消息中间件允许生产者发送消息后立即返回,而不需要等待消费者的处理。这种异步通信模式可以提高系统的吞吐量和响应性能,使得系统可以处理高并发和大规模的消息流。
(2)解耦和灵活性:消息中间件解耦了生产者和消费者之间的直接依赖关系。生产者只需要将消息发送到中间件,并不需要关心具体的消费者是谁以及如何处理消息。同样,消费者只需要从中间件接收消息,而不需要知道消息的来源。这种解耦性使得系统更加灵活,可以方便地增加、替换或调整各个组件。
(3)可靠性和持久化:消息中间件通常提供可靠的消息传递机制,确保消息的可靠性和持久化存储。即使在生产者发送消息后,如果消费者当前不可用,消息中间件也会将消息保存下来,并在消费者重新上线时将其传递给消费者。这种机制确保了消息的不丢失和可靠传递。
3.消息中间件常用的术语:
(1)Broker:消息服务器,提供核心服务
(2)Producer:消息生产者。它负责创建并发送消息到消息中间件,将消息发布到特定的主题(Topic)或队列(Queue)。
(3)Consumer:消息消费者。消费者是接收消息的应用程序或组件。它订阅特定的主题或队列,并从消息中间件接收并处理消息。
(4)Topic:主题是一类相关消息的逻辑名称或标识符。生产者将消息发布到特定的主题,而消费者可以订阅感兴趣的主题来接收相关的消息。
(5)Queue:队列是一种消息的有序集合,用于实现点对点通信模式。生产者将消息发送到队列,而消费者从队列中接收和处理消息。主要用于p2p模式下
4.消息中间件的工作模式:
(1)P2P模式
1.独立通信:生产者和消费者之间直接进行点对点的通信,没有中间的代理或中介。消息在发送时被直接传递到目标队列,然后由目标消费者接收。
2.一对一通信:每条消息都被发送到特定的队列,并且只有一个消费者可以接收和处理该消息。这确保了消息的一对一传递。
3.此模式的弊处在于:生产者发消息消费者只能被动接受,无法拒绝
(2)Pub/Sub模式
1.发布-订阅(Pub/Sub)模式是一种消息传递模式,其中生产者(发布者)将消息发布到特定的主题(Topic),而消费者(订阅者)可以订阅感兴趣的主题来接收相关的消息。这种模式支持一对多的消息传递。
2.在Pub/Sub模式中,有以下几个关键角色:
生产者(Publisher):生产者是消息的发送方,负责创建并发布消息。它将消息发送到特定的主题,而不需要关心具体的消费者是谁以及如何处理消息。
主题(Topic):主题是一类相关消息的逻辑容器或标识符。生产者将消息发布到特定的主题中,而消费者可以订阅感兴趣的主题来接收相关的消息。
消费者(Subscriber):消费者是消息的接收方,负责订阅和接收消息。它可以订阅一个或多个主题,以接收与这些主题相关的消息。
订阅(Subscription):订阅是消费者对主题的注册操作,表示消费者希望接收该主题中的消息。消费者可以选择订阅一个或多个主题,并接收这些主题的相关消息。
3.Pub/Sub模式的特点包括:
异步通信:生产者在发布消息后可以立即返回,而不需要等待消费者的处理。这种异步通信模式可以提高系统的吞吐量和响应性能,使得系统可以处理高并发和大规模的消息流。
一对多通信:生产者发布的消息可以被多个消费者订阅和接收,实现了一对多的消息传递。这使得消息可以同时传递给多个消费者,满足不同消费者的需求。
解耦和灵活性:Pub/Sub模式通过引入中间件(如消息中间件)作为中介,实现了生产者和消费者之间的解耦。生产者和消费者之间不需要直接通信,而是通过主题进行消息传递,从而提供了更大的灵活性和可扩展性。
持久化和订阅管理:Pub/Sub模式通常支持消息的持久化存储,即使消费者当前不可用,消息也会被保存下来,以便消费者重新上线时可以接收未处理的消息。同时,系统通常提供订阅管理功能,允许消费者动态订阅和取消订阅主题。
以上的模式你可以理解为 微博订阅模式 用户可以根据自己的喜好去相应的主题进行订阅
5.常见的中间件了解
ActiveMQ :ActiveMQ是一个开源的、基于Java的消息中间件实现,它实现了Java Message Service (JMS) API,并提供了可靠的消息传递机制和高性能的消息处理能力。
RabbitMQ:RabbitMQ是一个开源的消息中间件实现,它实现了高级消息队列协议(AMQP)并提供了可靠的消息传递机制和灵活的消息路由功能。
RocketMQ :RocketMQ是一个开源的、分布式的消息中间件系统,由阿里巴巴集团开发并开源。它是一个高性能、高可靠性、可伸缩的分布式消息队列系统,用于支持大规模实时消息传递功能
Kafka :Kafka是一个开源的、分布式的流处理平台和消息队列系统,由Apache软件基金会开发。它设计用于高吞吐量、低延迟的实时数据处理,具有高可靠性、可伸缩性和容错性。
Redis:Redis(Remote Dictionary Server)是一个开源的、基于内存的数据结构存储系统,它提供了丰富的数据结构和功能,并支持多种数据操作。
1.安装kafka
把安装包通过xftp放在vm中的/opt/install下进行解压
2.解压并配置
(1)解压并改名字
[root@kb144 install]# tar -zxf ./kafka_2.12-2.8.0.tgz -C ../soft/
[root@kb144 install]# mv kafka_2.12-2.8.0.tgz kafka212
(2)更改kafka的配置文件
[root@kb144 install]# cd /opt/soft/kafka212/config/server.properties
21 broker.id=0
36 advertised.listeners=PLAINTEXT://192.168.78.143:9092
60 log.dirs=/opt/soft/kafka212/data 消息存放目录
103 log.retention.hours=1680 消息存放时间小时
123 zookeeper.connect=192.168.78.143:2181 连接zookeeper
137 delete.topic.enable=true 设置可以对topic删除,默认不能删除
(3)配置环境变量
[root@kb144 conf]# vim /etc/profile
#Kafka_home
export KAFKA_HOME=/opt/soft/kafka212
export PATH=$PATH:$KAFKA_HOME/bin
(1)先启动zookeeper
zkserver.sh start
(2)开启kafka
[root@kb144 config]#nohup kafka-server-start.sh /opt/soft/kafka212/config/server.properties &
(1).查看队列
[root@kb144 config]# kafka-topics.sh --zookeeper 192.168.153.144:2181 --list
(2)创建队列(顺序可以变换)
partitions (每个主题下分区数量)
replication-factor (每个分区下的副本的数量)
[root@kb144 config]# kafka-topics.sh --create --zookeeper 192.168.153.144:2181 --topic kb22 --partitions 1 --replication-factor 1
Created topic kb22.
(3)删除对列
[root@kb144 config]# kafka-topics.sh --delete --zookeeper 192.168.153.144:2181 --topic kb22
(4).查询主题topic详情
[root@kb144 config]# kafka-topics.sh --zookeeper 192.168.153.144:2181 --describe --topic mydemo
(5).创建生产者,生产信息
[root@kb144 config]# kafka-console-producer.sh --topic mydemo --broker-list 192.168.153.144:9092
(6).创建消费者,消费信息
[root@kb144 kafka-logs]# kafka-console-consumer.sh --bootstrap-server 192.168.153.144:9092 --topic mydemo
(7).创建消费者,重队列的开头消费信息
[root@kb144 kafka-logs]# kafka-console-consumer.sh --bootstrap-server 192.168.153.144:9092 --topic mydemo --from-beginning
(8).查看队列消息的数量
[root@kb144 config]# kafka-run-class.sh kafka.tools.GetOffsetShell
结果:mydemo:0:9(0号位置有9条消息)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。