消息队列 | 青训营笔记
这是我参与「第五届青训营」伴学笔记创作活动的第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 高级特性
了解事务场景、事务消息、延迟发送、延迟消息、处理失败、消费重试和死信队列
三、课后个人总结:
没有基础,纯听个概念了。