这是我参与「第五届青训营 」伴学笔记创作活动的第 9 天
消息队列的前世今生
消息队列是什么?
消息队列(MQ),指保存消息的一个容器,本质是个队列,但这个队列需要支持高吞吐、高并发,并且高可用
业界消息队列对比
Kafka:分布式的、分区的、多副本的日志提交服务、在高吞吐场景下发挥较为出色
RocketMQ:低延迟、强一致性、高性能、高可靠、万亿级容量和灵活的可扩展性,在一些实时场景中运用较广
Pulsar:是下一代云原生分布式消息流平台,集消息、存储、轻量化函数式计算为一体,采用存算分离的架构设计
消息队列-Kafka
kafka使用场景,业务日志、用户行为数据、Metrics数据
基本概念,Producer、Cluster、Consumer、Topic、Partition
数据迁移、Offset、Partition选主
一条消息从生产到消费是如何处理的,Producer端逻辑、Broker端逻辑、Consumer端逻辑
Kafka存在的问题
- 运维成本高
- 对于负载不均衡的场景,解决方案复杂
- 没有自己的缓存,完全依赖Page Cache
- Controller和Coordinator和Broker在同一进程中,大量IO会造成其性能下降
消息队列-BMQ
BMQ架构
BMQ与Kafka文件结构对比
BMQ各模块是如何工作的,Broker、Proxy、HDFS、MetaStorage
BMQ读写流程(Failover机制,写入状态机)
BMQ高级特性(泳道、Databus、Mirror、Index、Parquet)
BMQ多机房容灾
消息队列-RocketMQ
RocketMQ使用场景
RocketMQ和Kafka对比
RocketMQ架构介绍,Producer、Broker、Nameserver、Consumer
一条消息从生产到消费是如何处理的,Producer端逻辑、Broker端逻辑、Consumer端逻辑
感受与反思
课上讲到消息队列的使用场景包括点赞、评论等需要高并发的场景中,而我们的大项目中就有点赞、评论的需求,故可以尝试使用消息队列;不过我还没太懂其中的原理,时间原因也还没进行集群搭建的尝试,等有时间了希望能深入了解。