【赛道解析】针对冷热读写场景的 RocketMQ 存储系统设计思路拆解

简介: 今年的云原生编程挑战赛围绕“挑战 Serverless 创新实践”展开,将继续深度探索 RocketMQ、Dubbo3、Serverless 三大热门技术领域,为热爱技术的年轻人提供一个挑战世界级技术问题的舞台。希望选手们能用手中的技术,为全社会创造更大的价值。

今年的云原生编程挑战赛围绕“挑战 Serverless 创新实践”展开,将继续深度探索 RocketMQ、Dubbo3、Serverless 三大热门技术领域,为热爱技术的年轻人提供一个挑战世界级技术问题的舞台。希望选手们能用手中的技术,为全社会创造更大的价值。


赛道一:针对冷热读写场景的 RocketMQ 存储系统设计


瓜分60万现金大奖,三大赛道任意选择,

更有奇葩任务定义拿奖新姿势,快快点击报名吧!

https://tianchi.aliyun.com/specials/promotion/cloudnative2021


1、赛题背景


Apache RocketMQ 作为的一款分布式的消息中间件,历年双十一承载了万亿级的消息流转,为业务方提供高性能低延迟的稳定可靠的消息服务。其中,实时读取写入数据和读取历史数据都是业务常见的存储访问场景,而且会在同一时刻同时出现,因此针对这个混合读写场景进行优化,可以极大的提升存储系统的稳定性。同时英特尔® 傲腾™ 持久内存作为一款与众不同的独立存储设备,可以缩小传统内存与存储之间的差距,有望给 RocketMQ 的性能再次飞跃提供一个支点。


2、题目解析


本次赛题大致有两个关键点:分层存储如何设计、AEP在场景中扮演的角色。

首先分层存储并不是一个陌生的概念,也是一个被广泛应用技术,广义上讲,就是将数据存储在不同层级的介质中,并在不同的介质之间进行自动或者手动的数据迁移,复制等操作。事实上,分层存储的设计并没有唯一最优解的说法,需要具体场景具体设计,并尽可能考虑到极端情况。


  • 4 核 8G 规格 ECS,配置 400G 的 ESSD PL1 云盘(吞吐可达到 350MiB/s ref),配置 126G 傲腾™持久内存。从机器配置上看,各个存储介质速度 8G-DRAM > 126G-AEP > 400G-ESSD。


  • 正确性评测中会重启 ECS,并清空傲腾盘上的数据。重启 ECS 采用的是模拟断电的方法,因此需要保证数据至少落盘一份到 ESSD 中。


  • 性能评测时,有 50% 的队列会从当前最大位点消费,剩余的从 0 开始,因此可以对“冷热数据”进行区分处理,提高系统的稳定性和运行效率。


  • 虽然操作系统中有 PageCache,但是它在某种极端情况下表现得“笨笨”的,比如说混合读写中,刚写入的“热数据”可能会因为内存不足而被换出,消费时的数据又会污染本就摇摇欲坠的 PageCache,最差情况是可能导致其完全失效,全部读写都走了 SSD。


其次是如何高效利用这块 AEP。


  • 英特尔® 傲腾™ 内存是一款与众不同的独立存储设备,可以缩小传统内存与存储之间的差距。


  • 对于某一个设备在什么情况下使用、如何使用都是基于其特性出发的,就比如之前的机械硬盘因为物理寻址方式,顺序读写时吞吐远大于随机读写,而 DRAM 和固态硬盘则是电路寻址,不考虑硬件和软件上的缓存优化时是否顺序读写差距不大;而傲腾内存的特性又不同于其他存储介质,深入了解它将有助于更灵活更高效的使用。

https://developer.aliyun.com/article/770338?groupCode=aliyundb


3、解题思路


分层存储:


  • 由于存储介质容量、速度上有较大差异,因此可以将冷热数据进行区分,新写入的数据维持在 DRAM 中,冷数据在读取前及时复制到 AEP 中。


  • 由于 ESSD 的带宽非常有限,冷数据在迁移过程中会占用宝贵资源,因此可以在写入阶段采用双写。


  • 由于是冷热读写的队列是随机指定的,需要程序能自己判断并区别对待。


  • 可以在内存中自己维护一份缓存,减少对 PageCache 的依赖。


