走进消息队列 | 青训营笔记

89 阅读1分钟

一、本堂课重点内容:

  • 消息队列前世今生
  • 消息队列-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

高级特性

  • 事务场景,异步处理多个业务,通过事务保证业务之间的关联
  • 延迟发送,提前发送给消息好,并设置可以被消费的时间,定时会被消费处理
  • 消费重试和死信队列

三、课后个人总结:

本节课将重点讲解消息队列应用场景、发展历史、以及常见消息队列类型、帮助大家更好地理解消息队列。