基于多级缓存的数据处理方法及系统

文档序号:1861084 发布日期:2021-11-19 浏览:21次 >En<

阅读说明:本技术 基于多级缓存的数据处理方法及系统 (Data processing method and system based on multi-level cache ) 是由 蔡尚志 王盛 于 2021-08-20 设计创作,主要内容包括:本申请实施例公开了一种基于多级缓存的数据处理方法,用于服务器中,其中,所述服务器包括第一级缓存和第二级缓存,所述第一级缓存包括多个第一类存储节点,所述第二级缓存包括多个第二类存储节点;所述数据处理方法包括:响应于读取请求,通过当前哈希环选择一个目标节点;判断所述目标节点是否是所述多个第一类存储节点中的任意一个;及若所述目标节点不是所述多个第一类存储节点中的任意一个,则从所述多个第二类存储节点中读取用于响应所述读取请求的响应数据,并返回所述响应数据。本申请实施例提供的技术方案,可以提高所述读取请求的响应速度和降低第一级缓存的压力。(The embodiment of the application discloses a data processing method based on multi-level cache, which is used in a server, wherein the server comprises a first-level cache and a second-level cache, the first-level cache comprises a plurality of first-type storage nodes, and the second-level cache comprises a plurality of second-type storage nodes; the data processing method comprises the following steps: responding to the reading request, and selecting a target node through the current hash ring; judging whether the target node is any one of the plurality of first-class storage nodes; and if the target node is not any one of the plurality of first-class storage nodes, reading response data for responding to the reading request from the plurality of second-class storage nodes, and returning the response data. According to the technical scheme provided by the embodiment of the application, the response speed of the reading request can be improved, and the pressure of the first-level cache can be reduced.)

基于多级缓存的数据处理方法及系统

技术领域

本申请涉及计算机技术领域,尤其涉及一种基于多级缓存的数据处理方法、系统、计算机设备和计算机可读存储介质。

背景技术

随着互联网和计算机技术的发展,数据规模越来越大。为应对大规模的数据写入或读取,人们开始使用多级缓存技术,将不同访问频次的数据存储在不同层级缓存中。鉴于访问频次、读写速度和存储设备成本等因素,不同层级缓存一般采用不同类型的存储设备。本发明人发现,当前多级缓存容易造成性能浪费。

发明内容

本申请实施例的目的是提供一种基于多级缓存的数据处理方法、系统、计算机设备及计算机可读存储介质,用于解决以下问题:当前多级缓存容易造成性能浪费。

本申请实施例的一个方面提供了一种基于多级缓存的数据处理方法,用于服务器中,其中,所述服务器包括第一级缓存和第二级缓存,所述第一级缓存包括多个第一类存储节点,所述第二级缓存包括多个第二类存储节点;所述数据处理方法包括:

响应于读取请求,通过当前哈希环选择一个目标节点;

判断所述目标节点是否是所述多个第一类存储节点中的任意一个;及

若所述目标节点不是所述多个第一类存储节点中的任意一个,则从所述多个第二类存储节点中读取用于响应所述读取请求的响应数据,并返回所述响应数据。

可选的,还包括:以预设频率更新所述当前哈希环。

可选的,所述当前哈希环为第一哈希环;

所述以预设频率更新所述当前哈希环,包括:

根据各个第一类存储节点的当前状态,将所述当前哈希环从所述第一哈希环更新为第二哈希环。

可选的,所述各个第一类存储节点的当前状态包括所述各个第一类存储节点的当前磁盘状态值;

所述根据各个第一类存储节点的当前状态,将所述当前哈希环从所述第一哈希环更新为第二哈希环,包括:

构造一个新哈希环;

根据所述新哈希环和所述各个第一类存储节点的当前磁盘状态值,生成所述第二哈希环;及

将所述当前哈希环从所述第一哈希环更新为所述第二哈希环。

可选的,所述获取所述各个第一类存储节点的当前磁盘状态值,包括:

根据所述各个第一类存储节点的IO队列和请求延时,获取所述各个第一类存储节点的当前磁盘状态值。

可选的,所述根据所述各个第一类存储节点的IO队列和请求延时,获取所述各个第一类存储节点的当前磁盘状态值,包括:

判断第i个存储节点的IO队列的数量是否大于第一预设值;其中,所述第i个存储节点为所述多个第一类存储节点中任意一个存储节点,1≤i≤M,i为整数,M为所述多个第一类存储节点的数量;

