这是我参与「第五届青训营」伴学笔记创作活动的第 12 天
为什么有消息队列
为了应对业务过程中,对于数据的请求等操作的特殊情况,避免服务器崩溃。
EG:面对同一时间内的大量订单请求(双十一)
EG:面对SQL请求失效、数据库记录被删除等恶性现象导致的服务器崩溃
EG:面对用户的操作数目过多,内有中断等操作导致一套完整的业务无法跑通、耗时问题。
解决方案
- 解耦
- 削峰
- 异步
异步处理订单请求,可以缓解业务压力
- 日志处理
Log -> 消息队列 -> LogStash -> ES ->Kibana
什么是消息队列
消息队列是保存消息的一个容器,本质是一个队列。支持高吞吐、高并发、高可用
消息队列-Kafka
Kafka使用步骤:
- 创建集群
- 新增Topic
- 编写生产者逻辑
- 编写消费者逻辑
Topic:逻辑队列
Cluster:物理集群,每个集群中可以建立多个Topic
Producer:生产者,负责将业务消息发送到Topic中
Consumer:负责消费Topic中的东西
Consumer Group:消费者组,不同的消费者不干扰
Offser:消息在partion中的相对位置信息,可以理解为唯一ID,在Partion内严格递增
每个Partion中会有多个Replica,也有Leader Replica
消息队列-BMQ
兼容kafka协议,存算分离。