4、如何拿好成绩


由于成绩是取得全部流程时间总和,且各个环节互相影响,因此可以大胆发挥创造,找出最具“性价比”的优化。


例如为了优化后续读流程对数据进行规整,或者为了优化写性能在 ESSD 中只 Append 数据顺序落盘,在 AEP 或者 DRAM 中构造索引等各种方法,期待选手们都能获得自己满意的成绩!


5、傲腾技术参考文档:


  • Intel傲腾持久化内存介绍:

https://software.intel.com/content/www/us/en/develop/videos/overview-of-the-new-intel-optane-dc-memory.html


  • 傲腾持久化内存(AEP)工作模式:

https://code.aliyun.com/dts_test/dts-contest/blob/master/doc/appdirect-tips.md


  • PMEM IO官网:

https://pmem.io/


  • 如何模拟PMEM:

https://software.intel.com/content/www/us/en/develop/articles/how-to-emulate-persistent-memory-on-an-intel-architecture-server.html


  • PMEM编程指北:

https://code.aliyun.com/dts_test/dts-contest/blob/master/doc/PMEM%E7%BC%96%E7%A8%8B%E6%8C%87%E5%8C%97.md


  • PMDK示例程序:

https://github.com/pmem/pmdk-examples


  • 评测环境使用PMEM:

https://code.aliyun.com/dts_test/dts-contest/blob/master/doc/fsdax-pmem.md?spm=5176.12281978.0.0.2e7f4154YmlInw&file=fsdax-pmem.md


  • JAVA使用PMEMKV:

https://github.com/pmem/pmemkv-java


  • Java* Support for Intel® Optane™ DC Persistent Memory:

https://software.intel.com/content/www/us/en/develop/articles/java-support-for-intel-optane-dc-persistent-memory.html?spm=5176.12281978.0.0.2e7f4154YmlInw


  • JAVA持久内存编程教程(视频):

https://software.intel.com/content/www/us/en/develop/videos/persistent-memory-programming-with-java.html