若所述第i个存储节点的IO队列的数量大于所述第一预设值,则对所述第i个存储节点的当前磁盘状态值自减1;

若所述第i个存储节点的IO队列的数量不大于所述第一预设值,则获取所述第i个存储节点的请求延时;

若所述第i个存储节点的请求延时大于所述第二预设值,则对所述第i个存储节点的当前磁盘状态值自减1;

若所述第i个存储节点的请求延时不大于所述第二预设值,则对所述第i个存储节点的当前磁盘状态值增1。

可选的,所述根据所述新哈希环和所述各个第一类存储节点的当前磁盘状态值,生成所述第二哈希环,包括:

根据第i个存储节点的当前磁盘状态值,将所述第i个存储节点的节点信息分别插入到所述新哈希的N个位置处,所述N的值等于所述第i个存储节点的当前磁盘状态值;其中,所述第i个存储节点为所述多个第一类存储节点中任意一个存储节点,1≤i≤M,i为整数,M为所述多个第一类存储节点的数量。

可选的,其特征在于,所述服务器还包括内存;所述响应于读取请求,通过当前哈希环选择一个目标节点,包括:

根据所述读取请求,确定所述内存中是否有所述响应数据;及

如果所述内存中没有所述响应数据,则通过所述当前哈希环确定所述目标节点。

可选的,其特征在于,还包括:

若所述目标节点是所述第一类存储节点,则确定所述目标节点中是否有所述响应数据;

若所述目标节点中有所述响应数据,则从所述目标节点中读取所述响应数据;

若所述目标节点中没有所述响应数据,则从所述第二级缓存中读取所述响应数据。

可选的,所述多个第一类存储节点对应为多个SSD磁盘;所述多个第二类存储节点对应为多个HDD磁盘。

本申请实施例的一个方面又提供了一种基于多级缓存的数据处理系统,用于服务器中,其中,所述服务器包括第一级缓存和第二级缓存,所述第一级缓存包括多个第一类存储节点,所述第二级缓存包括多个第二类存储节点;所述数据处理系统包括:

选择模块,用于响应于读取请求,通过当前哈希环选择一个目标节点;

判断模块,用于判断所述目标节点是否是所述多个第一类存储节点中的任意一个;及

返回模块,用于若所述目标节点不是所述多个第一类存储节点中的任意一个,则从所述多个第二类存储节点中读取用于响应所述读取请求的响应数据,并返回所述响应数据。

本申请实施例的一个方面又提供了一种计算机设备,所述计算机设备包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时用于实现如上述基于多级缓存的数据处理方法的步骤。

本申请实施例的一个方面又提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序可被至少一个处理器所执行,以使所述至少一个处理器执行如上述基于多级缓存的数据处理方法的步骤。

本申请实施例提供的基于多级缓存的数据处理方法、系统、设备及计算机可读存储介质:

若所述目标节点不是所述多个第一类存储节点中的任意一个,则说明大概出现以下情况:在所述当前哈希环中的占位节点(无效节点)占据的位置偏多,所述多个第一类存储节点占据的位置偏少,即说明此时所述第一级缓存基于比较忙碌的状态。因此,在此时将所述读取请求导向到所述第二级缓存中,由所述第二级缓存进行响应,而不是让读取请求进入所述第一级缓存的队列中进行排队。本实施例所述的方案,可以提高所述读取请求的响应速度和降低第一级缓存的压力。

附图说明

图1示意性示出了根据本申请实施例的基于多级缓存的数据处理方法的应用环境图;

图2示意性示出了根据本申请实施例一的基于多级缓存的数据处理方法的流程图;

图3示意性示出了根据本申请实施例一的基于多级缓存的数据处理方法的新增步骤流程图;

图4示意性示出了图3中的步骤S300的子步骤图;

图5示意性示出了图4中的步骤S402的子步骤图;

图6示意性示出了图5中的步骤S500的子步骤图;

图7示意性示出了图4中的步骤S404的子步骤图;

图8示意性示出了图2中的步骤S200的子步骤图;

图9示意性示出了根据本申请实施例一的基于多级缓存的数据处理方法的新增步骤流程图;

图10示意性示出了的基于多级缓存的数据处理方法的应用示例的步骤流程图;

图11示意性示出了图10中的哈希环的更新流程图;

图12示意性示出了图11中的哈希环更新的子步骤流程图;

图13示意性示出了图12中的计算磁盘状态值的子步骤流程图;

图14示意性示出了根据本申请实施例二的基于多级缓存的数据处理系统的框图;及

