这是我参与「第五届青训营 」伴学笔记活动十四天。 消息队列
概述
-
消息队列是什么
- MQ指保存消息的一个容器,本质是一个队列,支持高吞吐、高并发、高可用
- 解耦:解决系统崩溃的爆炸半径
- 削峰:缓解请求过多
- 异步:应对长尾延迟
- 日志处理:处理日志信息
-
发展
- 应用场景
- 发展历史
-
Kafka
- 分布式、多分区、多副本的日志提交服务,在高吞吐场景下发挥较出色。
- 场景
-
搜索服务
-
直播服务
-
订单服务
-
支付服务
- 业务日志-----↓
- 用户行为数据---->kafka
- Metrics数据-----↑
-
- 使用
- 创建集群
- 新增topic
- producer逻辑编写
- consumer逻辑编写
- 架构
- 基本概念
- producer:消息的生产端、负责将业务信息发送到topic中
- cluster:kafka的物理集群,每个集群可以新建不同的topic
- consumer:消息的消费端,负责消费已经发送到topic中的消息
- topic:kafka的逻辑队列,不同业务场景对应不同topic,所有业务信息数据都存储在topic中
- partition:通常topic会有多个分片,不同分片直接消息可以并发处理,提高单个topic的吞吐
- offset:消息在partition内的相对信息位置,在partation内严格递增。
- replica:每个分片有多个replica,副本,用来容灾,leaer用来提供服务,follower异步拉取leader数据进行同步。leader挂掉follower成为leader
- 基本概念
- 高级特性
- 数据迁移、offset、partition选主
- 一条消息的生产到消费是如何处理的,producer逻辑、broker逻辑、consumer逻辑
-
BMQ
- 存算分离,逐步替换掉对应的kafka集群
- 场景
- kafka使用中遇到问题
- 架构
- broker
- proxy
- HDFS
- MetaStorage
- 高级特性
- 多机房容灾
-
RocketMQ
- 低延迟、强一致、高性能、高可靠、万亿计容量和灵活性的可扩展性,在一些实时场景中运用广
- 场景
- 架构
- producer
- broker
- nameserver
- consumer
- 高级特性
-
实践