RocketMQ 存储弹性- -冷热数据分级存储|学习笔记

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,内容安全 1000次 1年
对象存储 OSS,恶意文件检测 1000次 1年
简介: 快速学习 RocketMQ 存储弹性- -冷热数据分级存储

开发者学堂课程消息队列 RocketMQ 5.0 云原生架构升级课程RocketMQ 存储弹性- -冷热数据分级存储学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/1234/detail/18404


Rocket MQ 存储单性--冷热数据分级存储

 

主要内容:

一、储存弹性

二、Rocket MQ 分级存储

三、分级存储适用场景

 

次课程为大家讲解弹性运维系列的Rocket MQ储存弹性这一节课。本次课程主要介绍阿里云中间件团队在消息系统储存弹性的探索。关于让Rocket MQ商业版的空间按需使用按量服务的一些底层设计,如何低成本的实现动态磁盘扩缩容如何实现消息冷热分离与压缩存档的功能

本次课程主要从以下三个方面来展开,首先第一节是储存弹性,关于目前的一些磁盘扩容以及分布式存储的介绍,第二部分是Rocket MQ的分级存储,在connector以及基于commit log重分发两种实验方式。

最后一分级存储的一些用场景,包括消息归档冷热数据分离数据压缩以及流计算。

 

一、储存弹性

image.png

首先介绍储存弹性首先讲解比较常见的几种文件系统,或多或少都有扩容或者索引的一些工具,但是扩容只是针对于硬盘上的多个分区来进行扩缩容

也就是说这些常见的文件系统,们的扩容是有上限的,上限就是当前这块硬盘的最大空间若想合并多块磁盘的空间到同一个分区,这就需要利用LVM系统,LVM是对逻辑卷管理的英文缩写,它是对磁盘分区进行管理的一种机制,Lvm是建立在磁盘分区和文件系统之间的一个逻辑层,运维人员可以利用Lvm在不对硬盘重新分区的情况下动态的调整分区大小。

如上图所示后目目录实际是既使用了物理硬盘a,也使用物理硬盘b的空间。也就是说如果我想对控后目目录,或者可以将一块新的硬盘c挂在VG1上。但是这种扩容是没有现成的,因为不管是物理机还是云厂商提供的虚拟机,挂载硬盘的数量是有限的,所以就需要提前规划储存空间。

image.png 

下面用一个例子进行说明,现在有一块硬盘disk1其中有2TB的容量将它挂载到store上,如果现在store已经用了80%的容量

image.png 

若再挂载一个disk2,这样的话,储存空间占用就变成了40%,此时就有60%的空间是白白浪费的

image.png 

若想要减少浪费的空间,同为这个例子,现在disk1挂载在store上,再挂载一个1TB的disk 2时当前的数字空间占用率是53%,只有47%的空间浪费掉的。

image.png 

但是随着业务的增长储存空间占用率又到了80%,此时要再挂载一个disk 3,可以看到,虽然降低了对磁盘空间的浪费,但是同时也多占用了一个官能点。也就是使用Lvm系统做动态扩容,需要提前规划储存空间,这样既能灵活的按需扩容,也不能无限的扩容下去,不符合计算所要求的按需使用按量付费这种空间的需求,就不得不提到分布式文件系统。

image.png 

分布式文件系统是指U盘的物理资源并不直接挂载到机器上,而使用fuse用户态文件系统等技术提供兼容posix 接口。比如比较出名如HDFS、Ceph 。这些分布式文件系统是基于网络的文件系统,向上层应用暴露了一些的兼容的posix 接口,然后再将上层应用的发过来的读写请求通过网络转发到真正的文件服务器上来执行所需要的数据方面

image.png 

内分布式文件系统是最小程度,相比于之前介绍的分布式文件系统的区别是APP来提供服务的。同时也具有一些与众不同的特性,比如支持无限的储存空间文件一旦写入无法修改,如果想修改就只能重新上传改文件。以前的相比于posix 提供的API所支持的文件操作就比较有限,特别是对于一些数据的操作,比如建立文件能力比较差对象存储比其他的一些存储的最大优势是在于计费是按照储存空间的使用量来计费的。对于大多数厂商而言,这项存储的价格是最为低廉的下面介绍阿里的几种本地,然后分布式文件系统以及对象存储的性能与价格的对比