图15示意性示出了根据本申请实施例三的适于实现基于多级缓存的数据处理方法的计算机设备的硬件架构示意图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

需要说明的是,在本申请实施例中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本申请要求的保护范围之内。

在本申请的描述中,需要理解的是,步骤前的数字标号并不标识执行步骤的前后顺序,仅用于方便描述本申请及区别每一步骤,因此不能理解为对本申请的限制。

以下为本申请的术语解释:

CDN(Content Delivery Network,内容分发网络)服务器,为部署在各地的边缘服务器。CDN服务器可以通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。

SSD(Solid State Disk或Solid State Drive):一般指固态硬盘。

HDD(Hard Disk Drive):一般指机械硬盘。

一致性哈希/哈希环:是一种特殊的哈希算法,目的是解决分布式缓存的问题。在移除或者添加一个服务器时,能够尽可能小地改变已存在的服务请求与处理请求服务器之间的映射关系。哈希环可表示分布式缓存的磁盘结构或磁盘映射。

占位值:占了一致性哈希环的一个节点,表示空值或者无效值,用来将溢出流量导到HDD盘中。

Q值:IO队列的上限值(一般为128)。

L值:一个读/写磁盘任务的延时上限,一般认为超过这个值会影响用户体验(一般为500毫秒)。

99分位:数据排序中在99%位置上的数值。

IO队列:磁盘当前正在执行的任务队列。

随着互联网和计算机技术的发展,数据规模越来越大。为应对大规模的数据写入或读取,人们开始使用多级缓存技术,将不同访问频次的数据存储在不同层级缓存中。鉴于访问频次、读写速度和存储设备成本等因素,不同层级缓存一般采用不同类型的存储设备。本发明人发现,当前多级缓存容易造成性能浪费。

以本发明人了解的三级缓存为例,其包括:内存、SSD层和HDD层。

响应一个访问请求的流程如下:遍历内存查询响应数据,在内存查询失败的情况下则遍历SSD层找到响应数据,在SSD层查询失败的情况下则查询HDD层。

上述流程有以下问题:

组合出的HDD层和组合出的SSD层性能比例存在不确定性。导致不确定的因素如下:HDD磁盘数量远多于SSD磁盘数量、故障导致部分SSD磁盘被下掉、磨损导致SSD磁盘的性能下降以及数据经过精心排布的HDD层的性能并不弱于甚至强于SSD层的性能。SSD层溢出的流量将排队等待前面的任务完成,而如果设置的超时小于等待加上执行的时间,将导致SSD层的性能浪费,影响用户体验。

有鉴于此,本申请旨在提供基于多级缓存的数据处理技术。具体的,可以根据SSD层的状态,动态调整请求到SSD层的流量,从而使服务质量得到保障。例如,通过周期检测各个SSD磁盘的IO队列和请求延时计算出各个SSD磁盘的当前状态,以此来调整SSD磁盘的一致性哈希环(即生成新哈希环,替换旧哈希环),并利用新哈希环来进行缓存控制,达到控制SSD层的请求流量占比。

图1示意性示出了根据本申请实施例一的基于多级缓存的数据处理方法的环境应用示意图。如图所示,移动终端2可以通过有一个或多个网络访问CDN服务器4。

移动终端2可以是任意类型的计算设备,诸如智能手机、平板设备、膝上型计算机等。移动终端2可以通过浏览器或专门程序访问服务器4获取内容并给用户呈现所述内容。所述内容可以包括视频,音频,评论,文本数据和/或类似物。

所述一个或多个网络包括各种网络设备,例如路由器,交换机,多路复用器,集线器,调制解调器,网桥,中继器,防火墙,代理设备和/或类似。一个或多个网络可以包括物理链路,例如同轴电缆链路,双绞线电缆链路,光纤链路,其组合等。网络可以包括无线链路,诸如蜂窝链路,卫星链路,Wi-Fi链路等。

所述CDN服务器4可以被配置为多级缓存,如:

二级缓存,其可以包括HDD层和SSD层。

三级缓存,其可以包括HDD层、SSD层和内存。

本申请提供了多个实施例介绍基于多级缓存的数据处理技术,具体参照下文。

实施例一

本实施例一提供了一种基于多级缓存的数据处理方法,该方法可执行在服务器中(如CDN服务器4)中。所述服务器包括第一级缓存和第二级缓存,所述第一级缓存包括多个第一类存储节点,所述第二级缓存包括多个第二类存储节点。

