一种存储集群中分级缓存读写数据的方法

文档序号:735116 发布日期:2021-04-20 浏览:24次 >En<

阅读说明:本技术 一种存储集群中分级缓存读写数据的方法 (Method for hierarchically caching read and write data in storage cluster ) 是由 齐光鹏 窦洋 张明哲 于 2021-01-15 设计创作,主要内容包括:本发明公开一种存储集群中分级缓存读写数据的方法,涉及云计算技术领域,其实现基于后端存储集群、第一级缓存、第二级缓存、api网关、日志文件系统和应用程序,后端存储集群管理原始数据,第一级缓存存储热点数据,并将热点数据划分为不同的pool,第二级缓存将pool数据按照索引抽成段后保存,api网关统一处理请求。应用程序发起读请求时,api网关处理请求并发布到第二级缓存中,第二级缓存查找相关段并定位到pool,或者,没有找到相关段,进一步向第一级缓存发起缺段请求,仍无法找到相关信息后,继续到后端存储集群查找;应用程序发起写请求时,api网关处理请求并写入日志文件系统,等事务完成时再Flush进后端存储集群。本发明能够大幅降低延时。(The invention discloses a method for caching read and write data in a storage cluster in a grading way, which relates to the technical field of cloud computing and is realized based on a back-end storage cluster, a first-level cache, a second-level cache, an api gateway, a log file system and an application program. When an application program initiates a read request, an api gateway processes the request and issues the request to a second-level cache, the second-level cache searches for a relevant segment and locates the relevant segment to a pool, or if the relevant segment is not found, further initiates a segment missing request to the first-level cache, and continues to a rear-end storage cluster for searching after the relevant information cannot be found; when the application program initiates a write request, the api gateway processes the request and writes the request into a log file system, and then Flush the request into the back-end storage cluster after the transaction is completed. The invention can greatly reduce the time delay.)

一种存储集群中分级缓存读写数据的方法

技术领域

本发明涉及云计算存储技术领域,具体的说是一种存储集群中分级缓存读写数据的方法。

背景技术

在云计算环境中,通常存储集群会为计算集群和控制节点提供所有的存储服务,这些存储集群中的数据有时候会非常无序且海量,当管理或租户侧程序发起数据请求时(如创建指定镜像规格的虚拟机或者调取指定节点的监控数据抑或请求文件流服务),每次都会与后端主存储节点交互,后端主存储节点通常采用SATA Cluster,在高并发I/O情况下,这些SATA Cluster在读写速度并不高,会影响整个云管理操作的性能。

发明内容

本发明针对目前技术发展的需求和不足之处,提供一种存储集群中分级缓存读写数据的方法,以大幅降低延时,提升云管理的性能体验。

本发明的一种存储集群中分级缓存读写数据的方法,解决上述技术问题采用的技术方案如下:

一种存储集群中分级缓存读写数据的方法,其实现基于后端存储集群、第一级缓存、第二级缓存、api网关、日志文件系统和应用程序,其中:

后端存储集群管理原始数据,

第一级缓存存储动态变化的热点数据,并依据进程的pid和业务属性将热点数据划分为不同的pool,pool内以对象为单位存储,

第二级缓存将第一级缓存的pool数据按照索引抽成段Segment,进而以段Segment的形式保存,

api网关作为所有请求的流量入口,统一处理请求、合并相同的请求数据,

日志文件系统存储写请求发生时的数据;

在应用程序发起读请求时,api网关统一处理收到的请求并发布到第二级缓存中,第二级缓存根据请求查找段Segment,找到相关段Segment后,定位到第一级缓存的pool,或者,没有找到相关段Segment,进一步向第一级缓存发起缺段请求,在第一级缓存中仍无法找到相关信息后,继续到后端存储集群查找;

在应用程序发起写请求时,api网关统一处理收到的请求并采用WAL方式写入日志文件系统,等事务完成时再Flush进后端存储集群。

进一步的,所涉及第一级缓存中定义有第一后台线程,在pool的存储空间不够时,第一后台线程选择pool内的脏对象并刷到后端存储集群,或者/同时,第一后台线程剔除第一级缓存的clean对象,以释放更多的存储空间。

进一步的,所涉及第二级缓存中定义有第二后台线程,第二后台线程用于定时清理第二级缓存的脏数据。

进一步的,所涉及第二级缓存将pool数据按照索引抽成的段Segment只存储pool数据的索引和地址;每个段Segment具有动态可变的长度,每个段Segment的长度基于第二级缓存的闪存空间进行自由调度。

