摆烂新人写文章Day12——消息队列

85 阅读2分钟

什么是消息队列

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

image.png

发展历程

image.png

消息队列

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

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

Pulsar: 是下一代云原生分布式消息流平台,集消息、存储、轻量化函数式计算为一体、采用存算分离的构架设计

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

RocketMQ: 分布式、队列模型的开源消息中间件,支持事务消息、顺序消息、批量消息、定时消息、消息回溯等。主要功能是异步解耦和流量削峰。

使用场景

image.png

如何使用Kafka

image.png

基本概念

Topic: 逻辑队列,不同Topic可以建立不同的Topic

Cluster: 物理集群,每个集群中可以建立多个不同的Topic

Producer: 生产者,负责将业务消息发送到Topic中的消息

ConsumerGroup: 消息者组,不同组Consumer消息进度互不干涉

Kafka提高吞吐或者稳定性的功能

Producer: 批量发送、数据压缩

Broker: 顺序写,消息索引,零拷贝

Consumer: Rebalance

Kafka-问题总结

  1. 运维成本高
  2. 对于负载不均衡的场景,解决方案复杂
  3. 没有自己的缓存,完全依赖Page Cache
  4. Controller、Coordinator和Broker在同一个进程中,大量IO会造成其性能下降

RocketMQ

  1. RocketMQ 的基本概念(Queue、Tag)
  2. RcoketMQ 的底层原理(构架模型、存储模型)
  3. RocketMQ 的高级特性(事务消息死信队列,延迟队列)