作为示例,所述第一级缓存和所述第二级缓存提供差异化服务。为提高服务效率和质量,相对于所述第二级缓存,所述第一级缓存可以优先缓存较高访问频次的数据。相应的,第一类存储节点和第二级存储节点提供差异化读写性能。例如:

所述多个第一类存储节点对应为多个SSD磁盘;

所述多个第二类存储节点对应为多个HDD磁盘。

图2示意性示出了根据本申请实施例一的基于多级缓存的数据处理方法的流程图。如图2所示,该基于多级缓存的数据处理方法可以包括步骤S200~S204,其中:

步骤S200,响应于读取请求,通过当前哈希环选择一个目标节点。

用户可以通过移动终端向所述服务器发送所述读取请求,以从所述服务器获取相应的数据。举例来说,可以向所述服务器请求获取用户数据、视频,以及文本等。

作为示例,通过当前哈希环选择一个目标节点,可以通过如下步骤实现:(1)获取所述请求文件的资源标识;(2)根据所述资源标识和预设哈希算法进行计算,得到哈希值;(3)根据所述哈希值在所述当前哈希环确定所述目标节点。

在本实施例中,各个第一类存储节点的存储信息被插入并更新到所述当前哈希环中。因此,所述当前哈希环可以表所述各个第一类存储节点当前的磁盘映射。

具体的,所述当前哈希环对应占位节点和各个第一类存储节点。每个第一存储节点可以占用所述当前哈希环的其中一个位置(哈希槽),可能同时占用多个位置,当然也可能没有占用任何位置。没有占用任何位置的第一类存储节点不在所述当前哈希环上。占用位置越多的第一类存储节点,则选中的概率越大。

步骤S202,判断所述目标节点是否是所述多个第一类存储节点中的任意一个。

如前文所述,所述当前哈希环对应有占位节点。所述占位节点为无效节点,其占位值为空值或无效值,用于将溢出流量(部分读取请求)导向所述第二级缓存。

步骤S204,若所述目标节点不是所述多个第一类存储节点中的任意一个,则从所述多个第二类存储节点中读取用于响应所述读取请求的响应数据,并返回所述响应数据。

若所述目标节点不是所述多个第一类存储节点中的任意一个,则可以说明所述目标节点为占位节点,因此可以将所述读取请求导向到所述第二级缓存中。所述第二级缓存会根据所述读取请求,查询其内部是否有所述响应数据。如果有所述响应数据,则返回给移动终端。如果没有所述响应数据,则返回失败或空白信息,或在所述服务器配置有第三级缓存的情况下将所述读取请求导入第三级缓存。

本实施例提供的基于多级缓存的数据处理方法:

若所述目标节点不是所述多个第一类存储节点中的任意一个,则说明大概出现以下情况:在所述当前哈希环中的占位节点占据的位置偏多,所述多个第一类存储节点占据的位置偏少,即说明此时所述第一级缓存基于比较忙碌的状态。因此,在此时将所述读取请求导向到所述第二级缓存中,由所述第二级缓存进行响应,而不是让读取请求进入所述第一级缓存的队列中进行排队。本实施例所述的方法,可以提高所述读取请求的响应速度和降低第一级缓存的压力。

本实施例尤其适用于以下情况:

组合出的第二级缓存和组合出的第一级缓存性能比例存在不确定性。导致不确定的因素如下:第二级缓存的磁盘数量远多于第一级缓存的磁盘数量、因为故障导致部分第一类存储节点被剔除、因磨损导致部分第一类存储节点的性能下降,以及数据经过精心排布的第二级缓存的性能并不弱于甚至强于第一级缓存的性能。

在该种情况下,若第一级缓存层忙碌时,读取请求仍然排队等待前面的任务完成,并在前面的任务完成之后,由第一级缓存查询和响应,无疑会降低响应速度。

面对这种情况,可以直接导入到第二级缓存中,由第二级缓存快速响应。

需要说明的是,本实施例是在确定目标节点不是第一级缓存中的任意一个第一类存储节点的情况下,才将读取请求导入到第二级缓存中,从而避免第一级缓存的性能浪费。例如以下这种方式导致的性能浪费:设置导入第二级缓存的超时时间,该超时时间可能小于等待加上执行的时间,导致第一级缓存层的性能浪费。

以下提供一些可选方案。

