1.MQ简介
1.1MQ是什么
MQ即消息队列。队列是数据结构中的一种,具有先进先出的特性。
1.2为什么要使用MQ
解耦:A与B系统远程调用,A把东西给MQ,这时,哪怕A的服务挂了,B从MQ拿需要的东西就行了。
异步:假如下单系统下单后,需要调用支付系统,有了MQ之后,下单系统只需要在MQ中写入下单的信息既可以返回,支付系统去MQ监听是否有下单的信息即可。
流量削峰:双11的时候,需要下单请求,服务器可能吃不消,此时可以将请求先缓存在消息队列,然后系统每秒拿出2k的请求来处理。
数据分发:把A系统产生的数据放到MQ,需要该数据的系统,自己去MQ拿。
1.3MQ注意事项
优点:上述的使用原因
-
缺点:
- 系统可用性降低
虽然解耦了,但是又与MQ耦合了,MQ挂了怎么办? - 系统复杂度提高
- 从以前的同步远程调用到现在的异步调用
- 如何保证消息没有被重复消费、如何处理消息丢失情况?
- 如何保证消息传递的顺序性?
- 一致性问题
A通过MQ给B、C、D发消息,如果B、C成功,D失败,如何保证数据处理的一致性?
- 系统可用性降低
1.4各MQ产品比较
常见的MQ包括Kafka、ActiveMQ、RabbitMQ、RocketMQ

mq.png
2.安装与启动MQ
2.1 安装
2.2 启动
- 启动NameServer
1.启动NameServer
nohup sh bin/mqnamesrv &
2.查看启动日志
tail -f ~/logs/rocketmqlogs/namesrv.log
- 启动Broker
1.启动Broker
nohup sh bin/mqbroker -n localhost:9876 &
2.查看启动日志
tail -f ~/logs/rocketmqlogs/broker.log