消息队列 | 青训营笔记

69 阅读2分钟

消息队列 | 青训营笔记

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

一、本堂课重点内容:

  • Kafka
  • BMQ
  • RocketMQ

二、详细知识点介绍:

几种常见的消息队列:

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

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

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

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

Kafka

使用场景:

搜索服务、直播服务、订单服务、支付服务、日志信息、Metrics数据、用户行为。

如何使用:

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

消息的视角:

ProducerBrokerConsumer

Kafka 提高吞吐或稳定性

Producer:批量发送、数据压缩

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

Consumer:Rebalance

Kafka的缺点:

数据复制问题

重启问题

Kafka的替换、扩容、缩容操作

可能会负载不均衡

会遇到的问题:

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

RocketMQ

使用场景:

针对电商服务线,业务涉及广泛,注册、订单、库存、物流等;同时存在许多业务峰值,如秒杀、周年庆、定期优惠等

RocketMQ 基本概念

  • 逻辑队列 Topic
  • 消息体 Message
  • 标签 Tag(Kafka没有)
  • 分区 ConsumerQueue(对应Kafka:Partition)
  • 生产者 Producer
  • 生产者集群 ProducerGroup(Kafka没有)
  • 消费者 Consumer
  • 消费者集群 ConsumerGroup
  • 集群控制器 Nameserver(对应Kafka:Controller)

RocketMQ 高级特性

了解事务场景、事务消息、延迟发送、延迟消息、处理失败、消费重试和死信队列

三、课后个人总结:

没有基础,纯听个概念了。