作为示例,所述方法还可以包括:以预设频率更新所述当前哈希环。在本实施例中,通过周期性地更新所述当前哈希环,得到所述第一级缓存中各个第一类存储节点的最新情况,提高选择的有效性。举例来说,越空闲的第一类存储节点,在所述当前哈希环中的占位增加,从而越容易在被选中。相应的,越忙碌的存第一类储节点,在所述当前哈希环中的占位减少,从而越难在被选中。

作为示例,所述当前哈希环为第一哈希环。如图3所示,所述以预设频率更新所述当前哈希环,可以通过以下操作实现:步骤S300,根据各个第一类存储节点的当前状态,将所述当前哈希环从所述第一哈希环更新为第二哈希环。本实施例中,所述当前状态可以为表示相应第一类存储节点的工作状态,更新所述当前哈希环,即:根据各个第一类存储节点的工作状态更新各个第一类存储节点被选中的概率。

作为示例,所述各个第一类存储节点的当前状态包括所述各个第一类存储节点的当前磁盘状态值。各个第一类存储节点的磁盘状态值,在服务器启动服务时可以为初始值50或其他值。如图4所示,所述根据各个第一类存储节点的当前状态,将所述当前哈希环从所述第一哈希环更新为第二哈希环,可以通过如下操作实现:步骤S400,构造一个新哈希环;步骤S402,获取所述各个第一类存储节点的当前磁盘状态值;步骤S404,根据所述新哈希环和所述各个第一类存储节点的当前磁盘状态值,生成所述第二哈希环;及步骤S406,将所述当前哈希环从所述第一哈希环更新为所述第二哈希环。需要说明的是,所述新哈希环还插入有占位值在执行步骤S400之后。本实施例中,可以有效地构建完成一个新哈希环,以便能够根据实际情况更加有效地选择目标节点。

作为示例,如图5所示,所述获取所述各个第一类存储节点的当前磁盘状态值,可以通过如下操作实现:步骤S500,根据所述各个第一类存储节点的IO队列和请求延时,获取所述各个第一类存储节点的当前磁盘状态值。本实施例中,可以基于IO队列、请求延时等确定各个第一类存储节点的工作状态(如,是否处于忙碌状态),从而更有效地更新各个第一类存储节点的当前磁盘状态值,得到更加有效的新哈希环(即,第二哈希环),保障第二哈希环的有效性,提升响应效率。

作为示例,如图6所示,所述根据所述各个第一类存储节点的IO队列和请求延时,获取所述各个第一类存储节点的当前磁盘状态值,可以通过如下操作实现:步骤S600,判断第i个存储节点的IO队列的数量是否大于第一预设值;其中,所述第i个存储节点为所述多个第一类存储节点中任意一个存储节点,1≤i≤M,i为整数,M为所述多个第一类存储节点的数量;步骤S602,若所述第i个存储节点的IO队列的数量大于所述第一预设值,则对所述第i个存储节点的当前磁盘状态值自减1;步骤S604,若所述第i个存储节点的IO队列的数量不大于所述第一预设值,则获取所述第i个存储节点的请求延时;步骤S606,若所述第i个存储节点的请求延时大于所述第二预设值,则对所述第i个存储节点的当前磁盘状态值自减1;步骤S608,若所述第i个存储节点的请求延时不大于所述第二预设值,则对所述第i个存储节点的当前磁盘状态值增1。在本实施例中,若所述第i个存储节点的初始磁盘状态被设置为50,则所述第一预设值可以为100,第二预设值可以为0。基于上文内容,当前哈希环的每次更新,所述第i个存储节点的当前磁盘状态值可能自增1、自减1或不变。这个自增或自减在上一个周期的磁盘状态值的基础上进行的。由于这种基于上一周期的渐进式调整,确保了当前哈希环的稳定性和数据处理稳定性。

作为示例,如图7所示,所述根据所述新哈希环和所述各个第一类存储节点的当前磁盘状态值,生成所述第二哈希环,可以通过如下操作实现:步骤S700,根据第i个存储节点的当前磁盘状态值,将所述第i个存储节点的节点信息分别插入到所述新哈希的N个位置处,所述N的值等于所述第i个存储节点的当前磁盘状态值;其中,所述第i个存储节点为所述多个第一类存储节点中任意一个存储节点,1≤i≤M,i为整数,M为所述多个第一类存储节点的数量。本实施例中,第i个存储节点的当前磁盘状态值越大,说明第i个存储节点越空闲,因此,第i个存储节点在所述哈希环中占据更多的位置。当接收到一个读取请求时,第i个存储节点则更容易被选中,以充分被用于提供响应服务。

