消息队列 | 青训营笔记

88 阅读1分钟

消息队列 | 青训营笔记

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

消息队列(MQ)

指保存消息的一个容器,本质上是一个支持高吞吐、高并发、高可用的队列。

常用消息队列:

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

认识Kafka:

  • 适用于离线消息场景,比如:日志服务 工作流程:创建集群(物理集群Cluster,其中可建立多个Topic)-新增Topic(逻辑队列,对应不同的业务场景)-生产者逻辑编写(负责将业务发送到Topic中)-消费者逻辑编写(不同消费者组间互不干涉,负责消费Topic中的消息)

单个Topic中存在partition分区,用于并行处理任务,每条消息在partition内部有唯一的相对位置Offset,且为严格递增的。实际上,每个分片存在副本Replica,副本之间有不同的角色,以保证容灾的作用。

从一条消息的角度,理解Kafka的高吞吐性: 批量发送:减少IO次数,加强发送能力 压缩消息:减少带宽使用,例如:snappy

更全面的了解请参考:Kafaka详解