一、本堂课重点内容:
- 消息队列前世今生
- 消息队列-Kafka
- 消息队列-BMQ
- 消息队列-RocketMQ
二、详细知识点介绍:
消息队列前世今生
- Message Queue,保存消息的容器,本质上是个队列,需要支持高吞吐,高并发,高可用
消息队列-Kafka
基本概念
- topic,逻辑队列,每个逻辑队列中有多个partition,存放真正的消息
- offset,消息在partition内的相对位置,作为唯一ID
- replica,每个partition有多个副本,保证容灾
- ISR,In Sync Replicas,如果副本和leader差距过大,将不会同步;在ISR中,leader发生宕机,在ISR中选出新leader
- broker,集群的一个节点
生产端
接收端
缺点
- 每一个broker都有topic的分区,需要保持同步
- 负载不均衡,某个partition过多,迁移消耗大量IO资源
- 没有自己的缓存,完全依赖PageCache
消息队列-BMQ
- 兼容Kafka,存算分离,云原生消息队列
- proxy/broker,无状态,秒级重启节点
- HDFS,分布式文件式的写入,每次写入都随机选择部分节点(dataNode)进行写入
- 状态机,保证任意分片同一时刻只能在一个broker上存活
消息队列-RocketMQ
高级特性
- 事务场景,异步处理多个业务,通过事务保证业务之间的关联
- 延迟发送,提前发送给消息好,并设置可以被消费的时间,定时会被消费处理
- 消费重试和死信队列
三、课后个人总结:
本节课将重点讲解消息队列应用场景、发展历史、以及常见消息队列类型、帮助大家更好地理解消息队列。