这是我参与「第五届青训营 」笔记创作活动的第15天
一、本堂课重点内容:
1.前世今生
2.消息队列-Kafka
3.消息队列-BMQ
4.消息队列- RocketMQ
二、详细知识点介绍:
1、前世今生
消息队列发展历程
Kafka:
分布式的、分区的、多副本的日志提交服务,在高吞吐场景下发挥较为出色
RocketMQ:
低延迟、强一致、高性能、高可靠、万亿级容量和灵活的可扩展性,在实时场景中运用较广
Pulsar:
是下一代云原生分布式消息流平台,集消息、存储、轻量化函数式计算为一体、采用存算分离的架构设计
2、消息队列-Kafka
使用场景
如何使用kafka
基本概念
Topic:逻辑队列,不同Topic可以建立不同的Topic
Cluster:物理集群,每个集群中可以建立多个不同的Topic
Producer:生产者,负责将业务消息发送到Topic中
Consumer:消费者,负责消费Topic中的消息
ConsumerGroup:消费者组,不同组Consumer消费进度互不干涉
Offset :
消息在partition 内的相对位置信息,可以理解为唯一ID,在partition内部严格递增。
Replica
每个分片有多个Replica,Leader Replica将会从ISR中选出。
数据复制
kafka架构
一条消息的自述
Producer-批量发送
Producer-数据压缩
Broker-数据的存储
Broker消息文件结构
Broker-磁盘结构
移动磁头找到对应磁道,磁盘转动,找到对应扇区,最后写入。寻道成本比较高,因此顺序写可以减少寻道所带来的时间成本。
Consumer-消息的接收端
Consumer-Low Level
通过手动进行分配,哪一个Consumer消费哪一个 Partition完全由业务来决定。
Consumer-High Level
Consumer Rebalance
Kafka-问题总结
1、运维成本高
2、对于负载不均衡的场景,解决方案复杂
3、没有自己的缓存,完全依赖Page Cache
4、Controller和Coordinator和Broker在同一进程中,大量IO会造成其性能下降
3、消息队列- BMQ
BMQ简介
兼容Kafka协议,存算分离,云原生消息队列
运维操作对比
HDFS 写文件流程
随机选择一定数量的DataNode进行写入
BMQ文件结构
Broker-Partition状态机
Proxy
BMQ-高级特性
泳道消息
Databus
1.简化消息队列客户端复杂度
2.解耦业务与Topic
3.缓解集群压力,提高吞吐
Index
如果希望通过写入的Logld、Userld 或者其他的业务字段进行消息的查询,应该怎么做?
直接在BMQ中将数据结构化,配置索引DDL,异步构建索引后,通过Index Query服务读出数据。
Parquet
Apache Parquet是Hadoop生态圈中一种新型列式存储格式,它可以兼容Hadoop 生态圈中大多数计算框架(Hadoop、Spark等),被多种查询引擎支持(Hive、lmpala、Drill等)。
直接在BMQ中将数据结构化,通过 Parquet Engine,可以使用不同的方式构建Parquet格式文件。
4、消息队列- RocketMQ
使用场景
例如,针对电商业务线,其业务涉及广泛,如注册、订单、库存、物流等;同时,也会涉及许多业务峰值时刻,如秒杀活动、周年庆、定期特惠等
RocketMQ基本概念
RocketMQ架构
存储模型
RocketMQ-高级特性
高级特性-延迟发送
高级特性-处理失败
5、总结
前世今生:
消自万小A-_s267
Kafka:
基本概念、架构设计、底层原理、架构缺点
BMQ:
架构设计、底层原理、Kafka 比较、高级特性
RocketMQ:
架构设计、底层原理、高级特性
三、课后个人总结:
此次课学习了RocketMQ的起源,了解了RocketMQ之前的kafka和BMQ的产生和使用及存在的缺点。收益颇多。