后端:消息队列 | 青训营学习笔记

69 阅读2分钟

这是我参与「第五届青训营」伴学笔记创作活动的第7天

课前导入

以日常整点秒杀活动为例,描述此行为过程中可能会发生的以下问题
💥1.系统崩溃 抢票,秒杀活动502
💥2. 服务器处理能力有限
💥3.链路时长太长,耗费时间太多
💥4.历史日志该如何处理
利用消息队列解决以上的问题:

一:对于系统崩溃,可以将所有行为记录发送到消息队列当中,再由存储服务进行拉取。

image.png

二:对于突然大量的请求,将其放入消息队列当中,只获取前几个请求进行响应
削峰方法:

image.png

三:对于单链路耗时太长的问题,可以采用异步操作,同时相应好几个请求服务,节约时间

image.png

四:将日志放入消息队列中,再用专门处理日志的组件如LogStash 放入SQL引擎中,利用Kibana进行简单的分析

image.png

# 消息队列(MQ) 定义:指保存队列消息的一个容器,本质是个队列,需要支持**高吞吐,高并发,高可用**的特性。 ## 历史发展以及主流消息队列对比

image.png

image.png

主流消息队列 K

Kafka

使用场景

image.png

使用步骤

image.png

基本概念以及相互间联系

🔶Topic:逻辑队列(通常当作不同的业务场景)对于业务来说,所有数据都会在此进行存储
🔶Cluster:物理集群,每个集群中可以新建多个不同的Topic
🔶Producer:生产者,将业务消息发送到Topic中
🔶Consumer:消费者,负责消费已经发送到Topic中的消息
🔶ConsumerGroup:消费组,彼此之间相互独立,可以从某一个时间点开始消费
🔶Partition:Topic一个分区,Topic都会有多个分片,不同分片并发处理,提升单个Topic的吞吐能力

image.png

🔶Offset 表示消息在Partition内部相对位置信息,唯一ID,在Partition内部严格递增

image.png

🔶Replica:每个分片有多个Replica,Leader Replica将会从ISR中选出。

image.png

参考链接

消息队列是什么_mq是什么_MQ消息队列服务-AWS云服务 (amazon.com)