RocketMQ(一)--环境搭建

MQ简介

MQ,Message Queue,是一种提供消息队列服务的中间件,也称为消息中间件,是一套提供了消息生产、存储、消费全过程API的软件系统。消息即数据。一般消息的体量不会很大。

MQ用途

限流削峰
比如你的系统只能处理2000/S的请求,平时可能够用了,但是系统的请求是有高峰和低谷的,再高峰期可能有5000/S,如果不做限流削峰 系统就会崩溃.这是可以把请求的任务放MQ,由MQ存储起来,由系统慢慢处理
异步解耦
异步能够明显提升系统吞吐量,比如发送短信,发送邮件的操作都比较耗时,用户等待时间会过长。这时就可以把任务放MQ,异步处理。
还有像Mysql,Redis双写,Mysql-ES双写的场景,如果都在业务代码中处理会造成系统耦合度过高,这时就可以用canal+MQ把这部分代码剥离出来单独处理,减少业务代码的侵入性。
数据收集
MQ与大数据是天生的搭档,像业务日志,监控数据,用户行为等都可以通过MQ来同步到大数据平台。

常见MQ

常用的MQ有RabbitMQ,kafka和RocketMQ.

RabbitMQ是老牌MQ了,使用的企业还是非常多的,就是吞吐量比kafka和RocketMQ低很多,功能也不如RocketMQ强大。

kafka在大数据领域无疑是王者,如果是跟大数据平台对接首选kafka。

RocketMQ在历经多次双11的洗礼,性能稳定性都很优秀,还支持定时消息,顺序消息,事务消息等,功能强大,非常适合业务系统使用。

RocketMQ基本概念

消息(Message)

 消息是指,消息系统所传输信息的物理载体,生产和消费数据的最小单位,每条消息必须属于一个主 题。

主题(Topic)

Topic表示一类消息的集合,每个主题包含若干条消息,每条消息只能属于一个主题,是RocketMQ进行 消息订阅的基本单位。
一个生产者可以同时发送多种Topic的消息;而一个消费者只对某种特定的Topic感兴趣,即只可以订阅 和消费一种Topic的消息。
标签(Tag)
为消息设置的标签,用于同一主题下区分不同类型的消息。来自同一业务单元的消息,可以根据不同业 务目的在同一主题下设置不同标签。标签能够有效地保持代码的清晰度和连贯性,并优化RocketMQ提供的查询系统。消费者可以根据Tag实现对不同子主题的不同消费逻辑,实现更好的扩展性。
队列(Queue)
存储消息的物理实体。一个Topic中可以包含多个Queue,每个Queue中存放的就是该Topic的消息。一 个Topic的Queue也被称为一个Topic中消息的分区(Partition)。
一个Topic的Queue中的消息只能被一个消费者组中的一个消费者消费。一个Queue中的消息不允许同一个消费者组中的多个消费者同时消费。
消息标识(MessageId/Key)
RocketMQ中每个消息拥有唯一的MessageId,且可以携带具有业务标识的Key,以方便对消息的查询。 不过需要注意的是,MessageId有两个:在生产者send()消息时会自动生成一个MessageId(msgId), 当消息到达Broker后,Broker也会自动生成一个MessageId(offsetMsgId)。msgId、offsetMsgId与key都称为消息标识。

安装

1.下载安装包,Apache Download Mirrors

2. 上传到linux服务器并解压unzip rocketmq-all-4.9.1-bin-release.zip

3.如果内存不够,可以修改bin/runserver.sh和bin/runbroker.sh来减少内存的使用

 4.启动NameServer

nohup sh bin/mqnamesrv >/usr/local/software/rocketmq/logs/mqnamesrv.log 2>&1 &

5.启动broker

nohup sh bin/mqbroker > /usr/local/software/rocketmq/logs/broker-a.log 2>&1 &

6.使用JPS命令查看是否启动成功

 7.使用docker启动图形管理界面

docker run -d -e "JAVA_OPTS=-Drocketmq.namesrv.addr=localhost:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" -p 8080:8080 -t apacherocketmq/rocketmq-console:2.0.0

看到以下界面说明安装成功了

RocketMQ(一)--环境搭建_第1张图片

你可能感兴趣的:(MQ,中间件)