深入拆解消息队列 47 讲
许文强
前腾讯云 Kafka 技术负责人
5385 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 50 讲
深入拆解消息队列 47 讲
15
15
1.0x
00:00/00:00
登录|注册

36|云原生:业界MQ的计算存储分离是如何实现的?

你好,我是文强。
在功能篇,我们分析了消息队列中多个主要功能的技术实现。从这节课开始,我们将结合云原生ServerlessEDA(Event-driven Architectures存算分离分层存储数据集成等一些业界较新的技术架构理念,来讲一下消息队列如何与这些架构理念结合,以及结合后会具备哪些实际价值。
这节课我们就重点学习一下消息队列的存算分离架构。

什么是存算分离架构

首先,你得清楚什么是存算分离架构。
存算分离中的“存”是指存储层,“算”是指“计算层”。简单理解“计算”就是功能相关的实现,“存储”是指数据落地持久化存储。消息队列中的存储层是指包括存储结构设计、消息存储格式、数据分段等具体的数据存储功能。计算层是指包括协议解析、事务消息、延时消息等主要消耗计算资源(如 CPU)的功能模块。
跟存算分离相对的是存算一体,“分离”和“一体”是指计算层和存储层是否在一台机器上。
如下图所示,这是存算一体的消息队列的架构。从单机维度看,计算层和存储层都在同一个 Broker 中,由多台 Broker 组成一个集群。我们在第 15 讲讲过有状态服务和无状态服务,这种存算一体的架构就是典型的有状态服务。
存算一体架构的最大特点就是计算层和存储层没有明显的界限,从代码层面上看,计算层和存储层交互的操作就是文件的读写,比如我们在第 06 讲讲到的 FileChannel.write、FileChannel.read。 它的主要优势是架构简单、开发实现成本较低。缺点是它是一个有状态服务,无法快速弹性地扩容。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

云原生消息队列的存算分离架构是当前备受关注的话题。该架构的优势在于集群弹性和成本降低,但并非所有用户都对此有强烈需求。选择合适的存储层引擎是实现存算分离架构的关键。本文详细介绍了可选择的存储层引擎,包括对象存储、分布式存储服务和虚拟云盘,并分析了它们的优缺点和适用场景。此外,通过对RocketMQ 5.0和Pulsar的架构实现进行深入解析,读者可以全面了解云原生消息队列存算分离架构的技术特点和实现方式。存算分离架构的主要痛点在于研发成本高、周期长、稳定性有待提升,还无法提供长期稳定的服务。虽然Pulsar是第一个存算分离架构的消息队列,但它本身的很多设计思想,很有先进性,很值得我们去参考。文章还探讨了实现存算分离架构的技术思考,强调了选择合适的存储层引擎的重要性。总体而言,本文对云原生消息队列存算分离架构进行了深入剖析,为读者提供了全面的技术视角和实现方式。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《深入拆解消息队列 47 讲》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(1)

  • 最新
  • 精选
  • shan
    总结 存算分离 存算分离指的是计算层和存储层分离架构,分开部署,计算层指消耗计算资源的功能模块,存储层指的是数据存储相关功能,在存算分离架构下,通常计算层需要使用存储层提供的SDK将数据写入存储层。 存算分离架构可以更好的适应云原生,进行动态扩容、弹性伸缩等。 存储层引擎 (1)对象存储:各个云厂商提供的商业化对象存储服务,如AWS的S3、腾讯云COS; 优点:局部分布式可靠存储能力、存储成本低。 缺点:读写方式不够灵活,流式读写性能较低,难以在大规模实时流数据场景中使用。 (2)分布式存储:一些专门提供分布式数据存储的组件,如HDFS、BookKeeper等; 优点:具体分布式存储能力,读写性能较高。 缺点:存储集群本身有一定稳定性和可靠性。 (3)虚拟云盘:云厂商提供在线云盘服务。 优点:支持分布式可靠存储能力。 缺点:云盘需要绑定节点,同一时间只允许一台Broker写入数据到云盘。 一般选用分布式存储方案,读写性能高,并且会提供多语言的流式写入API。如Pulsar的存储层使用的是BookKeeper。 主流存算分离架构MQ RocketMQ 5.0之前是存算一体,功能都在Broker上,在5.0之后,往存算分离架构方向演化。Pulsar一开始设计就是存算分离的架构。 1. RocketMQ 5.0架构 RocketMQ 5.0在原先Broker集群基础上增加了Proxy层,生产者和消费者可以通过Proxy层将转发请求到Broker中,不过当前Proxy层中并没有计算的逻辑,计算存储逻辑还是在Broker中,所以并不算真正意义上的存算分离。 2. Pulsar架构 Pulsar选用了Apache BookKeeper作为存储层引擎,Bookeeper设计的初衷就是用来高性能地存储分布式流日志的,具备流式读写的能力,写入读取性能较高,具备分布式存储特性。 客户端生成消费请求,首先发送到Broker中,Broker负责处理计算逻辑,然后再通过与Bookeeper交换进行数据的读写,实现存算分离。 存算分离架构,计算层实现弹性关键点: (1)Topic可以快速迁移,不需要进行消息数据搬迁; (2)系统可以自动化均衡迁移,不需要人工介入; (3)迁移过程快速,对集群没有影响;
    2023-09-25归属地:河南
收起评论
显示
设置
留言
1
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部