消息队列原理学习 | 青训营笔记

86 阅读2分钟

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

目录

  • 什么是消息队列
  • Kafka
  • BMQ
  • RocketMQ

什么是消息队列

消息队列(MQ),指保存消息的一个容器,本质是一个队列,但这个队列需要支持 高吞吐,高并发,高可用

graph LR
生产 --> Message1 --> Message2 --> Message3  --> 消费

业界常见的消息队列

  • Kafka: 分布式、多分区、多副本的日志题解服务,在高吞吐场景下发挥较为出色
  • RocketMQ: 低延迟、强一致、高性能、高可靠、万亿级容量和灵活的可扩展性、在一些实时场景中运用较广
  • Pulsar:是下一代云原生分布式消息流平台,集消息、存储、轻量化函数式为一体、采用存算分离的架构设计
  • BMQ:和Pulsar架构类似,存算分离,初期定位是承接高吞吐的离线业务场景,逐步替换掉对应的Kafka集群

Kafka

使用场景

  • 搜索服务
  • 直播服务
  • 订单服务
  • 支付服务
  • 搜索、点赞、评论、收藏

如何使用Kafka

graph TD
创建集群 --> 新增Topic --> 编写生产者逻辑 --> 编写消费者逻辑

基本概念

  • Topic: 逻辑队列
  • Cluster: 物理集群
  • Producer: 生产者
  • Consumer:消费者
  • ConsumerGroup: 消费者组
  • Offset: 消息在partition内的相对位置信息
  • Replica:每个partition下有多个Replica

kafka的架构

Kafka由一个zookeeper集群,多个producer和多个broker,多个consumer组成

BMQ

兼容Kafka协议,存算分离,云原生消息队列 ####运维操作对比

名称KafkaBMQ
重启分钟级秒级
替换天级秒级
扩容天级秒级
缩容天级秒级

RocketMQ

使用场景

针对电商业务先,其业务涉及广泛,如注册,订单,库存,物流等,同时也会涉及许多业务峰值时刻,如秒杀活动,周年庆,定期特惠等

Kafka和RockerMQ对比

名称KafkaRockerMQ
逻辑队列TopicTopic
消息题MessageMessage
标签Tag
分区PartitionConsumer Group
生产者ProducerProducer
生产者集群Producer Group
消费者ConsumerConsumer
消费者集群Consumer GroupConsumer Group
集群控制器ControllerNameserver

RockerMQ:由一个Nameserver一个Broker Cluster和若干个Consumer Group组成