作为示例,所述服务器配配置有三级缓存,即包括内存、第一级缓存、第二级缓存。如图8所示,所述响应于读取请求,通过当前哈希环选择一个目标节点,可以通过如下操作实现:步骤S800,根据所述读取请求,确定所述内存中是否有所述响应数据;及步骤S802,如果所述内存中没有所述响应数据,则通过所述当前哈希环确定所述目标节点。在本实施例中,可以将最高访问频次的数据存储于所述内存中,以使本服务器能够更快地响应用户的读取请求。

作为示例,如图9所示,所述方法还可以包括:步骤S900,若所述目标节点是所述第一类存储节点,则确定所述目标节点中是否有所述响应数据;步骤S902,若所述目标节点中有所述响应数据,则从所述目标节点中读取所述响应数据;步骤S904,若所述目标节点中没有所述响应数据,则从所述第二级缓存中读取所述响应数据。在本实施例中,在目标节点没有所述响应数据的情形下,将所述读取请求导入到第二级缓存中,有第二级缓存进行响应,以满足用于需求,提高用户体验。

为方便理解,以下结合图10提供一个应用示例:

该应用示例用于CDN服务器中,该CDN服务器包括内存、SSD层、HDD层。其中,内存可以包括具有高速存取性能的易失性存储介质,如RAM等介质。所述SSD层由多个SSD磁盘组合而成。所述SDD层由多个机械磁盘组合而成。

S1000:CDN服务器启动读写服务,并对所述SSD层的各个SSD磁盘进行初始化。

例如:可以在启动服务时将所述各个SSD磁盘的磁盘状态值设置为初始值50。需要说明的是,所述各个SSD磁盘的磁盘状态值可以作为后面更新哈希值的依据。

S1002:CDN服务器接收用户发送的读取请求。

S1004:CDN服务器根据所述读取请求,确定所述内存中是否有响应数据。若所述内存中是否有所述响应数据,则进入步骤S1006,否则进入步骤S1008。

S1006:从所述内存中读取所述响应数据,并将所述响应数据返回给用户。流程结束。

S1008:CDN服务器通过当前哈希环确定目标节点。

所述当前哈希环,用于表示CDN服务器的磁盘结构或磁盘映射。

S1010:CDN服务器判断所述目标节点是否是SSD磁盘。

如果是,进入步骤S1012,否则进入步骤S1016。

所述哈希环中包括占位节点,若所述目标节点为占位节点,则判定所述目标节点不是SSD磁盘。

S1012:CDN服务器判断所述目标节点是否有响应数据。

如果是,进入步骤S1014,否则进入步骤S1016。

S1014:CDN服务器从所述目标节点读取所述响应数据,并返回所述响应数据。流程结束。

S1016:CDN服务器查询HDD层是否有响应数据。

如果是,进入步骤S1018,否则返回响应失败,流程结束。

S1018:CDN服务器从HDD层读取所述响应数据,并返回所述响应数据。流程结束。

如图11所示,CDN服务器启动读写服务,当前哈希环以预设周期更新,操作如下:

S1100:将所述各个SSD磁盘的磁盘状态值设置为初始值50。

S1102:以预设周期更新一次哈希环,用于更新所述当前哈希环。

如图12所示,以所述当前哈希环的其中一次更新为例,其可以包括如下步骤:

S1200:构造一个新哈希环。

S1202:将一个占位值插入到该新哈希环。

S1204:获取SSD磁盘列表。

S1206:取第i个SSD磁盘,i的初始为1,i为正整数。

S1208:计算第i个SSD磁盘的磁盘状态值。

S1210:将第i个SSD磁盘的磁盘状态值赋值给k,k为变量。此处k值越大,表示第i个SSD磁盘的磁盘信息插入到这个新哈希环的次数越多,磁盘被选中的概率越大。

S1212:判断k是否大于0。若是,进入步骤S1214,否则进入步骤S1218。

S1214:将第i个SSD磁盘的磁盘信息(如磁盘标识等)插入到所述新哈希环中。

S1216:k自减1,并返回步骤S1212。

S1218:判断第i个SSD磁盘是否是SSD磁盘列表中的最后一个SSD磁盘。

如果不是,更新i值,并返回步骤S1206。如果是,则进入步骤S1220。

S1220:通过步骤S1206~S1218将所述SSD磁盘列表中的各个SSD磁盘的磁盘信息插入到所述新哈希环之后,将得到的最终的新哈希环(即第二哈希环),载入为当前哈希环。

