消息队列 | 青训营笔记

78 阅读1分钟

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

为什么有消息队列

为了应对业务过程中,对于数据的请求等操作的特殊情况,避免服务器崩溃。

EG:面对同一时间内的大量订单请求(双十一)

EG:面对SQL请求失效、数据库记录被删除等恶性现象导致的服务器崩溃

EG:面对用户的操作数目过多,内有中断等操作导致一套完整的业务无法跑通、耗时问题。

解决方案

  1. 解耦

image.png

  1. 削峰

image.png

  1. 异步

异步处理订单请求,可以缓解业务压力

image.png

  1. 日志处理

Log -> 消息队列 -> LogStash -> ES ->Kibana

什么是消息队列

image.png

消息队列是保存消息的一个容器,本质是一个队列。支持高吞吐、高并发、高可用

消息队列-Kafka

image.png

Kafka使用步骤:

  • 创建集群
  • 新增Topic
  • 编写生产者逻辑
  • 编写消费者逻辑

Topic:逻辑队列

Cluster:物理集群,每个集群中可以建立多个Topic

Producer:生产者,负责将业务消息发送到Topic中

Consumer:负责消费Topic中的东西

Consumer Group:消费者组,不同的消费者不干扰

image.png

Offser:消息在partion中的相对位置信息,可以理解为唯一ID,在Partion内严格递增

image.png

每个Partion中会有多个Replica,也有Leader Replica

image.png

消息队列-BMQ

兼容kafka协议,存算分离。

image.png