关于阿里云开发者:赛道解析针对冷热读写场景的-RocketMQ-存储系统设计思路拆解

37次阅读

共计 2939 个字符,预计需要花费 8 分钟才能阅读完成。

简介:往年的云原生编程挑战赛围绕“挑战 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

版权申明:本文内容由阿里云实名注册用户自发奉献,版权归原作者所有,阿里云开发者社区不领有其著作权,亦不承当相应法律责任。具体规定请查看《阿里云开发者社区用户服务协定》和《阿里云开发者社区知识产权爱护指引》。如果您发现本社区中有涉嫌剽窃的内容,填写侵权投诉表单进行举报,一经查实,本社区将立即删除涉嫌侵权内容。

正文完
 0