如图13所示,步骤S1208中的计算第i个SSD磁盘的磁盘状态值,可以包括如下步骤:

S1300:获取第i个SSD磁盘的IO队列,如一段时间内的平均IO队列。

S1302:判断IO队列的数量是否大于Q值。Q值为预设设置的IO队列的上限值。

如果是,进入步骤S1310,否则进入步骤S1304。

S1304:获取第i个SSD磁盘的99分位延时。

S1306:判断第i个SSD磁盘的99分位延时是否大于L值。L值为预先设置的一个读/写磁盘任务的延时上限值。

如果是,进入步骤S1310,否则进入还S1308。

S1308:第i个SSD磁盘的磁盘状态值自增1,得到当前磁盘状态值。

需要说明的是,当前磁盘状态值的最大值为100。

S1310:第i个SSD磁盘的磁盘状态值自减1,得到当前磁盘状态值。

需要说明的是,当前磁盘状态值的最小值为0。

实施例二

图14示意性示出了根据本申请实施例二的基于多级缓存的数据处理系统的框图。该数据处理系统用于服务器中,所述服务器包括第一级缓存和第二级缓存,所述第一级缓存包括多个第一类存储节点,所述第二级缓存包括多个第二类存储节点。该基于多级缓存的数据处理系统可以被分割成一个或多个程序模块,一个或者多个程序模块被存储于存储介质中,并由一个或多个处理器所执行,以完成本申请实施例。本申请实施例所称的程序模块是指能够完成特定功能的一系列计算机程序指令段,以下描述将具体介绍本实施例中各程序模块的功能。

如图14所示,该基于多级缓存的数据处理系统1400可以包括选择模块1410、判断模块1420和返回模块1430,其中:

选择模块1410,用于响应于读取请求,通过当前哈希环选择一个目标节点;

判断模块1420,用于判断所述目标节点是否是所述多个第一类存储节点中的任意一个;及

返回模块1430,用于若所述目标节点不是所述多个第一类存储节点中的任意一个,则从所述多个第二类存储节点中读取用于响应所述读取请求的响应数据,并返回所述响应数据。

可选的,所述系统还包括哈希环更新模块(未图示),所述哈希环更新模块用于:以预设频率更新所述当前哈希环。

可选的,所述当前哈希环为第一哈希环;所述哈希环更新模块还用于:

根据各个第一类存储节点的当前状态,将所述当前哈希环从所述第一哈希环更新为第二哈希环。

可选的,所述各个第一类存储节点的当前状态包括所述各个第一类存储节点的当前磁盘状态值;所述哈希环更新模块还用于:

构造一个新哈希环;

将一个占位值插入到所述新哈希环中;

获取所述各个第一类存储节点的当前磁盘状态值;

根据所述新哈希环和所述各个第一类存储节点的当前磁盘状态值,生成所述第二哈希环;及

将所述当前哈希环从所述第一哈希环更新为所述第二哈希环。

可选的,所述哈希环更新模块还用于:

根据所述各个第一类存储节点的IO队列和请求延时,获取所述各个第一类存储节点的当前磁盘状态值。

可选的,所述哈希环更新模块还用于:

判断第i个存储节点的IO队列的数量是否大于第一预设值;其中,所述第i个存储节点为所述多个第一类存储节点中任意一个存储节点,1≤i≤M,i为整数,M为所述多个第一类存储节点的数量;

若所述第i个存储节点的IO队列的数量大于所述第一预设值,则对所述第i个存储节点的当前磁盘状态值自减1;

若所述第i个存储节点的IO队列的数量不大于所述第一预设值,则获取所述第i个存储节点的请求延时;

若所述第i个存储节点的请求延时大于所述第二预设值,则对所述第i个存储节点的当前磁盘状态值自减1;

若所述第i个存储节点的请求延时不大于所述第二预设值,则对所述第i个存储节点的当前磁盘状态值增1。

可选的,所述哈希环更新模块还用于:

根据第i个存储节点的当前磁盘状态值,将所述第i个存储节点的节点信息分别插入到所述新哈希的N个位置处,所述N的值等于所述第i个存储节点的当前磁盘状态值;其中,所述第i个存储节点为所述多个第一类存储节点中任意一个存储节点,1≤i≤M,i为整数,M为所述多个第一类存储节点的数量。

可选的,所述服务器还包括内存;所述选择模块1410还用于:

根据所述读取请求,确定所述内存中是否有所述响应数据;及

如果所述内存中没有所述响应数据,则通过所述当前哈希环确定所述目标节点。

