消息队列|青训营笔记

41 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 8 天 一、本节课,我主要学习了什么是消息队列。 消息队列(MQ),指保存消息的一个容器,本质是个队列。但这个队列呢,需要支持高吞吐,高并发,并且高可用。 二、业界消息队列对比 Koiko Kafka:分布式的、分区的、多副本的日志提交服务,在高吞吐场景下发挥较为出色 RocketMQ:低延迟、强一致、高性能、高可靠、万亿级容量和灵活的可扩展性,在一些 实时场景中运用较广 Pulsar:是下一代云原生分布式消息流平台,集消息、存储、轻量化函数式计算为一体、采用存算分离的架构设计 PULSAR BMQ:和Pulsar架构类似,存算分离,初期定位是承接高吞吐的离线业务场景,逐步替换掉对应的Kafka集群 小结 1.BMQ的架构模型(解决Kafka存在的问题) 2.BMQ读写流程(Failover 机制,写入状态机) 3.BMQ高级特性(泳道、Databus、Mirror、Index、Parquet) 三、消息队列的应用场景 消息队列的主要作用是:解耦、异步、削峰。 解耦 如果A系统要发送数据给B、C、D三个系统,之后可能还有系统加进入进来,我们使用消息队列的话A系统只管把消息发到消息队列,其他需要这个消息的来订阅就可以了, 异步 A 系统需要发送个请求给 B 系统处理,由于 B 系统需要查询数据库花费时间较长,以至于 A 系统要等待 B 系统处理完毕后再发送下个请求,造成 A 系统资源浪费。使用消息队列后,A 系统生产完消息后直接丢进消息队列,不用等待 B 系统的结果,直接继续去干自己的事情了。 削峰 A 系统调用 B 系统处理数据,如果A系统的请求突然变得特别大 全都打到B系统,那B系统可能就会崩掉。我们让A系统把请求发到消息队列,这样B系统就可以按自己的需求去拉取消息进行消费。