image.png 

可以看到,本地盘的储存类型为块存储,它的性能是最佳的,但是价格也是最贵的,而NAS也就是分布式文件系统,它的延迟和带宽都要相比于本地盘稍差一些,但是它的价格也是要相对便宜一些至于OSS,可以看到它明显的价格优势相比于本地盘,是SSD云盘的10%左右

 

二、Rocket MQ 分级存储

image.png 

接下来介绍Rocket MQ如何使用分布式文件系统来构建分级存储首先讲解阿里云上的编辑消息功能是如何使用的,分级存储是一个运维视角应该关的事情,对于业务人员只需要考虑这条消息对于业务来说应该保留多长的时间,然后在控制台上根据需要修改这个消息存储的时长即可,对于客户端来说也是透明的。有不使用编辑消息的功能,并无需更改代码,并且计费方式也是按照储存容量按需按需使用按量付费的。

image.png 

接下来介绍第一种基于connector 实现。Rocket MQ connector是独立于Rocket MQ 的一个分布式数据支撑组件各种系统的数据通过高效可靠的方式,比如要构建一个数据管道此数据管道通过broker转发到connector发布到OSS分布式文件系统或是其他的分布式文件系统中实现数据集群才能分析存储增加三个组件,第一个是DB,作为一个分布式协调组件负责connector以及节点的选址及储存在分析存储上面的软件界面数据管理第二个组件是connector ,使用consumer的方式来拉取broker上的消息,并且转发到二级文件存储中。当用户消费的时候还是向broker发起请求,但是broker发现当前请求的数据是一个数据储存在二级存储上的,那么它就会将这个请求转发给history node,然后history node数据从二级文件存储拉取出来返回给客户端同时history node也会像broker注册来做实地发现。

image.png 

第二种分析存储的实验方式是基于commit log重分发。也就是为commit log新增一个dispatch图中的OSS。当消息发到broker上的时候会先写入到commit log 中,然后再通过dispatch机制来鉴定。此时在dispatch的时候将消息转发到OSS upload里面,然后进行消息构建成所需要的top OSS组织的方式上传到OSS此基于commit log重分发的文件系统存储方式,兼容了上面提到的三个组件,通过commit log dispatch机制将消息转发到OSS中,并且效率会更高一点但是基于connector的方式具有更大的一个活性,特别是history node组件,不仅可以为group提供二级存储的服务,也可以使用其他的一些组件来读取RT存储中的消息即若将某集群缩容,那么就可以将某些broker设置为只读模式,然后直接带点掉。同时历史消息读取可以代理释放group 上的CPU内存和硬盘计算和储存资源

 

三、分级存储适用场景

image.png 

最后介绍分级存储所适用的一些场景需要延长交易储存时间的场景,比如消息归档和历史消息回溯等。对此采取了消息按照topic维度重新组织用户可以根据业务需要调整业务方案,所以对于特定的topic消息可以指定不同的消息保留时间,完全可以根据业务的需要来灵活设置的。对于要求储存时间短一些消息就可以缩短它的储存时间,对于要保留时间长一点的消息,就可以让储存时间变得更长一些。而对于流计算的场景来说,更关心的是吞吐量而不是延迟,这种按topic 维度来组织消息的储存结构对缓与batch是更为友好的相比于本地,它其实更能有助于提高预算的吞吐量

image.png 

接下来介绍比较适用分级存储的场景是压缩数据数据压缩适用于一些储存空间比较敏感的应用,是相当于用CPU的资源来换取空间的降低以此降低存储的成本尽量减少本地保存的消息的时间,将消息全部转移到分级存储上进行储存同时因为根据消息存储是按topic维度来组织消息的,一般来说相同topic 的消息具有相同的模式。这种储存结构可以更好的收藏字典提高压缩率,进一步的降低成本流程图所示,当消息转发到分级存储中时,就可以变更模式来生成字典,同时根据字典对后续的消息进行压缩,当消息的模式越类似压缩的效率就好。

