这是我参与[第五届青训营]伴学打卡活动的第12天
走进消息队列
消息队列的产生背景:系统崩溃,服务处理能力有限,链路耗时长尾,日志处理
对于系统崩溃背景的一个解决方案是解耦,在搜索行为记录和点击行为记录之间新增消息队列,消息队列再将对应的消息数据传给储存服务。
同时,消息队列可以起到延缓访问高峰(削峰)的作用和异步操作的作用\
消息队列的特点
消息队列(MQ),指保存消息的一个容器,本质是个队列,但是这个队列需要支持高吞吐,高并发,高可用的特性。
主要的消息队列
kafka:
分布式的,分区的,多副本的日志提交服务,在高吞吐场景下发挥较为出色。
RocketMQ:
低延迟,强一致,高性能,高可靠,万亿级容量和灵活的可扩展性,在一些实时场景中运用较广。
Pulsar:
云原生分布式消息流平台,集消息,储存,轻量化函数式计算为一体,采用存算分离的架构设计。
BMQ:
和Pulsar类似,存算分离,初期定位是承接高吞吐的离线业务场景,逐步替换对应的Kafka集群。
消息队列-Kafka
使用场景:
搜索服务,直播服务,订单服务,支付服务
Kafka使用流程:
创建集群->新增Topic->编写生产者逻辑->编写消费者逻辑\
Offset:消息在partition内的相对位置信息,可以理解为唯一ID,在partition内部严格递增。
Replica:每个分片有多个Replica,Leader Replica将会从ISR中选出
Producer:批量发送,数据压缩
Broker:顺序写,消息索引,零拷贝
Consumer:Rebalance
消息队列-BMQ
兼容Kafka协议,存算分离,云原生消息队列
消息队列-RocketMQ
使用场景:针对电商业务线,如注册,订单,库存,物流等;同时,也会涉及到峰值时刻,如秒杀活动。