可选的,所述返回模块1430还用于:

若所述目标节点是所述第一类存储节点,则确定所述目标节点中是否有所述响应数据;

若所述目标节点中有所述响应数据,则从所述目标节点中读取所述响应数据;

若所述目标节点中没有所述响应数据,则从所述第二级缓存中读取所述响应数据。

可选的,所述多个第一类存储节点对应为多个SSD磁盘;所述多个第二类存储节点对应为多个HDD磁盘。

实施例三

图15示意性示出了根据本申请实施例三的适于实现基于多级缓存的数据处理方法的计算机设备10000的硬件架构示意图。本实施例中,计算机设备10000可以为服务器4或者作为CDN服务器4的一部分。本实施例中,计算机设备10000是一种能够按照事先设定或者存储的指令,自动进行数值计算和/或信息处理的设备。例如,可以是机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括独立的服务器,或者多个服务器所组成的服务器集群)等。如图15所示,计算机设备10000至少包括但不限于:可通过系统总线相互通信链接存储器10010、处理器10020、网络接口10030。其中:

存储器10010至少包括一种类型的计算机可读存储介质,可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器10010可以是计算机设备10000的内部存储模块,例如该计算机设备10000的硬盘或内存。在另一些实施例中,存储器10010也可以是计算机设备10000的外部存储设备,例如该计算机设备10000上配备的插接式硬盘,智能存储卡(Smart Media Card,简称为SMC),安全数字(Secure Digital,简称为SD)卡,闪存卡(Flash Card)等。当然,存储器10010还可以既包括计算机设备10000的内部存储模块也包括其外部存储设备。本实施例中,存储器10010通常用于存储安装于计算机设备10000的操作系统和各类应用软件,例如基于多级缓存的数据处理方法的程序代码等。此外,存储器10010还可以用于暂时地存储已经输出或者将要输出的各类数据。

处理器10020在一些实施例中可以是中央处理器(Central Processing Unit,简称为CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器10020通常用于控制计算机设备10000的总体操作,例如执行与计算机设备10000进行数据交互或者通信相关的控制和处理等。本实施例中,处理器10020用于运行存储器10010中存储的程序代码或者处理数据。

网络接口10030可包括无线网络接口或有线网络接口,该网络接口10030通常用于在计算机设备10000与其他计算机设备之间建立通信链接。例如,网络接口10030用于通过网络将计算机设备10000与外部终端相连,在计算机设备10000与外部终端之间的建立数据传输通道和通信链接等。网络可以是企业内部网(Intranet)、互联网(Internet)、全球移动通讯系统(Global System of Mobile communication,简称为GSM)、宽带码分多址(Wideband Code Division Multiple Access,简称为WCDMA)、4G网络、5G网络、蓝牙(Bluetooth)、Wi-Fi等无线或有线网络。

需要指出的是,图15仅示出了具有部件10010-10030的计算机设备,但是应该理解的是,并不要求实施所有示出的部件,可以替代的实施更多或者更少的部件。

在本实施例中,存储于存储器10010中的基于多级缓存的数据处理方法还可以被分割为一个或者多个程序模块,并由一个或多个处理器(本实施例为处理器10020)所执行,以完成本申请实施例。

实施例四

本申请还提供一种计算机可读存储介质,计算机可读存储介质其上存储有计算机程序,计算机程序被处理器执行时实现实施例中的基于多级缓存的数据处理方法的步骤。

本实施例中,计算机可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,计算机可读存储介质可以是计算机设备的内部存储单元,例如该计算机设备的硬盘或内存。在另一些实施例中,计算机可读存储介质也可以是计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(Smart Media Card,简称为SMC),安全数字(Secure Digital,简称为SD)卡,闪存卡(Flash Card)等。当然,计算机可读存储介质还可以既包括计算机设备的内部存储单元也包括其外部存储设备。本实施例中,计算机可读存储介质通常用于存储安装于计算机设备的操作系统和各类应用软件,例如实施例中基于多级缓存的数据处理方法的程序代码等。此外,计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的各类数据。

显然,本领域的技术人员应该明白,上述的本申请实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请实施例不限制于任何特定的硬件和软件结合。

需要说明的是,本申请技术方案主要/特别针对基于DASH流媒体的Web播放器的优化。另外,以上仅为本申请的优选实施例,并非因此限制本申请的专利保护范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。

24页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:存储器系统

网友询问留言

已有0条留言

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

精彩留言,会给你点赞!

技术分类