相关实践学习
快速体验阿里云云消息队列RocketMQ版
本实验将带您快速体验使用云消息队列RocketMQ版Serverless系列实例进行获取接入点、创建Topic、创建订阅组、收发消息、查看消息轨迹和仪表盘。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
10月前
|
消息中间件 存储 缓存
RocketMQ原理—4.消息读写的性能优化
本文详细解析了RocketMQ消息队列的核心原理与性能优化机制,涵盖Producer消息分发、Broker高并发写入、Consumer拉取消息流程等内容。重点探讨了基于队列的消息分发、Hash有序分发、CommitLog内存写入优化、ConsumeQueue物理存储设计等关键技术点。同时分析了数据丢失场景及解决方案,如同步刷盘与JVM OffHeap缓存分离策略,并总结了写入与读取流程的性能优化方法,为理解和优化分布式消息系统提供了全面指导。
RocketMQ原理—4.消息读写的性能优化
|
存储 Java
深入探讨了Java集合框架中的HashSet和TreeSet,解析了两者在元素存储上的无序与有序特性。
【10月更文挑战第16天】本文深入探讨了Java集合框架中的HashSet和TreeSet,解析了两者在元素存储上的无序与有序特性。HashSet基于哈希表实现,添加元素时根据哈希值分布,遍历时顺序不可预测;而TreeSet利用红黑树结构,按自然顺序或自定义顺序存储元素,确保遍历时有序输出。文章还提供了示例代码,帮助读者更好地理解这两种集合类型的使用场景和内部机制。
193 3
|
11月前
|
存储 弹性计算 安全
阿里云服务器ECS通用型规格族解析:实例规格、性能基准与场景化应用指南
作为ECS产品矩阵中的核心序列,通用型规格族以均衡的计算、内存、网络和存储性能著称,覆盖从基础应用到高性能计算的广泛场景。通用型规格族属于独享型云服务器,实例采用固定CPU调度模式,实例的每个CPU绑定到一个物理CPU超线程,实例间无CPU资源争抢,实例计算性能稳定且有严格的SLA保证,在性能上会更加稳定,高负载情况下也不会出现资源争夺现象。本文将深度解析阿里云ECS通用型规格族的技术架构、实例规格特性、最新价格政策及典型应用场景,为云计算选型提供参考。
|
11月前
|
人工智能 自然语言处理 算法
DeepSeek大模型在客服系统中的应用场景解析
在数字化浪潮下,客户服务领域正经历深刻变革,AI技术成为提升服务效能与体验的关键。DeepSeek大模型凭借自然语言处理、语音交互及多模态技术,显著优化客服流程,提升用户满意度。它通过智能问答、多轮对话引导、多模态语音客服和情绪监测等功能,革新服务模式,实现高效应答与精准分析,推动人机协作,为企业和客户创造更大价值。
884 5
|
存储 人工智能 NoSQL
Tablestore深度解析:面向AI场景的结构化数据存储最佳实践
《Tablestore深度解析:面向AI场景的结构化数据存储最佳实践》由阿里云专家团队分享,涵盖Tablestore十年发展历程、AI时代多模态数据存储需求、VCU模式优化、向量检索发布及客户最佳实践等内容。Tablestore支持大规模在线数据存储,提供高性价比、高性能和高可用性,特别针对AI场景进行优化,满足结构化与非结构化数据的统一存储和高效检索需求。通过多元化索引和Serverless弹性VCU模式,助力企业实现低成本、灵活扩展的数据管理方案。
739 12
|
存储 分布式计算 Hadoop
基于Java的Hadoop文件处理系统:高效分布式数据解析与存储
本文介绍了如何借鉴Hadoop的设计思想,使用Java实现其核心功能MapReduce,解决海量数据处理问题。通过类比图书馆管理系统,详细解释了Hadoop的两大组件:HDFS(分布式文件系统)和MapReduce(分布式计算模型)。具体实现了单词统计任务,并扩展支持CSV和JSON格式的数据解析。为了提升性能,引入了Combiner减少中间数据传输,以及自定义Partitioner解决数据倾斜问题。最后总结了Hadoop在大数据处理中的重要性,鼓励Java开发者学习Hadoop以拓展技术边界。
432 7
|
存储 缓存 人工智能
深度解析CPFS 在 LLM 场景下的高性能存储技术
本文深入探讨了CPFS在大语言模型(LLM)训练中的端到端性能优化策略,涵盖计算端缓存加速、智能网卡加速、数据并行访问及数据流优化等方面。重点分析了大模型对存储系统的挑战,包括计算规模扩大、算力多样性及数据集增长带来的压力。通过分布式P2P读缓存、IO加速、高性能存算通路技术以及智能数据管理等手段,显著提升了存储系统的吞吐量和响应速度,有效提高了GPU利用率,降低了延迟,从而加速了大模型的训练进程。总结了CPFS在AI训练场景中的创新与优化实践,为未来大模型发展提供了有力支持。
|
存储 安全 数据安全/隐私保护
PyPI 存储库中的 JarkaStealer:深入解析与防范措施
PyPI 存储库中的 JarkaStealer:深入解析与防范措施
162 2
|
监控 网络协议 算法
OSPFv2与OSPFv3的区别:全面解析与应用场景
OSPFv2与OSPFv3的区别:全面解析与应用场景
568 0
|
JavaScript API 开发工具
<大厂实战场景> ~ Flutter&鸿蒙next 解析后端返回的 HTML 数据详解
本文介绍了如何在 Flutter 中解析后端返回的 HTML 数据。首先解释了 HTML 解析的概念,然后详细介绍了使用 `http` 和 `html` 库的步骤,包括添加依赖、获取 HTML 数据、解析 HTML 内容和在 Flutter UI 中显示解析结果。通过具体的代码示例,展示了如何从 URL 获取 HTML 并提取特定信息,如链接列表。希望本文能帮助你在 Flutter 应用中更好地处理 HTML 数据。
480 1

相关产品

  • 云消息队列 MQ
  • 推荐镜像

    更多
  • DNS