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

179 阅读2分钟

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

2023.2.16

什么是消息队列?

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

发展历程

  • TIB

诞生于1985年,服务于金融机构和新闻机构

  • IBM MQ/WebSphere

诞生于1993年,商业消息队列平台市场主要玩家

  • MSMO

微软发布于1997年

  • JMS

诞生于2001年,本质上是一套JavaAPI

  • AMQP/RabbitMQ

规范发布于2004年,同年RabbitMO面市

  • Kafka

2010年由Linked开源

  • RocketMO

2011年阿里中间件团队自研

  • Pulsar

2012年诞生于Yahoo内部

消息队列-Kafka

分布式的、分区的、多副本的日志提交服务,在高吞吐场景下发挥较为出色

如何使用

  • 第一步:首先需要创建一个Kafka集群,但如果你是在字节工作,恭喜你,这一步消息团队的小伙伴已经帮你完成了
  • 第二步:需要在这个集群中创建一个Topic,并且设置好分片数量
  • 第三步:引入对应语言的SDK,配置好集群和Topic等参数,初始化一个生产者,调用Send方法,将你的Hello World发送出去
  • 第四步:引入对应语言的SDK,配置好集群和Topic等参数,初始化一个消费者,调用Poll方法,你将收到你刚刚发送的Helo Word

基本概念

  • Topic: Kakfa中的逻辑队列,可以理解成每一个不同的业务场景就是一个不同的topic,对于这个业务来说,所有的数据都存在这个topic中
  • Cluster: Kafka的物理集群,每个集群中可以新建多个不同的topic
  • Producer: 顾名思义,也就是消息的生产端,负责将业务消息发送到Topic当中
  • Consumer: 消息的消费端,负责消费已经发送到topic中的消息
  • Partition: 通常topic会有多个分片,不同分片直接消息是可以并发来处理的,这样提高单个Topic的吞吐

消息队列- BMQ

和Pulsar架构类似,存算分离,初期定位是承接高吞吐的离线业务场景,逐步替换掉对应的Kafka集群

消息队列- RocketMQ

低延迟、强一致、高性能、高可靠、万亿级容量和灵活的可扩展性,在一些实时场景中运用较广

持续更新中···