image.png 

最后一个场景是冷热数据分离,在阿里云大规模运维的经验中,如果一个共享的集群上面很多租户其中有某一个或者几个租户期间大量访问数据就会带来磁盘IO的冲突,就会影响其他方面热数据应用,而冷热数据分离的数据是保存在级存储图中的OSS中。热数据是在本地磁盘以及dispatch中进行使用的,这样冷热数据的访问链路就完全分离储存介质等存储资源与线程池等计算资源也是完全隔离的,冷数据的访问不会对热数据的访问带来任何的毛刺以上就是本次课程的全部内容,感谢大家的聆听

相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
3月前
|
消息中间件 存储 数据库
RocketMQ 流存储解析:面向流场景的关键特性与典型案例
RocketMQ 流存储解析:面向流场景的关键特性与典型案例
88499 8
|
3月前
|
消息中间件 安全 物联网
MQTT常见问题之新增自定义主题后平台侧收不到发布的数据如何解决
MQTT(Message Queuing Telemetry Transport)是一个轻量级的、基于发布/订阅模式的消息协议,广泛用于物联网(IoT)中设备间的通信。以下是MQTT使用过程中可能遇到的一些常见问题及其答案的汇总:
|
3月前
|
物联网 网络性能优化 API
MQTT常见问题之单个消息发送数据不能超过64k如何解决
MQTT(Message Queuing Telemetry Transport)是一个轻量级的、基于发布/订阅模式的消息协议,广泛用于物联网(IoT)中设备间的通信。以下是MQTT使用过程中可能遇到的一些常见问题及其答案的汇总:
|
3月前
|
存储 消息中间件 缓存
RocketMQ 5.0 分级存储背后技术优化包含那几个方面
RocketMQ 5.0 分级存储背后的技术优化是一个综合性的系统工程,需要考虑多个方面,包括存储介质的选择、数据读写策略的设计、数据压缩和解压缩技术的引入、自动的数据分级和迁移机制的实现,以及高可用性和容错性的保证等。这些技术优化的目的是为了实现存储成本和性能的最优平衡,提高系统的可靠性和可用性,满足大规模数据处理的需求。
140 1
|
4天前
|
消息中间件 存储 数据库
深入学习RocketMQ的底层存储设计原理
文章深入探讨了RocketMQ的底层存储设计原理,分析了其如何通过将数据和索引映射到内存、异步刷新磁盘以及消息内容的混合存储来实现高性能的读写操作,从而保证了RocketMQ作为一款低延迟消息队列的读写性能。
|
22天前
|
消息中间件 Java 测试技术
消息队列 MQ使用问题之数据流出规则是否支持平台的云RabbitMQ
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
EMQ
|
1月前
|
传感器 人工智能 安全
EMQX 与 MQTT: AI 大模型时代的分布式数据中枢
在以数据为核心的 AI 时代,基于 MQTT 协议的消息服务器 EMQX 能帮助企业更好的利用人工智能和机器学习模型,是智能化系统中核心的数据基础软件。
EMQ
164 3
|
22天前
|
消息中间件 监控 物联网
消息队列 MQ使用问题之如何获取和处理消息堆积数据
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
3月前
|
消息中间件 Shell 数据处理
rocket mq 查看消费进度,消息堆积,清除堆积数据命令
该内容是关于RocketMQ的消费进度管理和堆积数据处理的指导。首先,需进入RocketMQ的bin目录,然后使用`mqadmin consumerProgress`命令查看消费者或生产者的消费进度。`broker offset`和`consumer offset`的差值表示未消费消息。通过`resetOffsetByTime`命令可重置消费位点来清除堆积数据,未消费消息默认3天后会被丢弃。此外,`CONSUME_FROM WHERE`枚举类定义了消费起点选项,包括从最后、最开始或指定时间点消费。
710 3
|
3月前
|
消息中间件 JavaScript Java
MQ产品使用合集之视觉智能平台人脸搜索1:N怎么更新人脸数据
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。