1.RocketMqmq的作用是什么image.png

2.使用了Rocketmq的缺点是什么

image.png

3.kafka、rabbitmq、rocketmq比较

kafka和rabbitmq更为成熟,社区广泛,rocketmq是国内开源的,目前呈现后来居上态势
image.png
kafka的QPS 在17万/秒,rocket的QPS在12万左右,rabbitmq的QPS在5万左右

4.rocketmq中各个角色的运行原理是什么image.png

先启动NameServer,再启动Broker.
image.png

5.rocketmq的应用场景

1.应用解耦

系统的耦合性越高,容错性就越低。以电商应用为例,用户创建订单后,如果耦合调用库存系统、
物流系统、支付系统,任何一个子系统出了故障或者因为升级等原因暂时不可用,都会造成下单操作异
常,影响用户使用体验.
什么叫做容错性?就是将系统的错误影响降低

2.流量削峰

应用系统如果遇到系统请求流量的瞬间猛增,有可能会将系统压垮。有了消息队列可以将大量请求
缓存起来,分散到很长一段时间处理,这样可以大大提到系统的稳定性和用户体验。
举例:业务系统正常时段的QPS如果是1000,流量最高峰是10000,为了应对流量高峰配置高性能
的服务器显然不划算,这时可以使用消息队列对峰值流量削峰

3.数据分发

通过消息队列可以让数据在多个系统之间进行流通。数据的产生方不需要关心谁来使用数据,只需
要将数据发送到消息队列,数据使用方直接在消息队列中直接获取数据即可
image.png
1. rocketmq中各角色:
1.1. nameserver:这里类似注册中心,各个nameserver数据不需要同步,是无状态的。
1.2. Broker:启动broker后就会与nameserver创建一个长连接将自己的信息通过心跳包的方式发送给集群中每一个nameserver服务(所以nameserver之间不需要数据的同步)。BrokerId为0的是master,非0则是slaver,主从关系的绑定是通过brokerName去实现的。
1.3. Producer:producer服务启动后与nameserver创建长连接,定期从nameserver中获取对应topic的信息,然后producer与broker中的master节点创建长连接,进行心跳检测。
1.4. Consumer:从nameserver中获取自己需要消费的broker获取信息进行消费。
image.png
1.实例化生产者;2.生产者绑定nameserver服务;3.启动生成者;4.消息实例化;5.发送消息;6.关闭生产者

6.顺序消息

7.延时消息

8.事务消息

9.死信队列