【kafka】消息队列

什么是消息队列

消息队列 (Message Queue, MQ), 字面理解就是一个队列,拥有先进先出(First Input First OutPut, FIFO)的特性, 作用于不用进程或线程之间的通信

主要作用有哪些

1 应用解耦

多个应用通过消息队列可以对相同的消息进行处理, 逻辑上相互独立做到解耦 (注意: 业务上还是会相互影响, 解的只是工程上的耦)

2 异步处理

这里结合串行-并行-异步理解, 场景用户注册发短信和发邮件
串行 注册写数据库10s, 发送短信10s, 发送邮件10s, 依次执行完, 给用户返回结果, 总耗时30s
并行 注册写数据库10s, 然后并行发短信-发邮件10s, 给用户返回结果, 总耗时20s
异步 注册数据库10s, 写消息队列忽略不计, 给用户返回结果, 总耗时10s, 后续短信服务-邮件服务消费消息执行自己的逻辑

从上面看出异步明显减少RT, 提升吞吐, 但也明显增加了不一致

3 数据限流

瞬时流量过大会冲垮服务, 可以将请求写入消息队列, 后续服务再慢慢消费

这样有以下优点:

1 在请求和服务中间架设一层缓冲, 极大减轻服务压力

2 队列可以设置长度, 遵循FIFO, 超出长度触发拒接策略, 直接给用户拒绝响应

4 消息通讯

消息队列具有高效通信机制, 在点对点通信和聊天通信中应用也很广泛

相关推荐
风吹夏回18 小时前
RabbitMQ 核心术语 + Python pika 方法完整讲解
分布式·python·rabbitmq
风吹夏回18 小时前
RabbitMQ 三种模式入门:HelloWorld、WorkQueue、PubSub
分布式·rabbitmq·ruby
霸道流氓气质19 小时前
分布式追踪与 RequestId 传播完全指南
分布式
cheems952719 小时前
[RabbitMQ高级特性] 消息确认机制:从 Ready / Unacked 到 basicAck、basicReject、basicNack 的底层拆解
分布式·rabbitmq·ruby
whaledown19 小时前
Kafka 与 Java 消息队列入门:用订单场景理解核心机制
java·kafka·消息队列·springboot
枫华落尽20 小时前
【Hadoop01-完全分布式运行模式】
分布式
隔壁阿布都20 小时前
ShedLock 分布式定时任务锁框架介绍
spring boot·分布式
文艺倾年20 小时前
【强化学习】数学推导专题,20W字总结(十五)
人工智能·分布式·大模型·强化学习·vibecoding
ACP广源盛1392462567320 小时前
GSV9001S@ACP#1080P 级视频处理芯片,物理 AI 普及终端的高性价比选择
大数据·人工智能·分布式·嵌入式硬件·spark
guslegend20 小时前
第1章:初始Kafka
分布式·kafka