本文记录了第六届字节跳动后端青训营《走进消息队列》课程中的主要内容,包括消息队列的使用案例、发展历史,并且介绍了常用的消息队列Kafka、BMQ和RocketMQ的功能
使用消息队列的例子
案例一:系统崩溃
浏览直播间时,app会记录我们的存储记录,但当存储记录被删除(删库跑路)时,整个过程会卡住
解决方案:解耦
案例二:服务能力有限
请求量过于庞大,服务器同时只能处理一部分请求
解决方案:削峰 每次只获取部分请求
案例三:链路耗时长尾
处理流程时间过长
解决方案:异步
案例四:日志存储问题
解决方案:日志处理 使用消息队列把日志写到一些搜索引擎( eg.ES )里
消息队列的发展历史
TIB 诞生于 1985 年,主要服务金融和新闻机构
微软加入于1997年 MSMQ
JMS 只能用于 Java API
2004 年,规范发布,任何人都能参与和使用消息队列
业界常用消息队列
- Kafka 分布式、分区、多副本的日志提交服务,适合 高吞吐 场景
- RocketMQ (阿里使用)适用于 实时场景,低延迟、高性能、容量大且扩展灵活
- Pulsar 下一代云原生分布式消息流平台 存算分离
- BMQ (字节用)类似 Pulsar ,替换Kafka集群,承接 高吞吐的离线业务场景