1.2 初识MQ

简介: 异步调用基于消息通知,通过消息发送者、Broker和接收者实现解耦。常见MQ有ActiveMQ、RabbitMQ、RocketMQ、Kafka,适用于异步处理、系统解耦和流量削峰。Spring Boot集成RabbitMQ,支持AMQP协议,本课程重点讲解RabbitMQ应用。

异步调用方式其实就是基于消息通知的方式,一般包含三个角色:
● 消息发送者:投递消息的人,就是原来的调用方
● 消息Broker(消息代理/消息中间件):管理、暂存、转发消息,你可以把它理解成微信服务器
● 消息接收者:接收和处理消息的人,就是原来的服务提供方

在异步调用中,发送者不再直接同步调用接收者的业务接口,而是发送一条消息投递给消息Broker。然后接收者根据自己的需求从消息Broker那里订阅消息。每当发送方发送消息后,接收者都能获取消息并处理。
这样,发送消息的人和接收消息的人就完全解耦了。
消息Broker,目前常见的实现方案就是消息队列(MessageQueue),简称为MQ.
AI:消息队列的应用场景

  1. 异步处理:
    a. 场景: 当应用程序需要执行耗时的操作(如发送电子邮件、文件上传或下载等)时,可以将这些任务发送到消息队列中,由专门的任务处理程序异步执行。
    b. 好处: 减少了用户的等待时间,提高了用户体验。
  2. 解耦:
    a. 场景: 当一个系统由多个组件组成时,这些组件之间可以使用消息队列进行通信。
    b. 好处: 单个组件的变化不会直接影响到其他组件,提高了系统的可扩展性。
  3. 流量削峰
    a. 场景:在许多互联网应用和服务中,尤其是那些具有明显周期性流量特征的应用(如电商平台、社交网络等),常常会遇到流量突增的情况。例如,在电商促销期间,大量的用户会在短时间内访问网站并提交订单,这种短时间内产生的巨大流量可能会导致服务器过载,影响用户体验甚至导致服务不可用。
    b. 好处:当流量激增时接收到请求会被暂时存储在消息队列中,而不是直接发送到后端服务进行处理。这样做可以避免后端服务因为短时间内处理大量请求而过载。后端服务可以从消息队列中按需拉取消息进行处理。这种异步处理机制可以有效地分散流量峰值,确保后端服务的稳定运行。如下图:

目比较常见的MQ实现:
● ActiveMQ:https://activemq.apache.org/
● RabbitMQ:https://www.rabbitmq.com/
● RocketMQ:https://rocketmq.apache.org/
● Kafka:https://kafka.apache.org/
几种常见MQ的对比:
● 追求可靠性:RabbitMQ、RocketMQ
● 追求吞吐(高并发)能力:RocketMQ、Kafka
● 追求消息低延迟:RabbitMQ、Kafka
这四种的MQ在市场都是非常流行,本课程讲解RabbitMQ。
Spring Boot默认支持AMQP协议,RabbitMQ支持AMQP协议 。

相关文章
|
网络协议 Windows
两步带你解决IDEA 插件下载安装慢、超时、不成功问题
这篇文章提供了解决IDEA插件下载慢或超时问题的方案,通过查找国内插件节点IP地址并修改本地hosts文件来加速下载。
两步带你解决IDEA 插件下载安装慢、超时、不成功问题
|
2月前
|
消息中间件 数据库 UED
1.1 同步调用与异步调用
本文介绍了微服务间的同步与异步调用。同步调用需等待结果返回,顺序执行,适合实时性高、操作简单的场景;异步调用发出请求后可继续执行其他任务,提升效率与资源利用率,适用于耗时操作。通过支付、点餐、挂号等生活实例对比,阐述了二者特点、适用场景及优缺点。
|
2月前
|
消息中间件 Java 数据安全/隐私保护
RabbitMQ集群部署
本文介绍RabbitMQ集群部署及高可用方案,涵盖普通集群搭建、镜像模式配置与仲裁队列使用。通过Docker部署三节点集群,配置Erlang Cookie与rabbitmq.conf实现节点通信;利用镜像模式实现数据冗余,支持主从切换;引入3.8版本后的仲裁队列,简化高可用配置,提升系统容错能力。
|
2月前
|
机器学习/深度学习 自然语言处理 网络架构
Transformer基础结构
Transformer是Vaswani等人于2017年提出的基于注意力机制的神经网络架构,摒弃了传统RNN,实现并行化处理,显著提升自然语言处理性能。其核心为编码器-解码器结构,通过自注意力机制捕捉长距离依赖,结合位置编码、残差连接与层归一化,有效训练深层模型。多头注意力机制增强特征表达能力,广泛应用于机器翻译、文本生成等任务,成为现代大模型基石。
|
2月前
|
自然语言处理 算法
分词器详解
分词器将文本转为模型可处理的数字序列,主流算法包括BPE、WordPiece和SentencePiece。BPE高效但中文支持弱;WordPiece适合英文,用于BERT;SentencePiece语言无关,尤擅中文。实战中需结合语种与需求选择,并合理配置参数与特殊标记。
|
2月前
|
机器学习/深度学习
位置编码详解
位置编码为Transformer提供序列位置信息,弥补注意力机制无位置感知的缺陷。主要分绝对(如可学习、Sinusoidal)和相对(如RoPE、ALiBi)两类。RoPE通过旋转矩阵支持长序列,ALiBi以线性偏置增强外推能力。不同方法在长度外推、效率上各有优劣,广泛应用于LLaMA、BLOOM等大模型,是面试考察重点。
|
2月前
|
C++
归一化技术
归一化技术对大模型训练至关重要,如LayerNorm稳定训练、RMSNorm提升效率。Pre-norm结构更受现代模型青睐,助力收敛与性能优化。
|
2月前
|
机器学习/深度学习 网络架构
前馈神经网络
前馈神经网络(FFN)是Transformer核心模块,实现非线性变换。标准结构为Linear→Activation→Linear,常用ReLU、GELU、SwiGLU激活函数。MoE引入稀疏激活与专家路由,提升表达能力与效率。相比标准FFN,MoE参数多、计算更高效,广泛用于大模型。
|
2月前
|
自然语言处理
主流大模型结构
主流大模型架构分为四类:Encoder-Decoder(如T5)、Decoder-Only(如GPT、LLaMA)、Encoder-Only(如BERT)和Prefix-Decoder(如GLM),分别适用于生成、理解或兼顾任务。GPT系列从GPT-1到GPT-4,参数量跃升至约1.7万亿,支持多模态与长上下文;LLaMA系列持续优化开源模型;国产模型如Qwen、ChatGLM、Kimi、DeepSeek在中文场景表现突出,涵盖对话、数学推理等能力。
|
2月前
|
存储 缓存 Java
自定义注解
本文介绍基于Spring AOP实现自定义注解的完整流程,涵盖注解定义、@Target与@Retention等元注解说明,并结合Controller演示日志、权限控制等场景。通过AOP与过滤器实现登录验证,展示@Login注解在实际项目中的应用,适用于日志、鉴权、缓存等场景。