优选的,所涉及原始数据不限于包括环境部署时初始化的数据、通过存储介质写入的元数据、运行过程中产生的生产数据和监控数据;

热点数据不限于包括虚拟机镜像相关数据、近一段时间的监控告警数据。

优选的,所涉及后端存储集群采用SATA Cluster作为存储介质,通过ceph集群或GlusterFS集群管理原始数据。

优选的,所涉及第一级缓存采用SSD Cluster。

优选的,所涉及第二级缓存采用NAND或SCM闪存阵列。

优选的,所涉及第一级缓存与后端存储集群的总容量比值为1:100,所涉及第二级缓存与第一级缓存的总容量比值为1:10。

进一步的,所涉及第一级缓存作为cache,根据数据块的大小和召回概率确定数据块的公式取决于性能目标,性能目标包括最大化cache命中率,最小化平均响应时间以及最小化由于cache未命中而必须暂存到cache中的数据量;

当性能目标是最大化cache命中率时,用于确定数据块q值的公式为q=r(x,s,A)/s;

当性能目标是最小化平均响应时间时,用于确定数据块q值的公式为q=(((α+βs)*r(x,s,A))/s,以α+βs来表示未命中损失,即cache未命中的响应时间超过cache命中的响应时间;

当性能目标是最小化由于cache未命中而必须暂存到cache中的数据量时,用于确定数据块q值的公式为q=r(x,s,A);

上述公式中,s是数据块的大小,x是数据块的未引用时间间隔,A代表用于估计数据块的召回概率的辅助参数,r(x,s,A)是数据块作为x,s和A的函数的召回概率,α和β是常数。

本发明的一种存储集群中分级缓存读写数据的方法,与现有技术相比具有的有益效果是:

本发明在后端存储集群和api网关之间增设两级缓存后,能够大幅降低延时,提升云管理性能体验。

附图说明

附图1是本发明实施例一的方法实现框架图;

附图2是本发明实施例一的方法流程图。

附图中各标号信息表示:

L1表示第一级缓存,L2表示第二级缓存。

具体实施方式

为使本发明的技术方案、解决的技术问题和技术效果更加清楚明白,以下结合具体实施例,对本发明的技术方案进行清楚、完整的描述。

实施例一:

参考附图1,本实施例提出一种存储集群中分级缓存读写数据的方法,其实现基于后端存储集群、第一级缓存L1、第二级缓存L2、api网关、日志文件系统和应用程序application。

后端存储集群采用SATA Cluster作为存储介质,通过ceph集群管理原始数据,原始数据不限于包括环境部署时初始化的数据、通过存储介质写入的元数据、运行过程中产生的生产数据和监控数据。

第一级缓存L1采用SSD Cluster,用于存储动态变化的热点数据,并依据进程的pid和业务属性将热点数据划分为不同的pool。其中,pool内以对象为单位存储,热点数据不限于包括虚拟机镜像相关数据、近一段时间的监控告警数据。

第二级缓存L2采用NAND闪存阵列,将第一级缓存L1的pool数据按照索引抽成段Segment,进而以段Segment的形式保存。抽成的段Segment只存储pool数据的索引和地址,每个段Segment具有动态可变的长度,每个段Segment的长度基于第二级缓存L2的闪存空间进行自由调度。

api网关作为所有请求的流量入口,统一处理请求、合并相同的请求数据。

日志文件系统存储写请求发生时的数据。

本实施例中,第一级缓存作为cache,根据数据块的大小和召回概率确定数据块的公式取决于性能目标,性能目标包括最大化cache命中率,最小化平均响应时间以及最小化由于cache未命中而必须暂存到cache中的数据量。

(Ⅰ)当性能目标是最大化cache命中率时,用于确定数据块q值的公式为q=r(x,s,A)/s;

(Ⅱ)当性能目标是最小化平均响应时间时,用于确定数据块q值的公式为q=(((α+βs)*r(x,s,A))/s,以α+βs来表示未命中损失,即cache未命中的响应时间超过cache命中的响应时间;

(Ⅲ)当性能目标是最小化由于cache未命中而必须暂存到cache中的数据量时,用于确定数据块q值的公式为q=r(x,s,A);

上述公式中,s是数据块的大小,x是数据块的未引用时间间隔,A代表用于估计数据块的召回概率的辅助参数,r(x,s,A)是数据块作为x,s和A的函数的召回概率,α和β是常数。

本实施例中,参考附图2,基于后端存储集群、第一级缓存L1、第二级缓存L2、api网关、日志文件系统,

(1)在应用程序application发起读请求时,api网关统一处理收到的请求并发布到第二级缓存L2中,第二级缓存L2根据请求查找段Segment,找到相关段Segment后,定位到第一级缓存L1的pool,或者,没有找到相关段Segment,进一步向第一级缓存L1发起缺段请求,在第一级缓存L1中仍无法找到相关信息后,继续到后端存储集群查找.

(2)在应用程序application发起写请求时,api网关统一处理收到的请求并采用WAL方式写入日志文件系统,等事务完成时再Flush进后端存储集群。

本实施例中,第一级缓存L1与后端存储集群的总容量比值为1:100。

本实施例中,第二级缓存L2与第一级缓存L1的总容量比值为1:10。

实施例二:

参考附图1,本实施例提出一种存储集群中分级缓存读写数据的方法,其实现基于后端存储集群、第一级缓存L1、第二级缓存L2、api网关、日志文件系统和应用程序application。

后端存储集群采用SATA Cluster作为存储介质,通过ceph集群管理原始数据,原始数据不限于包括环境部署时初始化的数据、通过存储介质写入的元数据、运行过程中产生的生产数据和监控数据。

第一级缓存L1采用SSD Cluster,用于存储动态变化的热点数据,并依据进程的pid和业务属性将热点数据划分为不同的pool。其中,pool内以对象为单位存储,热点数据不限于包括虚拟机镜像相关数据、近一段时间的监控告警数据。第一级缓存L1中定义有第一后台线程,在pool的存储空间不够时,第一后台线程选择pool内的脏对象并刷到后端存储集群,或者/同时,第一后台线程剔除第一级缓存L1的clean对象,以释放更多的存储空间。

第二级缓存L2采用SCM闪存阵列,将第一级缓存L1的pool数据按照索引抽成段Segment,进而以段Segment的形式保存。抽成的段Segment只存储pool数据的索引和地址,每个段Segment具有动态可变的长度,每个段Segment的长度基于第二级缓存L2的闪存空间进行自由调度。第二级缓存L2中定义有第二后台线程,第二后台线程用于定时清理第二级缓存L2的脏数据。

api网关作为所有请求的流量入口,统一处理请求、合并相同的请求数据。

日志文件系统存储写请求发生时的数据。

本实施例中,第一级缓存作为cache,根据数据块的大小和召回概率确定数据块的公式取决于性能目标,性能目标包括最大化cache命中率,最小化平均响应时间以及最小化由于cache未命中而必须暂存到cache中的数据量。

(Ⅰ)当性能目标是最大化cache命中率时,用于确定数据块q值的公式为q=r(x,s,A)/s;

(Ⅱ)当性能目标是最小化平均响应时间时,用于确定数据块q值的公式为q=(((α+βs)*r(x,s,A))/s,以α+βs来表示未命中损失,即cache未命中的响应时间超过cache命中的响应时间;

(Ⅲ)当性能目标是最小化由于cache未命中而必须暂存到cache中的数据量时,用于确定数据块q值的公式为q=r(x,s,A);

上述公式中,s是数据块的大小,x是数据块的未引用时间间隔,A代表用于估计数据块的召回概率的辅助参数,r(x,s,A)是数据块作为x,s和A的函数的召回概率,α和β是常数。

本实施例中,参考附图2,基于后端存储集群、第一级缓存L1、第二级缓存L2、api网关、日志文件系统,

(1)在应用程序application发起读请求时,api网关统一处理收到的请求并发布到第二级缓存L2中,第二级缓存L2根据请求查找段Segment,找到相关段Segment后,定位到第一级缓存L1的pool,或者,没有找到相关段Segment,进一步向第一级缓存L1发起缺段请求,在第一级缓存L1中仍无法找到相关信息后,继续到后端存储集群查找.

(2)在应用程序application发起写请求时,api网关统一处理收到的请求并采用WAL方式写入日志文件系统,等事务完成时再Flush进后端存储集群。

本实施例中,第一级缓存L1与后端存储集群的总容量比值为1:100。

本实施例中,第二级缓存L2与第一级缓存L1的总容量比值为1:10。

实施例三:

在实施例一或实施例二结构基础上,还可以用GlusterFS集群代替ceph集群。

综上可知,采用本发明的一种存储集群中分级缓存读写数据的方法,可以通过增设的两级缓存大幅降低延时,提升云管理性能体验。

以上应用具体个例对本发明的原理及实施方式进行了详细阐述,这些实施例只是用于帮助理解本发明的核心技术内容。基于本发明的上述具体实施例,本技术领域的技术人员在不脱离本发明原理的前提下,对本发明所作出的任何改进和修饰,皆应落入本发明的专利保护范围。

9页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:包括安全可修补ROM的半导体装置及其修补方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类