RocketMQ 消息中间件 知识点汇总

目录

  • RocketMQ
    • 1、什么是RocketMQ?
      • 常用术语:
    • 2、为什么需要消息队列
    • 3、什么是异步处理
    • 4、什么是服务解耦
    • 5、什么是流量控制
    • 6、消息队列两种模型
      • 队列模型:
      • 发布/订阅模型:
      • 总结:
    • 7、怎么保证消息不丢失
    • 8、如何处理消息被重复消费
      • **出现消息重复的情况:**
      • **解决方法:**
    • 9、如何保证消息的有序性
      • 全局有序
      • 部分有序
    • 10、如何处理消息堆积
      • **1、业务逻辑处理:**
      • **2、生产者producer限流**:限制发送消息的速度
      • **3、水平扩容:**
        • **问题:MQ积压了几百万数据**

RocketMQ

1、什么是RocketMQ?

RocketMQ 是一个消息中间件,使用的数据存储结构是队列,队列的特点是先进先出。消息队列就是一个使用队列来通信的组件。

常用术语:

RocketMQ(nameserver(broker(topic(MessageQueue(msg

Message: msg 消息

Message Queue: 消息存储的队列,可以有很多个消息队列,这些消息队列是存在broker里面的。

topic: 由一个或多个消息队列Message Queue 队列组成,为了做业务上的分类。

tag: 标签,对msg打个标签

broker: 这些消息队列肯定会保存在某一台生产服务器上,而这台生产服务器我们就称为 broker

nameserver: 服务注册中心(就是各个服务的节点信息注册到这个注册中心里面)

RocketMQ 消息中间件 知识点汇总_第1张图片

发送消息的是生产者producer,
接收消费消息的为消费者consumer,
消息队列服务端为broker。

消息从producer发往broker,broker将消息存储到本地,然后consumer从broker拉取消息,或者broker推送消息至consumer,最后消费。

RocketMQ 消息中间件 知识点汇总_第2张图片

为了提高并发度,



2、为什么需要消息队列

因为随着业务不断扩张,从之前的单体架构到现在的微服务架构,成百上千的服务之间的相互调用和依赖,我们需要一个东西来解耦各个服务之间的关系,控制资源合理的使用以及缓冲流量洪峰等等。

这个时候消息队列就应运而生。它常用来实现:异步处理、服务解耦、流量控制。



3、什么是异步处理

随着业务的发展,项目的请求链路会越来越长。比如之前的简单的查库存、下单,到后面的加上积分服务、短信服务等,这一路同步调用下来,客户可能就等着急了,这个时候就可以使用消息队列来进行异步处理。

调用链路长,响应就会变慢,对于一些不需要那么及时的功能,比如短信或者加积分之类的,只需要在下单结束后,扔个消息到消息队列中就可以直接返回响应了。积分服务和短信服务可以并行的消费这条消息。

优点:消息队列的异步处理可以减少请求的等待时间,还能让服务异步

你可能感兴趣的:(RocketMQ,java-rocketmq,rocketmq,java)