消息队列原理概述 | 青训营笔记

138 阅读2分钟

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

今天我学习了Go掘金课的“消息队列原理与实战”,也就是视频课“后端入门-中间件”的1、2、3、4节课,课程视频总时长大约90分钟,我通过学习本节课程,学懂了消息队列的一些常见思路和使用。

一、本堂课重点内容:

  • 本堂课的知识要点有哪些?

消息队列的——发展历程、常用框架

二、详细知识点介绍:

  • 本堂课介绍了哪些知识点?
  1. 消息队列的定义:消息队列是保存信息的一个容器,本质是一个队列。但是这个队列需要支持高吞吐、高并发、并且高可用。

  2. 业内消息队列框架:

  • Kafka:高吞吐场景下发挥优秀
  • RabbitMQ: 实时场景下发挥优秀
  • Pulsar: 下一代云原生分布式消息平台
  • BMQ: 与Pulsar类似,初期应对高吞吐,逐步替换掉Kafka
  1. Kafka:
  • 运维成本高
  • 负载不均衡的场景解决方案复杂
  • 没有自己的缓存,完全依赖Page Cache
  • 提高吞吐或者稳定性的功能:Producer、Broker、Consumer
    (但是在同一进程中IO性能会下降)
  1. BMQ:
  • 兼容Kafka,存算分离,云原生消息队列
  • 读写流程:Failover机制、写入状态机
  • 高级特性:泳道、Databus、Mirror、Index、Parquet
  1. RocketMQ:
  • 基本包含:Queue、Tag
  • 底层原理:架构模型、存储模型
  • 高级特性:事务消息、重试和死信队列、延迟队列

三、实践练习例子:

  • 有什么实践举例帮助理解知识点?
    此次并没有git的实际项目,但是本次学习的课件中有所提及:
    Kafka、RabbitMQ、Pulsar、BMQ 这些都是业内大厂实际在使用的消息队列解决方案,可以参考学习

四、课后个人总结:

  • 本章有什么知识点不容易掌握?
    可能直接通过理论理解框架会比较困难,希望后面会有实际的底层代码或是官方文档可供阅读的话也许会方便理解吧。
  • 什么地方容易与其他内容混淆?
    本节课逻辑比较清晰,也不太会出现混淆的情况。

五、引用参考:

  • 我参考了哪些外部博客/笔记/文章?
    我参考了掘金视频课中的“后端入门-Go框架设计与实践”,也就是此次掘金内部课程:
    juejin.cn/course/byte… 另外还参考了Foxtail-Grass Studio的专辑封面,作为此次笔记的封面
  • 文章中有什么地方是我参考引用了外部博客/笔记/文章的?
    主要是课程的主要知识点总结,采用了一边阅读课件一边记录的方式进行了个人的一些学习总结。