CN108183947A - 分布式缓存方法及*** - Google Patents
分布式缓存方法及*** Download PDFInfo
- Publication number
- CN108183947A CN108183947A CN201711441564.9A CN201711441564A CN108183947A CN 108183947 A CN108183947 A CN 108183947A CN 201711441564 A CN201711441564 A CN 201711441564A CN 108183947 A CN108183947 A CN 108183947A
- Authority
- CN
- China
- Prior art keywords
- data
- cache
- node
- cache node
- hot spot
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/1008—Server selection for load balancing based on parameters of servers, e.g. available memory or workload
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/563—Data redirection of data network streams
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
- H04L67/63—Routing a service request depending on the request content or context
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明提供一种分布式缓存方法及***。该分布式缓存方法包括以下步骤:以键‑值格式将数据存储到缓存节点中,所述数据包括热点数据及非热点数据;在缓存客户端中缓存存储有热点数据的缓存节点信息;缓存客户端与存储有热点数据的缓存节点直接建立连接,以读取热点数据;缓存客户端向缓存服务代理发送操作请求,所述缓存服务代理根据预设的路由算法将缓存客户端的操作请求路由至相应的缓存节点,以读取非热点数据或向缓存节点写入数据,通过在缓存客户端中缓存存储有热点数据的缓存节点信息,以跳过缓存服务代理直接获取热点数据,能够提升数据访问的效率,保证缓存数据的一致性和可用性,提升硬件资源的利用率。
Description
技术领域
本发明涉及大数据技术领域,尤其涉及一种分布式缓存方法及***。
背景技术
互联网的飞速发展,带来了大数据时代,从而出现了各种各样的云计算服务,海量数据的存储和获取成为了一种重要的研究方向。其中,主要的方案就是文件存储在分布式文件***中,在此过程中,对于需要实时处理的应用中,文件的获取性能就成了一个巨大的挑战。
在云计算环境下,为了更好地应对海量数据与用户请求带来的挑战,解决传统数据库面临的大规模数据访问的瓶颈问题,分布式缓存得以引入,并成为云平台的重要组成部分。分布式缓存拉近了集群中对象数据与应用之间的距离,是云平台提升应用性能的一种重要手段。
在电信业务运营支撑***BOSS(Business&Operation Support System,BOSS)中,分布式缓存的应用具有更高的要求,具体体现在,首先,对于电信计费***来说,单笔计费的耗时有严格的要求,不同于其他交易类的活动,计费***从交换机采集到话单文件,到出计费清单、帐单做信控,全流程的耗时不得高于1秒,整个计费过程中,缓存操作部分大概会占用50%的耗时,也就是500毫秒,假设需要操作50次缓存对象,那么平均每次缓存对象操作的耗时要低于10毫秒,也就是说电信BOSS***中的分布式缓存需要具有低耗时;其次,随着业务量的发展,电信BOSS***经常需要进行数据扩容,数据扩容时,如何对数据重新分布,资源重新负载,是个关键问题,如果数据扩容过程中,对缓存***的整体性能影响过大,则会影响业务***的正常运行,因此,为提升缓存性能的整体性能,须采取有效的算法来完成数据重新分布,减少扩容过程的***开销,也就是说电信BOSS***中的分布式缓存需要在数据扩容过程中保持足够的性能进行正常运行;再次,传统缓存***以改进数据访问速度为主要目的,大多应用于页面缓存、处理缓存和数据对象缓存。而电信的BOSS***,不仅存储这些简单数据,还要存储客户资料、套餐定价等重要数据,对数据的一致性和可用性,有很高的要求,如果在扩容过程中,数据不可访问,或者数据不一致,则会影响业务***的正常运行,损害电信或客户的利益。因此,数据扩容过程中缓存服务的数据一致性、数据平衡以及持续可用性必须得到保障。
发明内容
本发明的目的在于提供一种分布式缓存方法,能够提升数据访问的效率,保证缓存数据的一致性和可用性,提升硬件资源的利用率。
本发明的目的还在于提供一种分布式缓存***,能够提升数据访问的效率,保证缓存数据的一致性和可用性,提升硬件资源的利用率。
为实现上述目的,本发明提供了一种分布式缓存方法,包括以下步骤:
以键-值格式将数据存储到缓存节点中,所述数据包括热点数据及非热点数据;
在缓存客户端中缓存存储有热点数据的缓存节点信息;
缓存客户端与存储有热点数据的缓存节点直接建立连接,以读取热点数据;
缓存客户端向缓存服务代理发送操作请求,所述缓存服务代理根据预设的路由算法将缓存客户端的操作请求路由至相应的缓存节点,以读取非热点数据或向缓存节点写入数据。
所述分布式缓存方法还包括:根据预设的均衡算法对各个缓存服务代理的负载进行均衡配置,以选中一个缓存服务代理处理当前待处理的操作请求;
所述预设的均衡算法包括:根据预设的负载权重公式计算各个缓存服务代理的负载权重;
将各个缓存服务代理的负载权重与其预设的负载权重阈值进行比较;
若所有缓存服务代理的负载权重的均小于其预设的负载权重阈值,则选定负载权重最小的一个缓存服务代理处理当前待处理的操作请求,否则,根据预设的负载率公式计算各个缓存服务代理的负载率,并选定负载率最低的一个缓存服务代理处理当前待处理的操作请求。
所述预设的路由算法包括:根据当前操作请求的键值查找自定义规则;
若查找到自定义规则,则根据自定义规则路由当前操作请求至相应的缓存节点;
若未查找到自定义规则,则根据预设的加权一致性哈希算法路由当前操作请求至相应的缓存节点。
所述缓存客户端根据LRU算法将缓存节点中存储的数据划分为热点数据和非热点数据,具体包括:
记录所有缓存节点被访问次数;
将被访问次数达到预设的次数阈值的缓存节点中保存的数据定义为热点数据,并将该缓存节点的信息保存在热点数据列表中;
按照访问时间的远近对热点数据列表中的缓存节点的信息进行排序,并在保存的缓存节点的信息的数量超出热点数据列表的容量时,淘汰访问时间最远的缓存节点的信息。
所述分布式缓存方法还包括:当缓存节点的数量发生变化时,对各个缓存节点中存储的数据进行数据迁移,以重新均衡各个缓存节点的负载;
在数据迁移过程中,按照如下方法访问缓存节点中的数据:
关闭缓存客户端的二级缓存,以暂停缓存客户端获取存储有热点数据的缓存节点的信息,阻止缓存客户端与存储有热点数据的缓存节点之间直接建立连接;
缓存客户端向缓存服务代理发送操作请求,所述缓存服务代理根据预设的路由算法将缓存客户端的操作请求路由至相应的缓存节点,以读取数据或向缓存节点写入数据;
其中,所述读取数据的步骤包括:所述缓存客户端先从迁入节点读取数据,若读取到数据则结束读取,若未读取到数据,则继续从迁出节点读取数据,若读取到数据则结束读取,若仍未读取到数据,则再一次从迁入节点读取数据,所述迁入节点为待读取的数据在数据迁移之前所在的缓存节点,所述迁出节点为待读取数据在数据迁移之后所在的缓存节点。
所述分布式缓存方法还包括:在数据迁移过程中,监控正在进行数据迁移的缓存节点的运行参数,并在其运行参数达到预设的运行极值时,暂时数据迁移,数据迁移暂时的时长根据预设的休眠公式确定。
本发明还提供一种分布式缓存***,包括:缓存客户端、与缓存客户端相连的缓存服务代理及与缓存服务代理相连的缓存节点;
所述缓存节点,用于以键-值格式存储数据,所述数据包括热点数据及非热点数据;
所述缓存客户端,用于缓存存储有热点数据的缓存节点信息,并在读取热点数据时,与存储有热点数据的缓存节点直接建立连接,以及在读取非热点数据或写入数据时,向缓存服务代理发送操作请求;
所述缓存服务代理,用于根据预设的路由算法将缓存客户端的操作请求路由至相应的缓存节点。
所述分布式缓存***还包括:与缓存服务代理相连的缓存集群管理模块,所述缓存集群管理模块用于根据预设的均衡算法对各个缓存服务代理的负载进行均衡配置,以选中一个缓存服务代理处理当前待处理的操作请求;
所述预设的均衡算法包括:根据预设的负载权重公式计算各个缓存服务代理的负载权重;
将各个缓存服务代理的负载权重与其预设的负载权重阈值进行比较;
若所有缓存服务代理的负载权重的均小于其预设的负载权重阈值,则选定负载权重最小的一个缓存服务代理处理当前待处理的操作请求,否则,根据预设的负载率公式计算各个缓存服务代理的负载率,并选定负载率最低的一个缓存服务代理处理当前待处理的操作请求。
所述预设的路由算法包括:根据当前操作请求的键值查找自定义规则;
若查找到自定义规则,则根据自定义规则路由当前操作请求至相应的缓存节点;
若未查找到自定义规则,则根据预设的加权一致性哈希算法路由当前操作请求至相应的缓存节点。
所述缓存客户端还用于根据LRU算法将缓存节点中存储的数据划分为热点数据和非热点数据,具体划分过程包括:
记录所有缓存节点被访问次数;
将被访问次数达到预设的次数阈值的缓存节点中保存的数据定义为热点数据,并将该缓存节点的信息保存在热点数据列表中;
按照访问时间的远近对热点数据列表中的缓存节点的信息进行排序,并在保存的缓存节点的信息的数量超出热点数据列表的容量时,淘汰访问时间最远的缓存节点的信息。
本发明的有益效果:本发明提供一种分布式缓存方法,包括以下步骤:以键-值格式将数据存储到缓存节点中,所述数据包括热点数据及非热点数据;在缓存客户端中缓存存储有热点数据的缓存节点信息;缓存客户端与存储有热点数据的缓存节点直接建立连接,以读取热点数据;缓存客户端向缓存服务代理发送操作请求,所述缓存服务代理根据预设的路由算法将缓存客户端的操作请求路由至相应的缓存节点,以读取非热点数据或向缓存节点写入数据,通过在缓存客户端中缓存存储有热点数据的缓存节点信息,以跳过缓存服务代理直接获取热点数据,能够提升数据访问的效率,保证缓存数据的一致性和可用性,提升硬件资源的利用率。本发明还提供一种分布式缓存***,能够提升数据访问的效率,保证缓存数据的一致性和可用性,提升硬件资源的利用率。
附图说明
为了能更进一步了解本发明的特征以及技术内容,请参阅以下有关本发明的详细说明与附图,然而附图仅提供参考与说明用,并非用来对本发明加以限制。
附图中,
图1为本发明的分布式缓存方法的流程图;
图2为本发明的分布式缓存***的结构图。
具体实施方式
为更进一步阐述本发明所采取的技术手段及其效果,以下结合本发明的优选实施例及其附图进行详细描述。
请参阅图1,本发明提供一种分布式缓存方法,可运用于电信业务BOSS***,包括以下步骤:
以键-值(key-value)格式将数据存储到缓存节点10中,所述数据包括热点数据及非热点数据;
在缓存客户端20中缓存存储有热点数据的缓存节点10信息;
缓存客户端20与存储有热点数据的缓存节点10直接建立连接,以读取热点数据;
缓存客户端20向缓存服务代理30发送操作请求,所述缓存服务代理30根据预设的路由算法将缓存客户端20的操作请求路由至相应的缓存节点10,以读取非热点数据或向缓存节点10写入数据。
具体地,所述缓存节点10采用开源组件Redis。
具体地,所述缓存节点10的信息包括:缓存节点10的编号(identification,ID),每一个缓存节点10均具有一个唯一的ID,从而可通过所述缓存节点10的ID找到对应的缓存节点10进行访问。
具体地,所述分布式缓存方法还包括:根据预设的均衡算法对各个缓存服务代理30的负载进行均衡配置,以选中一个缓存服务代理30处理当前待处理的操作请求;
所述预设的均衡算法包括:根据预设的负载权重公式计算各个缓存服务代理30的负载权重;
将各个缓存服务代理30的负载权重与其预设的负载权重阈值进行比较;
若所有缓存服务代理30的负载权重的均小于其预设的负载权重阈值,则选定负载权重最小的一个缓存服务代理30处理当前待处理的操作请求,否则,根据预设的负载率公式计算各个缓存服务代理30的负载率,并选定负载率最低的一个缓存服务代理30处理当前待处理的操作请求。
进一步地,所述负载权重公式为一种加权轮循算法,具体为下述公式(1):
其中,Ci为第i个缓存服务代理30的负载权重,Ni为当前待处理的操作请求的序号,Wx和Wi为第x个和第i个缓存服务代理的权重。
所述预设的负载率公式为下述公式(2):
其中,Ri为第i个缓存服务代理30的负载率,Ni和Nx分别为第i个和第x个缓存服务代理30的网络使用率,Ci和Cx分别为第i个和第x个缓存服务代理30的中央处理器(CPU)使用率,Mi和Mx分别为第i个和第x个缓存服务代理30的内存使用率,WN、WC及WM分别为预设的网络权重、中央处理器权重及内存权重。
其中,所述根据预设的均衡算法对各个缓存服务代理30的负载进行均衡配置,以选中一个缓存服务代理30处理当前待处理的操作请求的步骤可通过设置在分布式缓存***中的缓存集群管理模块40来完成。
此外,所述缓存集群管理模块40还具有对缓存客户端20进行身份验证、监控缓存节点10的状态、主从切换、生命周期管理及发布缓存节点10的配置信息的功能,以提供统一、快速的全局缓存配置功能。
其中,对所述缓存客户端20进行身份验证,包括检查所述缓存客户端20的是否具有接入该分布式缓存***的权限,是否具有在该分布式缓存***内读取数据的权限,是否具有在该分布式缓存内写入数据的权限;监控缓存节点10的状态包括监控各个缓存节点10的CPU使用率、网络使用率及内存使用率等运行参数;主从切换指的是为了数据容灾方面的考虑,在每一个缓存节点10中均设置一个主数据节点及至少一个备用数据节点,当主数据节点故障时,会自动切换至备用数据节点,继续提供数据访问功能,且主数据节点和备用数据节点上的数据是同步的;生命周期管理指的是:对缓存客户端20与缓存服务代理30之间的连接以及缓存服务代理30与缓存节点10之间的连接进行管理,对异常中断的连接进行回收,以及根据外部控制程序提供的配置或指令扩充连接的数量等。
所述预设的路由算法包括:根据当前操作请求的键值(key值)查找自定义规则;
若查找到自定义规则,则根据自定义规则路由当前操作请求至相应的缓存节点10;
若未查找到自定义规则,则根据预设的加权一致性哈希算法路由当前操作请求至相应的缓存节点10。
在本发明的一些实施例中,所述自定义规则可以为以下公式(3):
其中,Kk及Kpi分别为当前待访问数据的key值的关键字部分和参数值部分,Vk及Vpi分别为当前待访问数据的key值的关键字部分的比较值和参数值部分的比较值,Di、Dsx及Dsy为缓存节点10的编号(ID),从而能够根据所述自定义规则获取保存有待访问数据的缓存节点10的编号,进行数据访问。
在本发明的一些实施例中,所述加权一致性哈希算法包括:先以下公式(4)获取当前服务代理对应的虚拟节点的数量:
其中,n为缓存服务代理30的数量,Q为虚拟节点的数量,Qi为第i个缓存服务代理30对应的虚拟节点的数量。
得到第i个缓存服务代理30对应的虚拟节点的数量之后,再根据当前待访问数据的键值计算出哈希值,从而找到对应的缓存节点10。
进一步地,所述缓存服务代理30中设有二级缓存,所述二级缓存用于下载并保存该缓存服务代理30所需的路由信息、该缓存服务代理30与缓存节点10之间的连接信息以及负载信息。
具体地,所述缓存客户端20根据LRU算法将缓存节点10中存储的数据划分为热点数据和非热点数据,具体包括:
记录所有缓存节点10被访问次数;
将被访问次数达到预设的次数阈值的缓存节点10中保存的数据定义为热点数据,并将该缓存节点10的信息保存在热点数据列表中;
按照访问时间的远近对热点数据列表中的缓存节点10的信息进行排序,并在保存的缓存节点10的信息的数量超出热点数据列表的容量时,淘汰访问时间最远的缓存节点10的信息。
具体地,所述分布式缓存方法还包括:当缓存节点10的数量发生变化时,对各个缓存节点10中存储的数据进行数据迁移,以重新均衡各个缓存节点10的负载;
在数据迁移过程中,按照如下方法访问缓存节点10中的数据:
关闭缓存客户端20的二级缓存,以暂停缓存客户端20获取存储有热点数据的缓存节点10的信息,阻止缓存客户端20与存储有热点数据的缓存节点10之间直接建立连接;
缓存客户端20向缓存服务代理30发送操作请求,所述缓存服务代理30根据预设的路由算法将缓存客户端20的操作请求路由至相应的缓存节点10,以读取数据或向缓存节点10写入数据;
其中,所述读取数据的步骤包括:所述缓存客户端20先从迁入节点读取数据,若读取到数据则结束读取,若未读取到数据,则继续从迁出节点读取数据,若读取到数据则结束读取,若仍未读取到数据,则再一次从迁入节点读取数据,所述迁入节点为待读取的数据在数据迁移之前所在的缓存节点10,所述迁出节点为待读取数据在数据迁移之后所在的缓存节点10。
可以理解的是,所述在完成数据迁移之后,所述缓存客户端20会重新打开二级缓存,以使得缓存客户端20能够重新获取存储有热点数据的缓存节点10的信息,从而在缓存客户端20与存储有热点数据的缓存节点10之间直接建立连接进行数据访问。
具体地,所述分布式缓存方法,还包括:在数据迁移过程中,监控正在进行数据迁移的缓存节点10的运行参数,并在其运行参数达到预设的运行极值时,暂时数据迁移,数据迁移暂时的时长根据预设的休眠公式确定。
具体地,所述运行参数包括:待迁出的缓存节点10的CPU使用率、网络使用率及内存使用率,所述预设的休眠公式包括以下公式(5)~(7):
其中,Ns为网络过载休眠时长,Cs为CPU过载休眠时长,Ms为内存过载休眠时长,Ni、Ci及Mi分别为当前待迁出的缓存节点10的CPU使用率、网络使用率及内存使用率,Tn、TC及Tm分别为CPU运行极值、网络运行极值及内存运行极值;
具体处理时按照网络、CPU及内存的先后顺序依次处理,当计算得到第一个不为0的休眠时长时,即开始暂时数据迁移,开始休眠,例如先计算网络过载休眠时长,若为0,则继续计算CPU过载休眠时长,若不为0,则开始休眠,不再计算内存过载休眠时长。
进一步地,本发明的分布式缓存方法在保存数据时,会按照数据的属性将缓存节点10划分为多个域,每一个域用于存储一种数据;此外对于临时数据,也会单独划分一个区域进行存放,与长期数据隔离,以便于清理;在进行数据访问时,会先根据待访问数据的键值找到该数据的域,再找到该数据的缓存节点10。
经过试验比较,本发明的分布式缓存方法与传统的Redis Cluster和OneCache分布式缓存方法相比,能够有效提升吞吐量,控制时延,并保证资源的充分利用,确保数据的一致性。
请参阅图2,本发明提供一种分布式缓存***,可运用于电信业务BOSS***,包括:缓存客户端20、与缓存客户端20相连的缓存服务代理30及与缓存服务代理30相连的缓存节点10;
所述缓存节点10,用于以键-值格式存储数据,所述数据包括热点数据及非热点数据;
所述缓存客户端20,用于缓存存储有热点数据的缓存节点10信息,并在读取热点数据时,与存储有热点数据的缓存节点10直接建立连接,以及在读取非热点数据或写入数据时,向缓存服务代理30发送操作请求;
所述缓存服务代理30,用于根据预设的路由算法将缓存客户端20的操作请求路由至相应的缓存节点10。
具体地,所述缓存节点10采用开源组件Redis。
具体地,所述缓存节点10的信息包括:缓存节点10的编号,每一个缓存节点10均具有一个唯一的ID,从而可通过所述缓存节点10的ID找到对应的缓存节点10进行访问。
所述分布式缓存***还包括:与缓存服务代理30相连的缓存集群管理模块40,所述缓存集群管理模块40用于根据预设的均衡算法对各个缓存服务代理30的负载进行均衡配置,以选中一个缓存服务代理30处理当前待处理的操作请求。
所述预设的均衡算法包括:根据预设的负载权重公式计算各个缓存服务代理30的负载权重;
将各个缓存服务代理30的负载权重与其预设的负载权重阈值进行比较;
若所有缓存服务代理30的负载权重的均小于其预设的负载权重阈值,则选定负载权重最小的一个缓存服务代理30处理当前待处理的操作请求,否则,根据预设的负载率公式计算各个缓存服务代理30的负载率,并选定负载率最低的一个缓存服务代理30处理当前待处理的操作请求。
进一步地,所述负载权重公式为一种加权轮循算法,具体为下述公式(1):
其中,Ci为第i个缓存服务代理30的负载权重,Ni为当前待处理的操作请求的序号,Wx和Wi为第x个和第i个服务代理的权重。
所述预设的负载率公式为下述公式(2):
其中,Ri为第i个缓存服务代理30的负载率,Ni和Nx分别为第i个和第x个缓存服务代理30的网络使用率,Ci和Cx分别为第i个和第x个缓存服务代理30的中央处理器(CPU)使用率,Mi和Mx分别为第i个和第x个缓存服务代理30的内存使用率,WN、WC及WM分别为预设的网络权重、中央处理器权重及内存权重。
此外,所述缓存集群管理模块40还具有对缓存客户端20进行身份验证、监控缓存节点10的状态、主从切换、生命周期管理及发布缓存节点10的配置信息的功能,以提供统一、快速的全局缓存配置功能。
其中,对所述缓存客户端20进行身份验证,包括检查所述缓存客户端20的是否具有接入该分布式缓存***的权限,是否具有在该分布式缓存***内读取数据的权限,是否具有在该分布式缓存内写入数据的权限;监控缓存节点10的状态包括监控各个缓存节点10的CPU使用率、网络使用率及内存使用率等运行参数;主从切换指的是为了数据容灾方面的考虑,在每一个缓存节点10中均设置一个主数据节点及至少一个备用数据节点,当主数据节点故障时,会自动切换至备用数据节点,继续提供数据访问功能,且主数据节点和备用数据节点上的数据是同步的;生命周期管理指的是:对缓存客户端20与缓存服务代理30之间的连接以及缓存服务代理30与缓存节点10之间的连接进行管理,对异常中断的连接进行回收,以及根据外部控制程序提供的配置或指令扩充连接的数量等。
所述预设的路由算法包括:根据当前操作请求的键值查找自定义规则;
若查找到自定义规则,则根据自定义规则路由当前操作请求至相应的缓存节点10;
若未查找到自定义规则,则根据预设的加权一致性哈希算法路由当前操作请求至相应的缓存节点10。
在本发明的一些实施例中,所述自定义规则为以下公式(3):
其中,Kk及Kpi分别为当前待访问数据的键值的关键字部分和参数值部分,Vk及Vpi分别为当前待访问数据的键值的关键字部分的比较值和参数值部分的比较值,Di、Dsx及Dsy为缓存节点10的编号(ID)。
在本发明的一些实施例中,在加权一致性哈希算法中,先以下公式(4)获取当前服务代理对应的虚拟节点的数量:
其中,n为缓存服务代理30的数量,Q为虚拟节点的数量,Qi为第i个缓存服务代理30对应的虚拟节点的数量。
得到第i个缓存服务代理30对应的虚拟节点的数量之后,再根据当前待访问数据的键值计算出哈希值,从而找到对应的缓存节点10。
进一步地,所述缓存服务代理30中设有二级缓存,所述二级缓存用于下载并保存该缓存服务代理30所需的路由信息、该缓存服务代理30与缓存节点10之间的连接信息以及负载信息。
具体地,所述缓存客户端20根据LRU算法将缓存节点10中存储的数据划分为热点数据和非热点数据,具体包括:
记录所有缓存节点10被访问次数;
将被访问次数达到预设的次数阈值的缓存节点10中保存的数据定义为热点数据,并将该缓存节点10的信息保存在热点数据列表中;
按照访问时间的远近对热点数据列表中的缓存节点10的信息进行排序,并在保存的缓存节点10的信息的数量超出热点数据列表的容量时,淘汰访问时间最远的缓存节点10的信息。
具体地,所述分布式缓存***中,当缓存节点10的数量发生变化时,会对各个缓存节点10中存储的数据进行数据迁移,以重新均衡各个缓存节点10的负载;
在数据迁移过程中,按照如下方法访问缓存节点10中的数据:
关闭缓存客户端20的二级缓存,以使得缓存客户端20能够重新获取存储有热点数据的缓存节点10的信息,从而在缓存客户端20与存储有热点数据的缓存节点10之间直接建立连接进行数据访问。
缓存客户端20向缓存服务代理30发送操作请求,所述缓存服务代理30根据预设的路由算法将缓存客户端20的操作请求路由至相应的缓存节点10,以读取数据或向缓存节点10写入数据;
其中,所述读取数据的步骤包括:所述缓存客户端20先从迁入节点读取数据,若读取到数据则结束读取,若未读取到数据,则继续从迁出节点读取数据,若读取到数据则结束读取,若仍未读取到数据,则再一次从迁入节点读取数据,所述迁入节点为待读取的数据在数据迁移之前所在的缓存节点10,所述迁出节点为待读取数据在数据迁移之后所在的缓存节点10。
可以理解的是,所述在完成数据迁移之后,所述缓存客户端20会重新打开二级缓存,以能够继续在缓存客户端20与存储有热点数据的缓存节点10之间直接建立连接。
具体地,所述分布式缓存***数据迁移过程中,会监控正在进行数据迁移的缓存节点10的运行参数,并在其运行参数达到预设的运行极值时,暂时数据迁移,数据迁移暂时的时长根据预设的休眠公式确定。
具体地,所述运行参数包括:待迁出的缓存节点10的CPU使用率、网络使用率及内存使用率,所述预设的休眠公式包括以下公式(5)~(7):
其中,Ns为网络过载休眠时长,Cs为CPU过载休眠时长,Ms为内存过载休眠时长,Ni、Ci及Mi分别为当前待迁出的缓存节点10的CPU使用率、网络使用率及内存使用率,Tn、TC及Tm分别为CPU运行极值、网络运行极值及内存运行极值,处理时按照网络、CPU及内存的先后顺序依次处理,当计算得到第一个不为0的休眠时长时,即开始暂时数据迁移,开始休眠,例如先计算网络过载休眠时长,若为0,则继续计算CPU过载休眠时长,若不为0,则开始休眠,不再计算内存过载休眠时长。
进一步地,本发明的分布式缓存***在保存数据时,会按照数据的属性将缓存节点10划分为多个域,每一个域用于存储一种数据,此外对于临时数据,也会单独划分一个区域进行存放,与长期数据隔离,以便于清理,在进行数据访问时,会先根据待访问数据的键值找到该数据的域,再找到该数据的缓存节点10。
经过试验比较,本发明的分布式缓存***与传统的Redis Cluster和OneCache分布式缓存***相比,能够有效提升吞吐量,控制时延,并保证资源的充分利用,确保数据的一致性。
综上所述,本发明提供一种分布式缓存方法,包括以下步骤:以键-值格式将数据存储到缓存节点中,所述数据包括热点数据及非热点数据;在缓存客户端中缓存存储有热点数据的缓存节点信息;缓存客户端与存储有热点数据的缓存节点直接建立连接,以读取热点数据;缓存客户端向缓存服务代理发送操作请求,所述缓存服务代理根据预设的路由算法将缓存客户端的操作请求路由至相应的缓存节点,以读取非热点数据或向缓存节点写入数据,通过在缓存客户端中缓存存储有热点数据的缓存节点信息,以跳过缓存服务代理直接获取热点数据,能够提升数据访问的效率,保证缓存数据的一致性和可用性,提升硬件资源的利用率。本发明还提供一种分布式缓存***,能够提升数据访问的效率,保证缓存数据的一致性和可用性,提升硬件资源的利用率。
以上所述,对于本领域的普通技术人员来说,可以根据本发明的技术方案和技术构思作出其他各种相应的改变和变形,而所有这些改变和变形都应属于本发明权利要求的保护范围。
Claims (10)
1.一种分布式缓存方法,其特征在于,包括以下步骤:
以键-值格式将数据存储到缓存节点(10)中,所述数据包括热点数据及非热点数据;
在缓存客户端(20)中缓存存储有热点数据的缓存节点(10)的信息;
缓存客户端(20)与存储有热点数据的缓存节点(10)直接建立连接,以读取热点数据;
缓存客户端(20)向缓存服务代理(30)发送操作请求,所述缓存服务代理(30)根据预设的路由算法将缓存客户端(20)的操作请求路由至相应的缓存节点(10),以读取非热点数据或向缓存节点(10)写入数据。
2.如权利要求1所述的分布式缓存方法,其特征在于,还包括:根据预设的均衡算法对各个缓存服务代理(30)的负载进行均衡配置,以选中一个缓存服务代理(30)处理当前待处理的操作请求;
所述预设的均衡算法包括:根据预设的负载权重公式计算各个缓存服务代理(30)的负载权重;
将各个缓存服务代理(30)的负载权重与其预设的负载权重阈值进行比较;
若所有缓存服务代理(30)的负载权重的均小于其预设的负载权重阈值,则选定负载权重最小的一个缓存服务代理(30)处理当前待处理的操作请求,否则,根据预设的负载率公式计算各个缓存服务代理(30)的负载率,并选定负载率最低的一个缓存服务代理(30)处理当前待处理的操作请求。
3.如权利要求1所述的分布式缓存方法,其特征在于,所述预设的路由算法包括:根据当前操作请求的键值查找自定义规则;
若查找到自定义规则,则根据自定义规则路由当前操作请求至相应的缓存节点(10);
若未查找到自定义规则,则根据预设的加权一致性哈希算法路由当前操作请求至相应的缓存节点(10)。
4.如权利要求1所述的分布式缓存方法,其特征在于,所述缓存客户端(20)根据LRU算法将缓存节点(10)中存储的数据划分为热点数据和非热点数据,具体包括:
记录所有缓存节点(10)被访问次数;
将被访问次数达到预设的次数阈值的缓存节点(10)中保存的数据定义为热点数据,并将该缓存节点(10)的信息保存在热点数据列表中;
按照访问时间的远近对热点数据列表中的缓存节点(10)的信息进行排序,并在保存的缓存节点(10)的信息的数量超出热点数据列表的容量时,淘汰访问时间最远的缓存节点(10)的信息。
5.如权利要求1所述的分布式缓存方法,其特征在于,还包括:当缓存节点(10)的数量发生变化时,对各个缓存节点(10)中存储的数据进行数据迁移,以重新均衡各个缓存节点(10)的负载;
在数据迁移过程中,按照如下方法访问缓存节点(10)中的数据:
关闭缓存客户端(20)的二级缓存,以暂停缓存客户端(20)获取存储有热点数据的缓存节点(10)的信息,阻止缓存客户端(20)与存储有热点数据的缓存节点(10)之间直接建立连接;
缓存客户端(20)向缓存服务代理(30)发送操作请求,所述缓存服务代理(30)根据预设的路由算法将缓存客户端(20)的操作请求路由至相应的缓存节点(10),以读取数据或向缓存节点(10)写入数据;
其中,所述读取数据的步骤包括:所述缓存客户端(20)先从迁入节点读取数据,若读取到数据则结束读取,若未读取到数据,则继续从迁出节点读取数据,若读取到数据则结束读取,若仍未读取到数据,则再一次从迁入节点读取数据,所述迁入节点为待读取的数据在数据迁移之前所在的缓存节点(10),所述迁出节点为待读取数据在数据迁移之后所在的缓存节点(10)。
6.如权利要求5所述的分布式缓存方法,其特征在于,还包括:在数据迁移过程中,监控正在进行数据迁移的缓存节点(10)的运行参数,并在其运行参数达到预设的运行极值时,暂时数据迁移,数据迁移暂时的时长根据预设的休眠公式确定。
7.一种分布式缓存***,其特征在于,包括:缓存客户端(20)、与缓存客户端(20)相连的缓存服务代理(30)及与缓存服务代理(30)相连的缓存节点(10);
所述缓存节点(10),用于以键-值格式存储数据,所述数据包括热点数据及非热点数据;
所述缓存客户端(20),用于缓存存储有热点数据的缓存节点(10)的信息,并在读取热点数据时,与存储有热点数据的缓存节点(10)直接建立连接,以及在读取非热点数据或写入数据时,向缓存服务代理(30)发送操作请求;
所述缓存服务代理(30),用于根据预设的路由算法将缓存客户端(20)的操作请求路由至相应的缓存节点(10)。
8.如权利要求7所述的分布式缓存***,其特征在于,还包括:与缓存服务代理(30)相连的缓存集群管理模块(40),所述缓存集群管理模块(40)用于根据预设的均衡算法对各个缓存服务代理(30)的负载进行均衡配置,以选中一个缓存服务代理处理(30)当前待处理的操作请求;
所述预设的均衡算法包括:根据预设的负载权重公式计算各个缓存服务代理(30)的负载权重;
将各个缓存服务代理(30)的负载权重与其预设的负载权重阈值进行比较;
若所有缓存服务代理(30)的负载权重的均小于其预设的负载权重阈值,则选定负载权重最小的一个缓存服务代理(30)处理当前待处理的操作请求,否则,根据预设的负载率公式计算各个缓存服务代理(30)的负载率,并选定负载率最低的一个缓存服务代理(30)处理当前待处理的操作请求。
9.如权利要求7所述的分布式缓存***,其特征在于,所述预设的路由算法包括:根据当前操作请求的键值查找自定义规则;
若查找到自定义规则,则根据自定义规则路由当前操作请求至相应的缓存节点(10);
若未查找到自定义规则,则根据预设的加权一致性哈希算法路由当前操作请求至相应的缓存节点(10)。
10.如权利要求7所述的分布式缓存***,其特征在于,所述缓存客户端(20)还用于根据LRU算法将缓存节点(10)中存储的数据划分为热点数据和非热点数据,具体划分过程包括:
记录所有缓存节点(10)被访问次数;
将被访问次数达到预设的次数阈值的缓存节点(10)中保存的数据定义为热点数据,并将该缓存节点(10)的信息保存在热点数据列表中;
按照访问时间的远近对热点数据列表中的缓存节点(10)的信息进行排序,并在保存的缓存节点(10)的信息的数量超出热点数据列表的容量时,淘汰访问时间最远的缓存节点(10)的信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711441564.9A CN108183947A (zh) | 2017-12-27 | 2017-12-27 | 分布式缓存方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711441564.9A CN108183947A (zh) | 2017-12-27 | 2017-12-27 | 分布式缓存方法及*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108183947A true CN108183947A (zh) | 2018-06-19 |
Family
ID=62547540
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711441564.9A Pending CN108183947A (zh) | 2017-12-27 | 2017-12-27 | 分布式缓存方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108183947A (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108959525A (zh) * | 2018-06-28 | 2018-12-07 | 郑州云海信息技术有限公司 | 一种冷热数据可视化方法、***、设备及计算机存储介质 |
CN108984130A (zh) * | 2018-07-25 | 2018-12-11 | 广东浪潮大数据研究有限公司 | 一种分布式存储的缓存读取方法及其装置 |
CN109407980A (zh) * | 2018-09-29 | 2019-03-01 | 武汉极意网络科技有限公司 | 基于Redis集群的数据存储*** |
CN110868333A (zh) * | 2019-10-28 | 2020-03-06 | 云深互联(北京)科技有限公司 | 一种用于网关的数据缓存方法及*** |
CN111049882A (zh) * | 2019-11-11 | 2020-04-21 | 支付宝(杭州)信息技术有限公司 | 缓存状态处理***、方法、装置及计算机可读存储介质 |
CN111190546A (zh) * | 2019-12-30 | 2020-05-22 | 深圳创新科软件技术有限公司 | 一种基于alua和本地缓存的分布式块存储性能优化方法 |
CN111711779A (zh) * | 2020-06-29 | 2020-09-25 | 重庆紫光华山智安科技有限公司 | 一种实时视频节点多维度缓存方法及设备 |
CN112148387A (zh) * | 2020-10-14 | 2020-12-29 | 中国平安人寿保险股份有限公司 | 预加载反馈信息的方法、装置、计算机设备及存储介质 |
CN112764948A (zh) * | 2021-01-22 | 2021-05-07 | 土巴兔集团股份有限公司 | 数据发送方法、数据发送装置、计算机设备及存储介质 |
CN113515411A (zh) * | 2021-05-19 | 2021-10-19 | 中国工商银行股份有限公司 | 容灾备份方法、装置、电子设备、存储介质及程序产品 |
CN113590507A (zh) * | 2020-04-30 | 2021-11-02 | 深信服科技股份有限公司 | 一种分布式存储***及其缓存层、数据访问方法、设备 |
CN114844846A (zh) * | 2022-04-14 | 2022-08-02 | 南京大学 | 一种基于可编程交换机的多级缓存分布式键值存储*** |
CN113590507B (zh) * | 2020-04-30 | 2024-07-09 | 深信服科技股份有限公司 | 一种分布式存储***及其缓存层、数据访问方法、设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080282039A1 (en) * | 2007-05-07 | 2008-11-13 | Erik John Burckart | Method and system for proactively monitoring the coherency of a distributed cache |
CN102244685A (zh) * | 2011-08-11 | 2011-11-16 | 中国科学院软件研究所 | 一种支持负载均衡的分布式缓存动态伸缩方法及*** |
CN103078927A (zh) * | 2012-12-28 | 2013-05-01 | 合一网络技术(北京)有限公司 | 一种key-value数据分布式缓存***及其方法 |
CN106453665A (zh) * | 2016-12-16 | 2017-02-22 | 东软集团股份有限公司 | 基于分布式缓存***的数据缓存方法、服务器和*** |
CN107346307A (zh) * | 2016-05-04 | 2017-11-14 | 北京京东尚科信息技术有限公司 | 分布式缓存***及方法 |
-
2017
- 2017-12-27 CN CN201711441564.9A patent/CN108183947A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080282039A1 (en) * | 2007-05-07 | 2008-11-13 | Erik John Burckart | Method and system for proactively monitoring the coherency of a distributed cache |
CN102244685A (zh) * | 2011-08-11 | 2011-11-16 | 中国科学院软件研究所 | 一种支持负载均衡的分布式缓存动态伸缩方法及*** |
CN103078927A (zh) * | 2012-12-28 | 2013-05-01 | 合一网络技术(北京)有限公司 | 一种key-value数据分布式缓存***及其方法 |
CN107346307A (zh) * | 2016-05-04 | 2017-11-14 | 北京京东尚科信息技术有限公司 | 分布式缓存***及方法 |
CN106453665A (zh) * | 2016-12-16 | 2017-02-22 | 东软集团股份有限公司 | 基于分布式缓存***的数据缓存方法、服务器和*** |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108959525A (zh) * | 2018-06-28 | 2018-12-07 | 郑州云海信息技术有限公司 | 一种冷热数据可视化方法、***、设备及计算机存储介质 |
CN108984130A (zh) * | 2018-07-25 | 2018-12-11 | 广东浪潮大数据研究有限公司 | 一种分布式存储的缓存读取方法及其装置 |
CN109407980A (zh) * | 2018-09-29 | 2019-03-01 | 武汉极意网络科技有限公司 | 基于Redis集群的数据存储*** |
CN110868333A (zh) * | 2019-10-28 | 2020-03-06 | 云深互联(北京)科技有限公司 | 一种用于网关的数据缓存方法及*** |
CN111049882A (zh) * | 2019-11-11 | 2020-04-21 | 支付宝(杭州)信息技术有限公司 | 缓存状态处理***、方法、装置及计算机可读存储介质 |
CN111049882B (zh) * | 2019-11-11 | 2023-03-10 | 支付宝(杭州)信息技术有限公司 | 缓存状态处理***、方法、装置及计算机可读存储介质 |
CN111190546A (zh) * | 2019-12-30 | 2020-05-22 | 深圳创新科软件技术有限公司 | 一种基于alua和本地缓存的分布式块存储性能优化方法 |
CN111190546B (zh) * | 2019-12-30 | 2023-10-20 | 深圳创新科软件技术有限公司 | 一种基于alua和本地缓存的分布式块存储性能优化方法 |
CN113590507A (zh) * | 2020-04-30 | 2021-11-02 | 深信服科技股份有限公司 | 一种分布式存储***及其缓存层、数据访问方法、设备 |
CN113590507B (zh) * | 2020-04-30 | 2024-07-09 | 深信服科技股份有限公司 | 一种分布式存储***及其缓存层、数据访问方法、设备 |
CN111711779A (zh) * | 2020-06-29 | 2020-09-25 | 重庆紫光华山智安科技有限公司 | 一种实时视频节点多维度缓存方法及设备 |
CN112148387A (zh) * | 2020-10-14 | 2020-12-29 | 中国平安人寿保险股份有限公司 | 预加载反馈信息的方法、装置、计算机设备及存储介质 |
CN112764948A (zh) * | 2021-01-22 | 2021-05-07 | 土巴兔集团股份有限公司 | 数据发送方法、数据发送装置、计算机设备及存储介质 |
CN113515411A (zh) * | 2021-05-19 | 2021-10-19 | 中国工商银行股份有限公司 | 容灾备份方法、装置、电子设备、存储介质及程序产品 |
CN114844846A (zh) * | 2022-04-14 | 2022-08-02 | 南京大学 | 一种基于可编程交换机的多级缓存分布式键值存储*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108183947A (zh) | 分布式缓存方法及*** | |
CN105205014B (zh) | 一种数据存储方法和装置 | |
US20160132541A1 (en) | Efficient implementations for mapreduce systems | |
CN108900626B (zh) | 一种云环境下数据存储方法、装置及*** | |
CN105518631B (zh) | 内存管理方法、装置和***、以及片上网络 | |
CN101984632A (zh) | 一种分布式缓存***中负荷分配方法、装置及服务器 | |
CN101013387A (zh) | 基于对象存储设备的负载平衡方法 | |
CN108196935B (zh) | 一种面向云计算的虚拟机节能迁移方法 | |
CN107436813A (zh) | 一种元数据服务器动态负载均衡的方法及*** | |
CN104679594B (zh) | 一种中间件分布式计算方法 | |
US20150046656A1 (en) | Managing and sharing storage cache resources in a cluster environment | |
CN102577241A (zh) | 分布式缓存资源调度的方法、装置及*** | |
CN107493329A (zh) | 一种分布式内存文件***的远程文件访问方法 | |
CN105577806B (zh) | 一种分布式缓存方法及*** | |
CN108647155A (zh) | 一种基于深度学习的多级cache共享的方法和装置 | |
CN109446114A (zh) | 一种空间数据缓存方法、装置和存储介质 | |
Gill et al. | Dynamic cost-aware re-replication and rebalancing strategy in cloud system | |
CN107623732A (zh) | 一种基于云平台的数据存储方法、装置、设备及存储介质 | |
CN106973091B (zh) | 分布式内存数据重分布方法及***、主控服务器 | |
CN106326012A (zh) | web应用集群缓存利用方法和*** | |
CN110162395B (zh) | 一种内存分配的方法及装置 | |
Mashaly et al. | Load balancing in cloud-based content delivery networks using adaptive server activation/deactivation | |
CN106230944A (zh) | 一种基于云计算机***的高峰访问的运行装置 | |
WO2016065198A1 (en) | High performance hadoop with new generation instances | |
EP4020208A1 (en) | Memory pool data placement technologies |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180619 |
|
RJ01 | Rejection of invention patent application after publication |