当前位置: 首页 > news >正文

消息队列Message Queue

前面,我们在黑点点评中秒杀场景中,首次了解到消息队列MQ,它主要解决了秒杀场景中异步场景,提升了并发性,吞吐量。可是还是对消息队列又很多的疑惑?

消息队列是什么

消息队列是一种通信协议或中间件,允许生产者将消息放入中间队列中,然后由其他消费者从队列中异步获取并处理。

我们可以从定义中看出消息对立中角色分为两种,生产者和消费者,生产者就是消息的生产放,将消息构建好后,放入消息队列中,消费者就是收到消息后对消息进行相应的业务处理,并返回结果和确认信号。

例如,双11期间淘宝面临数百万的秒杀场景

当用户们完成了秒杀业务,系统都会产生相应的请求,请求其他模块处理业务,扣款模块进行扣款,订单服务产生相应的订单,积分模块返回相应的积分,而在传统的涉及场景中,所有的请求都会直接进入后端的数据库和库存系统,甚至大部分的业务还会串行处理,若每一个业务的响应时间都是200s,则这几个业务的响应时间加起来就有1s。所以这样的设计不符合高并发,高性能,高可用的场景要求

而当我们引入了消息队列,首先会将所有的用户请求放入消息队列中,然后并行的分发给相对应的模块处理,异步处理请求,这就降低了响应时间,符合高性能的特点,同时这个过程叫做异步,即各个模块在队列中拿到消息后异步处理,降低了时间延迟

第二个特点是削峰,消息队列在中间起到了缓冲的作用,防止大量的请求冲垮了后端,消息队列接收到大量的消息后,会根据后面的模块处理情况慢慢消费。

第三个特点是解耦,每个模块之间相互独立,即使有一个模块崩溃了,也不会影响其他的模块,可以通过后续的分布式服务解决。

消息队列有哪些

目前主流的mq模型由四种:

  • RabbitMQ:基于AMQP协议,支持复杂路由机制和高可靠性消息传递。

  • Apache Kafka:分布式流平台,适用于大数据量、低延时场景,具有高吞吐量。

  • ActiveMQ / Artemis:Java领域常用的消息中间件,支持多种协议。

  • RocketMQ:由阿里巴巴开发的分布式消息中间件,适合大规模消息处理场景。

RocketMQ 的架构设计注重高可用性、可伸缩性和低延迟,主要包括以下几个核心组件:

  • Producer
    负责构建并发送消息到 Broker。Producer 支持同步、异步以及单向发送,灵活应对不同业务场景下的性能和可靠性需求。

  • Broker
    Broker 是消息存储和传递的核心组件,主要负责接收 Producer 发送的消息、将消息持久化到存储介质,以及根据消费请求将消息分发给 Consumer。Broker 支持多种存储策略,如内存与磁盘混合存储,并通过双写等机制保证消息不丢失。

  • Consumer
    消费者订阅指定的 Topic 来接收消息。RocketMQ 支持集群消费、广播消费以及顺序消费等多种消费模式,满足业务对消息顺序性和分发策略的不同要求。

  • NameServer
    NameServer 作为轻量级的路由注册中心,负责维护 Broker 的地址信息及路由信息。Producer 和 Consumer 在发送和接收消息时,会先从 NameServer 获取最新的 Broker 信息,从而实现动态路由和负载均衡。

  • 消息模型
    RocketMQ 支持多种消息传递模型:

    • 点对点模型:一个消息只被一个消费者消费(集群消费)。

    • 发布订阅模型:消息可以被多个消费者订阅和消费(广播消费)。

    • 顺序消息:在某些场景下,消息顺序性非常重要,RocketMQ 提供了严格和局部顺序消费的能力。

相关文章:

  • Baklib内容中台的核心定位是什么?
  • 创新驱动 智领未来丨中威电子全景展示高速公路数字化创新成果
  • rent8_wechat-新增提醒收租功能
  • 青少年编程与数学 02-013 初中数学知识点 03课题、数与代数
  • 【LVS】负载均衡群集部署(DR模式)
  • VLAN 高级特性
  • STM32F103_LL库+寄存器学习笔记11 - 串口收发的中断优先级梳理
  • 菜鸡前端计算机强基计划之CS50 第七课 python 入门—— Python 中文件操作专题学习
  • ExpTimerApcRoutine函数分析之作用是ActiveTimerListHead里面移除定时器_etimer
  • dockerfile构建镜像方式
  • 前端解决方案:实现网页截图并导出PDF功能
  • 深入解析 JSON-RPC:从基础到高级应用(附调用示例)
  • 第十二章——位运算
  • 通用人工智能(AGI)的发展路径(人工智能通识)
  • 任意文件读取漏洞
  • knowledge-vscode中配置java环境(JDK-8下载,配置 Maven 并创建项目)
  • 图像(numpy)与Base64互转
  • vue create创建 Vue-router 工程
  • AI赋能SEO关键词智能优化
  • VMware虚拟机 ubuntu22.04无法与共享粘贴板和拖拽文件的解决方案
  • 互联网网站开发合同范本/深圳百度竞价托管公司
  • 轻量服务器wordpress/南宁seo优化公司
  • 做哪些网站比较好的/怎么做推广网络
  • ps做网站的效果图/竞价广告
  • 消费返利网站做的最长久的/aso应用商店优化原因
  • 棋牌游戏开发出售/单页网站怎么优化