CN115878677A - 分布式多级缓存的数据处理方法和装置 - Google Patents
分布式多级缓存的数据处理方法和装置 Download PDFInfo
- Publication number
- CN115878677A CN115878677A CN202310086503.4A CN202310086503A CN115878677A CN 115878677 A CN115878677 A CN 115878677A CN 202310086503 A CN202310086503 A CN 202310086503A CN 115878677 A CN115878677 A CN 115878677A
- Authority
- CN
- China
- Prior art keywords
- data objects
- local cache
- priority list
- cache
- data object
- 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.)
- Granted
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供一种分布式多级缓存的数据处理方法和装置,为目标应用的多个应用实例分别构建对应的本地缓存,并为每个本地缓存分别构建关联的前置优先级列表,从每个本地缓存关联的前置优先级列表中的第一数量的数据对象的唯一标识符集合中获取热度度量值最高的第二数量的数据对象的唯一标识符集合,将所述第二数量的数据对象及其热度度量值写入每个本地缓存,并将第一数量的数据对象的唯一标识符集合中除第二数量的数据对象的唯一标识符集合之外的第三数量的数据对象分布地写入二级分布式缓存中的各缓存节点。本申请可以提高分布式多级缓存中数据对象的命中率,提升高并发下目标应用对客户端的数据访问请求的响应性能。
Description
技术领域
本申请涉及计算机软件技术领域,具体涉及一种分布式多级缓存的数据处理方法和装置。
背景技术
在基于JAVA的分布式应用***中,为了满足高并发下的***访问性能要求,采用JVM(JAVA虚拟机)的本地缓存结合例如Redis、Memcache等分布式缓存来构建分布式多级缓存架构,是一种可行的解决方案。这种分布式多级缓存架构中,主要使用JVM的本地缓存作为一级缓存,使用外部的Redis、Memcache等分布式缓存作为二级缓存。为了提高***的数据访问性能,需要将热点数据对象缓存在容量有限的本地缓存中,以降低对二级缓存和后端的数据库的访问频次。
上述分布式多级缓存架构中,基于常规的LRU(The LeastRecently Used,最近最少使用)、LFU(Least frequentlyused,最不经常使用)等数据淘汰策略处理本地缓存和二级缓存中的数据对象,是常用的缓存数据替换策略。LRU策略是根据数据对象的访问最近性来缓存数据对象,LFU策略则是根据数据对象的访问频次来缓存数据对象,但是这两种方式都可能导致实质上的冷数据对象替换缓存中的热点数据对象,降低了分布式多级缓存中的数据对象命中率,进而影响高并发下的目标应用的访问性能。
发明内容
有鉴于此,本申请提出一种分布式多级缓存的数据处理方法和装置,以防止实质上的冷数据对象替换分布式多级缓存中的热点数据对象,提高分布式多级缓存中的数据对象命中率,提升高并发下的目标应用的访问性能。
本申请第一方面,提供了一种分布式多级缓存的数据处理方法,包括:
为目标应用的多个应用实例中的每个应用实例分别构建对应的本地缓存,获得所述多个应用实例分别对应的多个本地缓存;
为所述多个本地缓存中的每个本地缓存分别构建前置优先级列表,获得所述多个本地缓存分别关联的多个前置优先级列表,所述前置优先级列表用于实时记录每个应用实例中被客户端访问的热度度量值最高的第一数量的数据对象的唯一标识符和热度度量值,并按照数据对象的热度度量值排序;
从所述每个本地缓存关联的前置优先级列表中的第一数量的数据对象的唯一标识符集合中获取热度度量值最高的第二数量的数据对象的唯一标识符集合,根据所述第二数量的数据对象的唯一标识符集合获得所述第二数量的数据对象,将所述第二数量的数据对象及其热度度量值写入所述每个本地缓存,并根据所述第一数量的数据对象的唯一标识符集合中除所述第二数量的数据对象的唯一标识符集合之外的第三数量的数据对象的唯一标识符集合获得所述第三数量的数据对象,将所述第三数量的数据对象分布地写入二级分布式缓存中的各缓存节点。
在一些实施方式中,所述热度度量值包括每个应用实例实时监测的每个数据对象的读取次数和更新次数之间的差值。
在一些实施方式中,所述方法还包括:
所述每个应用实例响应于客户端对目标数据对象的访问请求,实时计算所述目标数据对象的热度度量值,根据所述目标数据对象的热度度量值更新所述每个应用实例对应的本地缓存关联的前置优先级列表;
判断所述目标数据对象是否在所述每个应用实例对应的本地缓存中命中,如果没有命中,则从所述二级分布式缓存或者后端的数据库节点中查找得到所述目标数据对象;
判断所述目标数据对象的热度度量值是否大于所述每个应用实例对应的本地缓存中的数据对象的最小热度度量值;如是,则用所述目标数据对象及其热度度量值替换所述每个应用实例对应的本地缓存中的最小热度度量值的数据对象及其热度度量值。
在一些实施方式中,所述根据所述目标数据对象的热度度量值更新所述每个应用实例对应的本地缓存关联的前置优先级列表包括:
根据所述目标数据对象的热度度量值与所述每个应用实例对应的本地缓存关联的前置优先级列表中的数据对象的热度度量值的比较,确定所述目标数据对象的唯一标识符在所述前置优先级列表中的位置;
根据所述目标数据对象的唯一标识符在所述前置优先级列表中的位置更新所述前置优先级列表,使得所述前置优先级列表保持记录热度度量值最高的第一数量的数据对象的唯一标识符和热度度量值。
在一些实施方式中,所述方法还包括:
如果所述目标数据对象在所述每个应用实例对应的本地缓存中命中,则根据所述目标数据对象的热度度量值更新所述每个应用实例对应的本地缓存中的目标数据对象的位置和热度度量值。
在一些实施方式中,所述方法还包括:
将所述多个前置优先级列表进行合并排序,得到全局前置优先级列表,所述全局前置优先级列表记录所述多个应用实例中被客户端访问的全局热度度量值最高的第一数量的数据对象的唯一标识符和全局热度度量值;
将所述全局前置优先级列表与所述每个本地缓存关联的前置优先级列表进行比较,获取所述全局前置优先级列表中全局热度度量值最高的第二数量的数据对象的唯一标识符集合与所述每个本地缓存关联的前置优先级列表中热度度量值最高的第二数量的数据对象的唯一标识符集合之间的差集;
根据所述差集中的唯一标识符所标识的任一数据对象的全局热度度量值更新所述每个本地缓存关联的前置优先级列表;
判断所述任一数据对象的全局热度度量值是否大于所述本地缓存中的数据对象的最小热度度量值;如是,则从所述二级分布式缓存或者后端的数据库节点中查找得到所述任一数据对象,用所述任一数据对象及其全局热度度量值替换所述每个本地缓存中的最小热度度量值的数据对象及其热度度量值。
在一些实施方式中,所述根据所述差集中的唯一标识符所标识的任一数据对象的全局热度度量值更新所述每个本地缓存关联的前置优先级列表包括:
根据所述任一数据对象的全局热度度量值与所述每个本地缓存关联的前置优先级列表中的数据对象的热度度量值的比较,确定所述任一数据对象的唯一标识符在所述每个本地缓存关联的前置优先级列表中的位置;
根据所述任一数据对象的唯一标识符在所述每个本地缓存关联的前置优先级列表中的位置更新所述每个本地缓存关联的前置优先级列表,使得所述每个本地缓存关联的前置优先级列表保持记录热度度量值最高的第一数量的数据对象的唯一标识符和热度度量值。
在一些实施方式中,所述方法还包括:
计算每个度量周期中所述每个本地缓存关联的前置优先级列表中的所述第二数量的数据对象的唯一标识符集合在所述本地缓存中的第一平均命中率以及所述第三数量的数据对象的唯一标识符集合在所述二级分布式缓存中的第二平均命中率;
判断所述第一平均命中率和第二平均命中率是否满足所述第一平均命中率小于预定阈值且所述第二平均命中率大于所述预定阈值的条件,如是,则将所述前置优先级列表和本地缓存中的全部数据对象的热度度量值按比例进行衰减,直至后续度量周期中所述第一平均命中率大于等于所述预定阈值。
在一些实施方式中,所述第一平均命中率为所述第二数量的数据对象的唯一标识符集合在所述本地缓存中的总命中数与所述第二数量的比值,所述第二平均命中率为所述第三数量的数据对象的唯一标识符集合在所述二级分布式缓存中的总命中数与所述第三数量的比值。
本申请第二方面,还提出一种分布式多级缓存的数据处理装置,包括:
缓存构建单元,用于为目标应用的多个应用实例中的每个应用实例分别构建对应的本地缓存,获得所述多个应用实例分别对应的多个本地缓存;
数据监视单元,用于为所述多个本地缓存中的每个本地缓存分别构建前置优先级列表,获得所述多个本地缓存分别关联的多个前置优先级列表,所述前置优先级列表用于实时记录每个应用实例中被客户端访问的热度度量值最高的第一数量的数据对象的唯一标识符和热度度量值,并按照数据对象的热度度量值排序;
缓存处理单元,用于从所述每个本地缓存关联的前置优先级列表中的第一数量的数据对象的唯一标识符集合中获取热度度量值最高的第二数量的数据对象的唯一标识符集合,根据所述第二数量的数据对象的唯一标识符集合获得所述第二数量的数据对象,将所述第二数量的数据对象及其热度度量值写入所述每个本地缓存,并根据所述第一数量的数据对象的唯一标识符集合中除所述第二数量的数据对象的唯一标识符集合之外的第三数量的数据对象的唯一标识符集合获得所述第三数量的数据对象,将所述第三数量的数据对象分布地写入二级分布式缓存中的各缓存节点。
本申请的分布式多级缓存的数据处理方法和装置,通过为目标应用的每个应用实例对应的本地缓存分别构建关联的前置优先级列表,实时记录每个应用实例中被客户端访问的热度度量值最高的第一数量的数据对象的唯一标识符和热度度量值,从所述每个本地缓存关联的前置优先级列表中的第一数量的数据对象的唯一标识符集合中获取热度度量值最高的第二数量的数据对象的唯一标识符集合,根据所述第二数量的数据对象的唯一标识符集合获得所述第二数量的数据对象,将所述第二数量的数据对象及其热度度量值写入所述每个本地缓存,并根据所述第一数量的数据对象的唯一标识符集合中除所述第二数量的数据对象的唯一标识符集合之外的第三数量的数据对象的唯一标识符集合获得所述第三数量的数据对象,将所述第三数量的数据对象分布地写入二级分布式缓存中的各缓存节点,从而有效地防止应用实例中客户端访问的实质上的冷数据对象替换分布式多级缓存中的热点数据对象的问题,显著提高分布式多级缓存中数据对象的命中率,提升高并发下目标应用对客户端的数据访问请求的响应性能。
附图说明
图1为本申请的分布式多级缓存的数据处理方法所适用的应用场景的架构示意图;
图2是根据本申请一实施例的分布式多级缓存的数据处理方法的流程示意图;
图3是根据本申请一实施例的分布式多级缓存的数据处理方法的工作原理示意图;
图4是根据本申请另一实施例的分布式多级缓存的数据处理方法的部分流程示意图;
图5是根据本申请另一实施例的分布式多级缓存的数据处理方法的部分流程示意图;
图6是根据本申请另一实施例的分布式多级缓存的数据处理方法的部分流程示意图;
图7是根据本申请另一实施例的分布式多级缓存的数据处理方法的部分流程示意图;
图8是根据本申请另一实施例的分布式多级缓存的数据处理方法的部分流程示意图;
图9是根据本申请一实施例的分布式多级缓存的数据处理装置的结构示意图;
图10是根据本申请另一实施例的分布式多级缓存的数据处理装置的部分结构示意图;
图11是根据本申请另一实施例的分布式多级缓存的数据处理装置的部分结构示意图;
图12是根据本申请另一实施例的分布式多级缓存的数据处理装置的部分结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请实施例的附图,对本申请实施例中的技术方案进行清楚、完整地描述。然而,应当理解,所描述的实施例仅仅是本申请的部分示例性实施例,而不是全部实施例,因此以下对本申请实施例的详细描述并非旨在限制本申请要求保护的范围。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请所使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
需要说明的是,本申请的说明书和权利要求书中的术语“第一”、“第二”等仅是用于区别描述类似的对象,而不是用于描述特定的顺序或先后次序,也不能理解为指示或暗示相对重要性。
图1为本申请的分布式多级缓存的数据处理方法所适用的应用场景的架构示意图。如图1所示,该***架构中,目标应用的多个应用实例分别对应的多个本地缓存与多个分布式缓存节点构成分布式多级缓存,其中目标应用的多个应用实例对应的多个本地缓存为一级缓存,多个分布式缓存节点构成二级缓存。目标应用的应用实例(instance)又称服务实例,可为目标应用提供对外服务的应用进程,其中每个应用实例都有各自对应的本地缓存,该本地缓存为该应用实例的应用进程内的一定容量的内存空间。
每个应用实例对应的本地缓存采用键值对{Key:Value}格式来缓存数据对象,其中key为数据对象的唯一标识符,value为数据对象的值。为了保证高并发的用户访问请求下的数据访问响应性能,每个应用实例对应的本地缓存中应尽可能缓存热点数据对象。当应用实例接收到客户端的数据访问请求,首先会去对应的本地缓存中查找该数据对象,如果该数据对象没有命中,则进一步去二级缓存的分布式缓存节点中查找。在一个实施方式中,二级缓存可以采用Redis内存数据库实现,每个分布式缓存节点可以是Redis内存数据库集群中的一个节点。Redis 是一个开源的基于内存的分布式的键值对{Key:Value}存储数据库。相较于本地缓存,次热度的数据对象可以预先从后端的数据库节点加载到二级缓存的各分布式缓存节点。数据对象根据键Key的哈希运算分布到各分布式缓存节点,当本地缓存中无法命中时,应用实例会根据数据对象的键的哈希运算去对应的分布式缓存节点中查找。如果二级缓存仍未命中,则去后端的数据库节点中读取和加载到分布式缓存节点中,并将数据对象返回给客户端。
如前所述,在这种分布式多级缓存的应用场景下,基于常规的LRU(最近最少使用)、LFU(最不经常使用)等数据淘汰策略处理本地缓存和二级缓存中的数据对象,都可能导致实质上的冷数据对象替换缓存中的热点数据对象,降低了分布式多级缓存中的数据对象命中率,进而影响高并发下的目标应用的访问性能。本申请中,热点数据对象是指读取频次非常高、但修改频次不高的数据对象,而冷数据对象则是指访问频次非常少或者修改频次非常高的数据对象。
为此,本申请提出一种分布式多级缓存的数据处理方法和装置,以解决上述技术问题。
图2是根据本申请一实施例的分布式多级缓存的数据处理方法的流程示意图。如图2所示,本申请的分布式多级缓存的数据处理方法,包括如下步骤:
步骤S201,为目标应用的多个应用实例中的每个应用实例分别构建对应的本地缓存,获得所述多个应用实例分别对应的多个本地缓存;
步骤S202,为所述多个本地缓存中的每个本地缓存分别构建前置优先级列表,获得所述多个本地缓存分别关联的多个前置优先级列表,所述前置优先级列表用于实时记录每个应用实例中被客户端访问的热度度量值最高的第一数量的数据对象的唯一标识符和热度度量值,并按照数据对象的热度度量值排序;
步骤S203,从所述每个本地缓存关联的前置优先级列表中的第一数量的数据对象的唯一标识符集合中获取热度度量值最高的第二数量的数据对象的唯一标识符集合,根据所述第二数量的数据对象的唯一标识符集合获得所述第二数量的数据对象,将所述第二数量的数据对象及其热度度量值写入所述每个本地缓存,并根据所述第一数量的数据对象的唯一标识符集合中除所述第二数量的数据对象的唯一标识符集合之外的第三数量的数据对象的唯一标识符集合获得所述第三数量的数据对象,将所述第三数量的数据对象分布地写入二级分布式缓存中的各缓存节点。
本实施例中,目标应用的多个应用实例可以运行于Java分布式应用***中的一个或多个服务器节点。目标应用的每个应用实例分别分配有对应的本地缓存,本地缓存是位于每个应用实例的应用进程中的预定容量的内存空间。目标应用的每个应用实例都会独立构建一个与本地缓存关联的前置优先级列表,所述前置优先级列表用于实时记录每个应用实例中被客户端访问的热度度量值最高的第一数量的数据对象的唯一标识符和热度度量值。
热度度量值是本申请中衡量每个应用实例中被客户端访问的每个数据对象的热度程度的量化度量值。在一个实施方式中,所述热度度量值可以包括每个应用实例实时监测的每个数据对象的读取次数和更新次数之间的差值。对于每个数据对象而言,读取次数越多,则反映了该数据对象的热度程度越大,而更新次数越多,则反映了该数据对象的热度程度越小。因而,为了提高本地缓存中的数据对象的命中率,每个应用实例对应的本地缓存需要尽可能保存热度程度最大的数据对象,也就是读取次数越多,而更新次数越少的数据对象。通过每个数据对象的读取次数和更新次数之间的差值可以有效地体现出每个应用实例中被客户端访问的每个数据对象的实际热度程度。
假设每个应用实例对应的本地缓存关联的前置优先级列表表示为,前置优先级列表中的任一数据对象的唯一标识符表示为/>,/>,P表示该本地缓存对应的前置优先级列表/>中的数据对象的唯一标识符的数量,则该数据对象/>的热度度量值/>可以通过以下公式计算得到,即/>,其中/>表示由唯一标识符/>标识的数据对象的读取次数,/>表示由唯一标识符/>标识的数据对象的更新次数。
为了更好地实时记录和在多级缓存之间分配每个应用实例中被客户端访问的热点数据对象,每个应用实例对应的本地缓存关联的前置优先级列表中的数据对象的唯一标识符的数量P要至少大于本地缓存中的数据对象的数量N。假设每个应用实例对应的本地缓存中的数据对象集表示为,本地缓存中的数据对象集/>中的数据对象的数量N小于与该本地缓存关联的前置优先级列表/>中的数据对象的唯一标识符的数量P,即/>。
本实施例中,与每个本地缓存关联的前置优先级列表预先记录每个应用实例中被客户端访问的全部数据对象中的热度度量值最高的前P个数据对象的唯一标识符(键Key)及其热度度量值。与每个本地缓存关联的前置优先级列表可以与本地缓存一样占用每个应用实例的应用进程中的一预定容量的内存空间。
在一个实施方式中,前置优先级列表中的P个数据对象的唯一标识符以每个数据对象的热度度量值从高到低的倒序排列或者从低到高的顺序排列。
每个应用实例从所述前置优先级列表中获取热度度量值最大的前N个数据对象的唯一标识符,根据该N个数据对象的唯一标识符从二级分布式缓存或者后端的数据库节点读取该N个数据对象对应的值,并将该N个数据对象的键值对以及该N个数据对象的热度度量值写入每个应用实例对应的本地缓存。同样地,本地缓存中的数据对象集也可以按照热度度量值从高到低或者从低到高的顺序排序。
本实施例中,与每个本地缓存关联的前置优先级列表可以按照写入本地缓存的数据对象的最小热度度量值为界限分为两个子列表,即第一前置优先级列表和第二前置优先级列表,其中第一前置优先级列表即为写入本地缓存的N个数据对象的唯一标识符集合构成的列表,第二前置优先级列表为热度度量值小于所述最小热度度量值的P-N个数据对象的唯一标识符集合构成的列表。本实施例在将所述第一前置优先级列表中的N个唯一标识符所标识的数据对象写入关联的本地缓存后,可以进一步根据第二前置优先级列表中的P-N个唯一标识符从后端的数据库节点获取所标识的数据对象分布地写入二级分布式缓存中的各分布式缓存节点。对于每个应用实例而言,作为一级缓存的本地缓存中保存了前置优先级列表中最热的数据对象集,作为二级缓存的分布式缓存节点中则保存了前置优先级列表中次热的数据对象集。
为了更好地阐述本实施例的技术方案,下面结合图3所示的前置优先级列表的工作原理示意图进行示例性解释。如图3所示,目标应用的每个应用实例(应用实例1,应用实例2,...,应用实例X)都为本地缓存303构建一个前置优先级列表302,以应用实例1为例,当应用实例1接收到客户端对目标数据对象的访问请求301,会实时地计算所述目标数据对象的热度度量值H,并根据目标数据对象的热度度量值H的大小按照预定的顺序将所述目标数据对象的唯一标识符(键Key)及其热度度量值H记录在前置优先级列表302中。前置优先级列表302中记录应用实例1中被客户端访问的全部数据对象中的热度度量值最高的前P个数据对象的唯一标识符(键Key)及其热度度量值。应用实例1会从前置优先级列表302的P个数据对象的唯一标识符集合中获取热度度量值最大的前N个数据对象的唯一标识符,根据该N个数据对象的唯一标识符从二级分布式缓存或者后端的数据库节点读取该N个数据对象对应的值Value,并将该N个数据对象的键值对{Key:Value}以及该N个数据对象的热度度量值H写入应用实例1对应的本地缓存303。同时,应用实例1会从前置优先级列表302的P个数据对象的唯一标识符集合中获取热度度量值靠后的P-N个数据对象的唯一标识符,从后端的数据库节点获取所标识的数据对象分布地写入二级分布式缓存中的各分布式缓存节点304。如此,这样的数据处理方式可以有效地防止应用实例中实质上的冷数据对象替换分布式多级缓存中的热点数据对象的问题,显著提高分布式多级缓存中数据对象的命中率,提升高并发下目标应用对客户端的数据访问请求的响应性能。
综上,本申请实施例通过为目标应用的每个应用实例对应的本地缓存分别构建关联的前置优先级列表,实时记录每个应用实例中被客户端访问的热度度量值最高的第一数量的数据对象的唯一标识符和热度度量值,从所述每个本地缓存关联的前置优先级列表中的第一数量的数据对象的唯一标识符集合中获取热度度量值最高的第二数量的数据对象的唯一标识符集合,根据所述第二数量的数据对象的唯一标识符集合获得所述第二数量的数据对象,将所述第二数量的数据对象及其热度度量值写入所述每个本地缓存,并根据所述第一数量的数据对象的唯一标识符集合中除所述第二数量的数据对象的唯一标识符集合之外的第三数量的数据对象的唯一标识符集合获得所述第三数量的数据对象,将所述第三数量的数据对象分布地写入二级分布式缓存中的各缓存节点,从而有效地防止应用实例中客户端访问的实质上的冷数据对象替换分布式多级缓存中的热点数据对象的问题,显著提高分布式多级缓存中数据对象的命中率,提升高并发下目标应用对客户端的数据访问请求的响应性能。
在一些实施方式中,在前述实施例的基础上,如图4所示,所述方法还可以包括以下步骤:
步骤S401,每个应用实例响应于客户端对目标数据对象的访问请求,实时计算所述目标数据对象的热度度量值,根据所述目标数据对象的热度度量值更新所述每个应用实例对应的本地缓存关联的前置优先级列表;
步骤S402,判断所述目标数据对象是否在所述每个应用实例对应的本地缓存中命中,如果没有命中,则从所述二级分布式缓存或者后端的数据库节点中查找得到所述目标数据对象;
步骤S403,判断所述目标数据对象的热度度量值是否大于所述每个应用实例对应的本地缓存中的数据对象的最小热度度量值;如是,则用所述目标数据对象及其热度度量值替换所述每个应用实例对应的本地缓存中的最小热度度量值的数据对象及其热度度量值。
本实施例中,针对客户端对目标数据对象的访问请求,目标应用的每个应用实例会实时计算和获取所述目标数据对象的最新的热度度量值,根据所述目标数据对象的热度度量值更新所述每个应用实例对应的本地缓存关联的前置优先级列表。
随后,本实施例通过判断所述目标数据对象是否在所述本地缓存中命中,如果没有命中,则根据所述目标数据对象的唯一标识符去二级分布式缓存中的分布式缓存节点中查找该访问数据对象;如果在二级分布式缓存中未查找到该目标数据对象,则从后端的数据库节点查找得到所述目标数据对象,并写入二级分布式缓存的分布式缓存节点。
随后,在查找得到所述目标数据对象之后,判断所述目标数据对象的热度度量值是否大于所述本地缓存中的数据对象的最小热度度量值,如是,则根据所述目标数据对象的热度度量值确定所述目标数据对象在本地缓存的位置,将所述目标数据对象及其热度度量值写入本地缓存。当本地缓存中的数据对象的数量达到N并维持最大数量N时,将所述目标数据对象及其热度度量值写入本地缓存,就意味着将本地缓存中的数据对象集中的最小热度度量值的数据对象及其热度度量值替换和清除。
在一个实施方式中,所述方法还可以包括:
如果所述目标数据对象在所述每个应用实例对应的本地缓存中命中,则根据所述目标数据对象的热度度量值更新所述每个应用实例对应的本地缓存中的目标数据对象的位置和热度度量值。
本实施例中,由于本地缓存中的数据对象集也可以按照热度度量值从高到低或者从低到高的顺序排序,因而,更新目标数据对象在本地缓存中的热度度量值时可以同时更新目标数据对象在本地缓存中的位置。
进一步地,对于本地缓存中因为目标数据对象而被替换的数据对象,可以进一步判断所述本地缓存中被替换的数据对象是否缓存在所述二级分布式缓存的分布式缓存节点,如否,则可以将所述本地缓存中被替换的数据对象分布写入所述二级分布式缓存的各分布式缓存节点。
综上,本实施例通过每个应用实例响应于客户端对目标数据对象的访问请求,实时计算所述目标数据对象的热度度量值,根据所述目标数据对象的热度度量值更新所述本地缓存关联的前置优先级列表,判断所述目标数据对象是否在所述本地缓存中命中,如果没有命中,则从所述二级分布式缓存或者后端的数据库节点中查找得到所述目标数据对象,并判断所述目标数据对象的热度度量值是否大于所述本地缓存中的数据对象的最小热度度量值;如是,用所述目标数据对象及其热度度量值替换所述每个应用实例对应的本地缓存中的最小热度度量值的数据对象及其热度度量值,从而每个应用实例在接收到新的数据访问请求之后,实时记录客户端访问的目标数据对象的最新热度度量值,并在本地缓存没有命中时,仅当该目标数据对象的热度度量值大于本地缓存中的最小热度度量值时才将该目标数据对象写入本地缓存,否则保存在二级分布式缓存,如此可以有效地防止应用实例中客户端访问的实质上的冷数据对象替换分布式多级缓存中的热点数据对象的问题,提高分布式多级缓存中数据对象的命中率,提升高并发下目标应用对客户端的数据访问请求的响应性能。
在一个实施方式中,在前述任一实施例的基础上,如图5所示,步骤S401根据所述目标数据对象的热度度量值更新所述每个应用实例对应的本地缓存关联的前置优先级列表可以包括以下步骤:
步骤S501,根据所述目标数据对象的热度度量值与所述每个应用实例对应的本地缓存关联的前置优先级列表中的数据对象的热度度量值的比较,确定所述目标数据对象的唯一标识符在所述前置优先级列表中的位置;
步骤S502,根据所述目标数据对象的唯一标识符在所述前置优先级列表中的位置更新所述前置优先级列表,使得所述前置优先级列表保持记录热度度量值最高的第一数量的数据对象的唯一标识符和热度度量值。
本实施例通过所述目标数据对象的热度度量值与所述前置优先级列表中的数据对象的热度度量值的比较,确定所述目标数据对象的唯一标识符在所述前置优先级列表中的位置,并基于所述目标数据对象的唯一标识符在所述前置优先级列表中的位置更新所述前置优先级列表,更新后的前置优先级列表始终保持记录每个应用实例被客户端访问的热度度量值最高的第一数量的数据对象的唯一标识符及其热度度量值。
在一些实施方式中,在前述任一实施例的基础上,如图6所示,所述方法还可以包括以下步骤:
步骤S601,将所述多个前置优先级列表进行合并排序,得到全局前置优先级列表,所述全局前置优先级列表记录所述多个应用实例中被客户端访问的全局热度度量值最高的第一数量的数据对象的唯一标识符和全局热度度量值;
步骤S602,将所述全局前置优先级列表与所述每个本地缓存关联的前置优先级列表进行比较,获取所述全局前置优先级列表中全局热度度量值最高的第二数量的数据对象的唯一标识符集合与所述每个本地缓存关联的前置优先级列表中热度度量值最高的第二数量的数据对象的唯一标识符集合之间的差集;
步骤S603,根据所述差集中的唯一标识符所标识的任一数据对象的全局热度度量值更新所述每个本地缓存关联的前置优先级列表;
步骤S604,判断所述任一数据对象的全局热度度量值是否大于所述每个本地缓存中的数据对象的最小热度度量值;如是,则从所述二级分布式缓存或者后端的数据库节点中查找得到所述任一数据对象,用所述任一数据对象及其全局热度度量值替换所述每个本地缓存中的最小热度度量值的数据对象及其热度度量值。
本实施例中,可以从应用维度上聚合多个应用实例对应的本地缓存所关联的前置优先级列表,构建目标应用的全部应用实例的全局前置优先级列表,全局前置优先级列表是将多个应用实例对应的本地缓存关联的前置优先级列表进行合并排序,取其中全局热度度量值最大的前P个数据对象的唯一标识符而构成。其中,全局热度度量值是指数据对象在多个应用实例分别对应的本地缓存所关联的前置优先级列表中的最大热度度量值。全局前置优先级列表中的数据对象如果在多个应用实例对应的本地缓存所关联的前置优先级列表中均存在,则保留其中最大的热度度量值作为全局热度度量值,并根据合并后的数据对象的全局热度度量值确定该数据对象在全局前置优先级列表中的排序位置。
随后,本实施例将所述全局前置优先级列表与所述每个本地缓存关联的前置优先级列表进行比较,具体而言,取所述全局前置优先级列表中全局热度度量值最高的N个数据对象的唯一标识符集合相对于每个本地缓存关联的前置优先级列表中的热度度量值最高的N个数据对象的唯一标识符集合的差集。根据所述差集中的唯一标识符所标识的任一数据对象的全局热度度量值更新所述每个本地缓存关联的前置优先级列表。同时,将所述差集中的唯一标识符所标识的数据对象的全局热度度量值分别与每个本地缓存中的数据对象的最小热度度量值进行比较。判断所述差集中的唯一标识符所标识的数据对象的全局热度度量值是否大于每个本地缓存中的数据对象的最小热度度量值,如是,则根据所述差集中的唯一标识符所标识的数据对象的全局热度度量值确定所述差集中的数据对象在本地缓存的位置,将所述差集中的数据对象及其全局热度度量值写入每个本地缓存,用所述差集中的数据对象及其全局热度度量值替换所述每个本地缓存中的最小热度度量值的数据对象及其热度度量值。
本实施例的方案可以结合Zookeeper分布式应用协调服务来实现,Zookeeper是一个分布式的开放源码的分布式应用协调服务,目标应用的每个应用实例可以注册为Zookeeper上的一个临时节点,每个应用实例可以定期向对应的临时节点发送本地缓存关联的前置优先级列表,后台管理进程可以通过订阅每个临时节点获得各应用实例发送的前置优先级列表,合并为全局前置优先级列表,并相应获得所述全局前置优先级列表与所述每个本地缓存关联的前置优先级列表的差集,通知给每个应用实例。
进一步地,对于本地缓存中被替换的数据对象,可以进一步判断所述本地缓存中被替换的数据对象是否缓存在所述二级分布式缓存的分布式缓存节点,如否,则可以将所述本地缓存中被替换的数据对象分布写入所述二级分布式缓存的各分布式缓存节点。
综上,本实施例通过将所述多个本地缓存分别关联的多个前置优先级列表进行合并排序得到全局前置优先级列表,将全局前置优先级列表与每个本地缓存关联的前置优先级列表进行比较,获取所述全局前置优先级列表中全局热度度量值最高的第二数量的数据对象的唯一标识符集合与所述每个本地缓存关联的前置优先级列表中热度度量值最高的第二数量的数据对象的唯一标识符集合之间的差集,在所述差集中的唯一标识符所标识的任一数据对象的全局热度度量值大于所述每个本地缓存中的数据对象的最小热度度量值时,用所述差集中的数据对象及其全局热度度量值替换所述每个本地缓存中的最小热度度量值的数据对象及其热度度量值,如此可以进一步获得应用维度上的全局热点数据对象,并写入每个应用实例的本地缓存,有效地防止每个应用实例中客户端访问的实质上的冷数据对象替换分布式多级缓存中的热点数据对象的问题,提高分布式多级缓存中数据对象的命中率,提升高并发下目标应用对客户端的数据访问请求的响应性能。
在一些实施方式中,在前述任一实施例的基础上,如图7所示,所述步骤S603根据所述差集中的唯一标识符所标识的任一数据对象的全局热度度量值更新所述每个本地缓存关联的前置优先级列表,还可以包括以下步骤:
步骤S701,根据所述任一数据对象的全局热度度量值与所述每个本地缓存关联的前置优先级列表中的数据对象的热度度量值的比较,确定所述任一数据对象的唯一标识符在所述每个本地缓存关联的前置优先级列表中的位置;
步骤S702,根据所述任一数据对象的唯一标识符在所述每个本地缓存关联的前置优先级列表中的位置更新所述每个本地缓存关联的前置优先级列表,使得所述每个本地缓存关联的前置优先级列表保持记录热度度量值最高的第一数量的数据对象的唯一标识符和热度度量值。
本实施例通过所述全局前置优先级列表中全局热度度量值最高的第二数量的数据对象的唯一标识符集合与所述每个本地缓存关联的前置优先级列表中热度度量值最高的第二数量的数据对象的唯一标识符集合之间的差集比较,进一步将所述差集中的唯一标识符所标识的任一数据对象的全局热度度量值与所述每个本地缓存关联的前置优先级列表中的数据对象的热度度量值进行比较,确定所述任一数据对象的唯一标识符在所述每个本地缓存关联的前置优先级列表中的位置,并基于所述任一数据对象的唯一标识符在所述每个本地缓存关联的前置优先级列表中的位置更新所述前置优先级列表,更新后的前置优先级列表始终保持记录每个应用实例被客户端访问的热度度量值最高的第一数量的数据对象的唯一标识符及其热度度量值。
在一些实施方式中,在前述任一实施例的基础上,如图8所示,所述方法还可以包括以下步骤:
步骤S801,计算每个度量周期中所述每个本地缓存关联的前置优先级列表中的所述第二数量的数据对象的唯一标识符集合在所述本地缓存中的第一平均命中率以及所述第三数量的数据对象的唯一标识符集合在所述二级分布式缓存中的第二平均命中率;
步骤S802,判断所述第一平均命中率和第二平均命中率是否满足所述第一平均命中率小于预定阈值且所述第二平均命中率大于所述预定阈值的条件,如是,则将所述前置优先级列表和本地缓存中的全部数据对象的热度度量值按比例进行衰减,直至后续度量周期中所述第一平均命中率大于等于所述预定阈值。
本实施例中,第一平均命中率用于表征每个度量周期中每个本地缓存关联的前置优先级列表中所述第二数量的数据对象的唯一标识符集合(对应于前述实施例中所述第一前置优先级列表)在本地缓存中的平均命中率,第二平均命中率用于表征每个度量周期中每个本地缓存关联的前置优先级列表中所述第三数量的数据对象的唯一标识符集合(对应于前述实施例中所述第二前置优先级列表)在所述二级分布式缓存中的平均命中率。在一个实施方式中,所述第一平均命中率为所述第二数量的数据对象的唯一标识符集合在所述每个本地缓存中的总命中数与所述第二数量的比值,所述第二平均命中率为所述第三数量的数据对象的唯一标识符集合在所述二级分布式缓存中的总命中数与所述第三数量的比值。
假设在一个度量周期中,某个应用实例处理了客户端的C个数据访问请求,其中,。如果该应用实例对应的本地缓存关联的前置优先级列表中第一前置优先级列表中的数据对象的唯一标识符集合在本地缓存中的总命中数为/>,则第一平均命中率/>可以用如下公式计算得到,/>。如果该应用实例对应的本地缓存关联的前置优先级列表中第二前置优先级列表中的数据对象的唯一标识符集合在所述二级分布式缓存中的总命中数为/>,则第二平均命中率/>可以用如下公式计算得到,/>。
在每个度量周期,判断所述第一平均命中率和第二平均命中率是否满足所述第一平均命中率小于预定阈值且所述第二平均命中率大于所述预定阈值的条件。若是,则表明前置优先级列表中写入二级分布式缓存的第二前置优先级列表中的数据对象的整体热度趋势超过了写入本地缓存的第一前置优先级列表中的数据对象的整体热度趋势,即第二前置优先级列表中的数据对象逐渐变热。此时,可以将所述前置优先级列表和本地缓存中的全部数据对象的热度度量值按比例进行衰减,以缩短第二前置优先级列表中的数据对象的热度度量值与第一前置优先级列表中的数据对象的热度度量值之前的差距,使得后续度量周期中,位于第二前置优先级列表中的数据对象可以更快写入本地缓存,替换第一前置优先级列表中原有的逐渐变冷的旧数据对象,直至所述第一平均命中率大于等于所述预定阈值。
在一个实施方式中,将所述前置优先级列表和本地缓存中的全部数据对象的热度度量值按比例进行衰减可以包括折半衰减,即将所述前置优先级列表和本地缓存中的全部数据对象的热度度量值衰减为原热度度量值的1/2。
本实施例通过计算每个度量周期中所述第二数量的数据对象的唯一标识符集合在所述本地缓存中的第一平均命中率以及所述第三数量的数据对象的唯一标识符集合在所述二级分布式缓存中的第二平均命中率,当所述第一平均命中率小于预定阈值且所述第二平均命中率大于所述预定阈值时,将所述前置优先级列表和本地缓存中的全部数据对象的热度度量值按比例进行衰减,直至后续度量周期中所述第一平均命中率大于等于所述预定阈值。从而,可以进一步防止每个应用实例中客户端访问的实质上的冷数据对象替换分布式多级缓存中的热点数据对象的问题,提高分布式多级缓存中数据对象的命中率,提升高并发下目标应用对客户端的数据访问请求的响应性能。
图9是根据本申请一实施例的分布式多级缓存的数据处理装置的结构示意图。如图9所示,本申请的分布式多级缓存的数据处理装置,包括以下单元:
缓存构建单元901,用于为目标应用的多个应用实例中的每个应用实例分别构建对应的本地缓存,获得所述多个应用实例分别对应的多个本地缓存;
数据监视单元902,用于为所述多个本地缓存中的每个本地缓存分别构建前置优先级列表,获得所述多个本地缓存分别关联的多个前置优先级列表,所述前置优先级列表用于实时记录每个应用实例中被客户端访问的热度度量值最高的第一数量的数据对象的唯一标识符和热度度量值,并按照数据对象的热度度量值排序;
缓存处理单元903,用于从所述每个本地缓存关联的前置优先级列表中的第一数量的数据对象的唯一标识符集合中获取热度度量值最高的第二数量的数据对象的唯一标识符集合,根据所述第二数量的数据对象的唯一标识符集合获得所述第二数量的数据对象,将所述第二数量的数据对象及其热度度量值写入所述每个本地缓存,并根据所述第一数量的数据对象的唯一标识符集合中除所述第二数量的数据对象的唯一标识符集合之外的第三数量的数据对象的唯一标识符集合获得所述第三数量的数据对象,将所述第三数量的数据对象分布地写入二级分布式缓存中的各缓存节点。
在一些实施方式中,在前述实施例的基础上,如图10所示,所述装置还可以包括以下单元:
第一列表更新单元1001,用于每个应用实例响应于客户端对目标数据对象的访问请求,实时计算所述目标数据对象的热度度量值,根据所述目标数据对象的热度度量值更新所述每个应用实例对应的本地缓存关联的前置优先级列表;
命中结果判断单元1002,用于判断所述目标数据对象是否在所述每个应用实例对应的本地缓存中命中,如果没有命中,则从所述二级分布式缓存或者后端的数据库节点中查找得到所述目标数据对象;
第一数据替换单元1003,用于判断所述目标数据对象的热度度量值是否大于所述每个应用实例对应的本地缓存中的数据对象的最小热度度量值;如是,则用所述目标数据对象及其热度度量值替换所述每个应用实例对应的本地缓存中的最小热度度量值的数据对象及其热度度量值。
在一个实施方式中,所述装置还可以包括:
缓存更新单元,用于如果所述目标数据对象在所述每个应用实例对应的本地缓存中命中,则根据所述目标数据对象的热度度量值更新所述每个应用实例对应的本地缓存中的目标数据对象的位置和热度度量值。
在一个实施方式中,在前述任一实施例的基础上,所述第一列表更新单元1001还可以用于:
根据所述目标数据对象的热度度量值与所述每个应用实例对应的本地缓存关联的前置优先级列表中的数据对象的热度度量值的比较,确定所述目标数据对象的唯一标识符在所述前置优先级列表中的位置;
根据所述目标数据对象的唯一标识符在所述前置优先级列表中的位置更新所述前置优先级列表,使得所述前置优先级列表保持记录热度度量值最高的第一数量的数据对象的唯一标识符和热度度量值。
在一些实施方式中,在前述任一实施例的基础上,如图11所示,所述装置还可以包括以下单元:
列表聚合单元1101,用于将所述多个前置优先级列表进行合并排序,得到全局前置优先级列表,所述全局前置优先级列表记录所述多个应用实例中被客户端访问的全局热度度量值最高的第一数量的数据对象的唯一标识符和全局热度度量值;
差集比较单元1102,用于将所述全局前置优先级列表与所述每个本地缓存关联的前置优先级列表进行比较,获取所述全局前置优先级列表中全局热度度量值最高的第二数量的数据对象的唯一标识符集合与所述每个本地缓存关联的前置优先级列表中热度度量值最高的第二数量的数据对象的唯一标识符集合之间的差集;
第二列表更新单元1103,用于根据所述差集中的唯一标识符所标识的任一数据对象的全局热度度量值更新所述每个本地缓存关联的前置优先级列表;
第二数据替换单元1104,用于判断所述任一数据对象的全局热度度量值是否大于所述每个本地缓存中的数据对象的最小热度度量值;如是,则从所述二级分布式缓存或者后端的数据库节点中查找得到所述任一数据对象,用所述任一数据对象及其全局热度度量值替换所述每个本地缓存中的最小热度度量值的数据对象及其热度度量值。
在一些实施方式中,在前述任一实施例的基础上,所述第二列表更新单元1103还可以用于:
根据所述任一数据对象的全局热度度量值与所述每个本地缓存关联的前置优先级列表中的数据对象的热度度量值的比较,确定所述任一数据对象的唯一标识符在所述每个本地缓存关联的前置优先级列表中的位置;
根据所述任一数据对象的唯一标识符在所述每个本地缓存关联的前置优先级列表中的位置更新所述每个本地缓存关联的前置优先级列表,使得所述每个本地缓存关联的前置优先级列表保持记录热度度量值最高的第一数量的数据对象的唯一标识符和热度度量值。
在一些实施方式中,在前述任一实施例的基础上,如图12所示,所述装置还可以包括以下单元:
命中计算单元1201,用于计算每个度量周期中所述每个本地缓存关联的前置优先级列表中的所述第二数量的数据对象的唯一标识符集合在所述本地缓存中的第一平均命中率以及所述第三数量的数据对象的唯一标识符集合在所述二级分布式缓存中的第二平均命中率;
热度衰减单元1202,用于判断所述第一平均命中率和第二平均命中率是否满足所述第一平均命中率小于预定阈值且所述第二平均命中率大于所述预定阈值的条件,如是,则将所述前置优先级列表和本地缓存中的全部数据对象的热度度量值按比例进行衰减,直至后续度量周期中所述第一平均命中率大于等于所述预定阈值。
综上,本申请实施例的分布式多级缓存的数据处理方法和装置,通过为目标应用的每个应用实例对应的本地缓存分别构建关联的前置优先级列表,实时记录每个应用实例中被客户端访问的热度度量值最高的第一数量的数据对象的唯一标识符和热度度量值,从所述每个本地缓存关联的前置优先级列表中的第一数量的数据对象的唯一标识符集合中获取热度度量值最高的第二数量的数据对象的唯一标识符集合,根据所述第二数量的数据对象的唯一标识符集合获得所述第二数量的数据对象,将所述第二数量的数据对象及其热度度量值写入所述每个本地缓存,并根据所述第一数量的数据对象的唯一标识符集合中除所述第二数量的数据对象的唯一标识符集合之外的第三数量的数据对象的唯一标识符集合获得所述第三数量的数据对象,将所述第三数量的数据对象分布地写入二级分布式缓存中的各缓存节点,从而有效地防止应用实例中客户端访问的实质上的冷数据对象替换分布式多级缓存中的热点数据对象的问题,显著提高分布式多级缓存中数据对象的命中率,提升高并发下目标应用对客户端的数据访问请求的响应性能。
需要说明的是,本领域技术人员可以理解,本申请的方法实施例所描述的不同实施方式及其说明解释和所达到的技术效果,同样适用于本申请的装置实施例中,在此不再赘述。
进一步地,本申请实施例还提出一种电子设备,该电子设备可以包括:一个或多个处理器以及存储器。其中,存储器存储有计算机程序指令,一个或多个处理器可以调用存储器中的计算机程序指令以执行本申请任一实施方式所述方法的全部或部分步骤。上述的存储器中的计算机程序指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。
进一步地,本申请还提供一种计算机程序产品,所述计算机程序产品包括存储有计算机程序的非暂态计算机可读存储介质,当该计算机可读存储介质连接至计算机设备,所述计算机程序被计算机设备的一个或多个处理器执行时,能够执行本申请任一实施方式所述方法的全部或部分步骤。
进一步地,本申请还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序可以被一个或多个处理器执行以执行本申请任一实施方式所述方法的全部或部分步骤。
通过以上的实施方式的描述,本领域技术人员可以清楚地了解到本申请的各实施方式可借助软件或者软件结合必要的通用硬件平台的方式来实现,当然也可以通过硬件功能实现。基于这样的理解,本申请的技术方案本质上或者对现有技术做出贡献的部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备,例如包括但不限于个人计算机,服务器,或者网络设备等,来执行本申请任一实施方式所述方法的全部或部分步骤。前述的存储介质可以包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、磁碟或者光盘等各种可以存储计算机程序代码的介质。
以上描述了本申请示例性的实施例,应当理解,上述示例性的实施例不是限制性的,而是说明性的,本申请的保护范围不限于此。应理解,本领域技术人员在不脱离本申请的精神和范围的情况下,可以对本申请实施例进行修改和变型,这些修改和变型理应在本申请的保护范围之内。
Claims (10)
1.一种分布式多级缓存的数据处理方法,其特征在于,包括:
为目标应用的多个应用实例中的每个应用实例分别构建对应的本地缓存,获得所述多个应用实例分别对应的多个本地缓存;
为所述多个本地缓存中的每个本地缓存分别构建前置优先级列表,获得所述多个本地缓存分别关联的多个前置优先级列表,所述前置优先级列表用于实时记录每个应用实例中被客户端访问的热度度量值最高的第一数量的数据对象的唯一标识符和热度度量值,并按照数据对象的热度度量值排序;
从所述每个本地缓存关联的前置优先级列表中的第一数量的数据对象的唯一标识符集合中获取热度度量值最高的第二数量的数据对象的唯一标识符集合,根据所述第二数量的数据对象的唯一标识符集合获得所述第二数量的数据对象,将所述第二数量的数据对象及其热度度量值写入所述每个本地缓存,并根据所述第一数量的数据对象的唯一标识符集合中除所述第二数量的数据对象的唯一标识符集合之外的第三数量的数据对象的唯一标识符集合获得所述第三数量的数据对象,将所述第三数量的数据对象分布地写入二级分布式缓存中的各缓存节点。
2.根据权利要求1所述的分布式多级缓存的数据处理方法,其特征在于,所述热度度量值包括每个应用实例实时监测的每个数据对象的读取次数和更新次数之间的差值。
3.根据权利要求2所述的分布式多级缓存的数据处理方法,其特征在于,所述方法还包括:
所述每个应用实例响应于客户端对目标数据对象的访问请求,实时计算所述目标数据对象的热度度量值,根据所述目标数据对象的热度度量值更新所述每个应用实例对应的本地缓存关联的前置优先级列表;
判断所述目标数据对象是否在所述每个应用实例对应的本地缓存中命中,如果没有命中,则从所述二级分布式缓存或者后端的数据库节点中查找得到所述目标数据对象;
判断所述目标数据对象的热度度量值是否大于所述每个应用实例对应的本地缓存中的数据对象的最小热度度量值;如是,则用所述目标数据对象及其热度度量值替换所述每个应用实例对应的本地缓存中的最小热度度量值的数据对象及其热度度量值。
4.根据权利要求3所述的分布式多级缓存的数据处理方法,其特征在于,所述根据所述目标数据对象的热度度量值更新所述每个应用实例对应的本地缓存关联的前置优先级列表包括:
根据所述目标数据对象的热度度量值与所述每个应用实例对应的本地缓存关联的前置优先级列表中的数据对象的热度度量值的比较,确定所述目标数据对象的唯一标识符在所述前置优先级列表中的位置;
根据所述目标数据对象的唯一标识符在所述前置优先级列表中的位置更新所述前置优先级列表,使得所述前置优先级列表保持记录热度度量值最高的第一数量的数据对象的唯一标识符和热度度量值。
5.根据权利要求4所述的分布式多级缓存的数据处理方法,其特征在于,所述方法还包括:
如果所述目标数据对象在所述每个应用实例对应的本地缓存中命中,则根据所述目标数据对象的热度度量值更新所述每个应用实例对应的本地缓存中的目标数据对象的位置和热度度量值。
6.根据权利要求1所述的分布式多级缓存的数据处理方法,其特征在于,所述方法还包括:
将所述多个前置优先级列表进行合并排序,得到全局前置优先级列表,所述全局前置优先级列表记录所述多个应用实例中被客户端访问的全局热度度量值最高的第一数量的数据对象的唯一标识符和全局热度度量值;
将所述全局前置优先级列表与所述每个本地缓存关联的前置优先级列表进行比较,获取所述全局前置优先级列表中全局热度度量值最高的第二数量的数据对象的唯一标识符集合与所述每个本地缓存关联的前置优先级列表中热度度量值最高的第二数量的数据对象的唯一标识符集合之间的差集;
根据所述差集中的唯一标识符所标识的任一数据对象的全局热度度量值更新所述每个本地缓存关联的前置优先级列表;
判断所述任一数据对象的全局热度度量值是否大于所述本地缓存中的数据对象的最小热度度量值;如是,则从所述二级分布式缓存或者后端的数据库节点中查找得到所述任一数据对象,用所述任一数据对象及其全局热度度量值替换所述每个本地缓存中的最小热度度量值的数据对象及其热度度量值。
7.根据权利要求6所述的分布式多级缓存的数据处理方法,其特征在于,所述根据所述差集中的唯一标识符所标识的任一数据对象的全局热度度量值更新所述每个本地缓存关联的前置优先级列表包括:
根据所述任一数据对象的全局热度度量值与所述每个本地缓存关联的前置优先级列表中的数据对象的热度度量值的比较,确定所述任一数据对象的唯一标识符在所述每个本地缓存关联的前置优先级列表中的位置;
根据所述任一数据对象的唯一标识符在所述每个本地缓存关联的前置优先级列表中的位置更新所述每个本地缓存关联的前置优先级列表,使得所述每个本地缓存关联的前置优先级列表保持记录热度度量值最高的第一数量的数据对象的唯一标识符和热度度量值。
8.根据权利要求1所述的分布式多级缓存的数据处理方法,其特征在于,所述方法还包括:
计算每个度量周期中所述每个本地缓存关联的前置优先级列表中的所述第二数量的数据对象的唯一标识符集合在所述本地缓存中的第一平均命中率以及所述第三数量的数据对象的唯一标识符集合在所述二级分布式缓存中的第二平均命中率;
判断所述第一平均命中率和第二平均命中率是否满足所述第一平均命中率小于预定阈值且所述第二平均命中率大于所述预定阈值的条件,如是,则将所述前置优先级列表和本地缓存中的全部数据对象的热度度量值按比例进行衰减,直至后续度量周期中所述第一平均命中率大于等于所述预定阈值。
9.根据权利要求8所述的分布式多级缓存的数据处理方法,其特征在于,所述第一平均命中率为所述第二数量的数据对象的唯一标识符集合在所述本地缓存中的总命中数与所述第二数量的比值,所述第二平均命中率为所述第三数量的数据对象的唯一标识符集合在所述二级分布式缓存中的总命中数与所述第三数量的比值。
10.一种分布式多级缓存的数据处理装置,其特征在于,包括:
缓存构建单元,用于为目标应用的多个应用实例中的每个应用实例分别构建对应的本地缓存,获得所述多个应用实例分别对应的多个本地缓存;
数据监视单元,用于为所述多个本地缓存中的每个本地缓存分别构建前置优先级列表,获得所述多个本地缓存分别关联的多个前置优先级列表,所述前置优先级列表用于实时记录每个应用实例中被客户端访问的热度度量值最高的第一数量的数据对象的唯一标识符和热度度量值,并按照数据对象的热度度量值排序;
缓存处理单元,用于从所述每个本地缓存关联的前置优先级列表中的第一数量的数据对象的唯一标识符集合中获取热度度量值最高的第二数量的数据对象的唯一标识符集合,根据所述第二数量的数据对象的唯一标识符集合获得所述第二数量的数据对象,将所述第二数量的数据对象及其热度度量值写入所述每个本地缓存,并根据所述第一数量的数据对象的唯一标识符集合中除所述第二数量的数据对象的唯一标识符集合之外的第三数量的数据对象的唯一标识符集合获得所述第三数量的数据对象,将所述第三数量的数据对象分布地写入二级分布式缓存中的各缓存节点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310086503.4A CN115878677B (zh) | 2023-02-09 | 2023-02-09 | 分布式多级缓存的数据处理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310086503.4A CN115878677B (zh) | 2023-02-09 | 2023-02-09 | 分布式多级缓存的数据处理方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115878677A true CN115878677A (zh) | 2023-03-31 |
CN115878677B CN115878677B (zh) | 2023-05-12 |
Family
ID=85760859
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310086503.4A Active CN115878677B (zh) | 2023-02-09 | 2023-02-09 | 分布式多级缓存的数据处理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115878677B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117785949A (zh) * | 2024-02-28 | 2024-03-29 | 云南省地矿测绘院有限公司 | 一种数据缓存方法、电子设备、存储介质以及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106527988A (zh) * | 2016-11-04 | 2017-03-22 | 郑州云海信息技术有限公司 | 一种固态硬盘数据迁移的方法及装置 |
CN112506973A (zh) * | 2020-12-14 | 2021-03-16 | ***股份有限公司 | 一种存储数据管理的方法及装置 |
CN113761321A (zh) * | 2021-08-06 | 2021-12-07 | 广州华多网络科技有限公司 | 数据访问控制、数据缓存控制方法及其装置、设备与介质 |
CN115168244A (zh) * | 2022-07-29 | 2022-10-11 | 苏州浪潮智能科技有限公司 | 一种数据更新方法、装置、设备及可读存储介质 |
-
2023
- 2023-02-09 CN CN202310086503.4A patent/CN115878677B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106527988A (zh) * | 2016-11-04 | 2017-03-22 | 郑州云海信息技术有限公司 | 一种固态硬盘数据迁移的方法及装置 |
CN112506973A (zh) * | 2020-12-14 | 2021-03-16 | ***股份有限公司 | 一种存储数据管理的方法及装置 |
CN113761321A (zh) * | 2021-08-06 | 2021-12-07 | 广州华多网络科技有限公司 | 数据访问控制、数据缓存控制方法及其装置、设备与介质 |
CN115168244A (zh) * | 2022-07-29 | 2022-10-11 | 苏州浪潮智能科技有限公司 | 一种数据更新方法、装置、设备及可读存储介质 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117785949A (zh) * | 2024-02-28 | 2024-03-29 | 云南省地矿测绘院有限公司 | 一种数据缓存方法、电子设备、存储介质以及装置 |
CN117785949B (zh) * | 2024-02-28 | 2024-05-10 | 云南省地矿测绘院有限公司 | 一种数据缓存方法、电子设备、存储介质以及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN115878677B (zh) | 2023-05-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108810041B (zh) | 一种分布式缓存***的数据写入及扩容方法、装置 | |
US9235508B2 (en) | Buffer management strategies for flash-based storage systems | |
EP3210121B1 (en) | Cache optimization technique for large working data sets | |
US10198363B2 (en) | Reducing data I/O using in-memory data structures | |
US8760956B1 (en) | Data processing method and apparatus | |
US10409728B2 (en) | File access predication using counter based eviction policies at the file and page level | |
Liu et al. | Hybrid storage management for database systems | |
CN106406759B (zh) | 一种数据存储方法及装置 | |
WO2018040167A1 (zh) | 数据缓存方法及装置 | |
JP6402647B2 (ja) | データ配置プログラム、データ配置装置およびデータ配置方法 | |
CN113867627B (zh) | 一种存储***性能优化方法及*** | |
US11461239B2 (en) | Method and apparatus for buffering data blocks, computer device, and computer-readable storage medium | |
CN115878677B (zh) | 分布式多级缓存的数据处理方法和装置 | |
CN112148690A (zh) | 一种文件缓存方法、文件访问请求处理方法及装置 | |
CN111581218A (zh) | 一种利用双粒度加速访问基于日志结构合并树的键值数据存储的方法 | |
CN109002400B (zh) | 一种内容感知型计算机缓存管理***及方法 | |
Ungureanu et al. | TBF: A memory-efficient replacement policy for flash-based caches | |
CN115129618A (zh) | 用于优化数据缓存的方法和设备 | |
CN115934583A (zh) | 分级缓存方法、装置及*** | |
Yang et al. | HeuristicDB: a hybrid storage database system using a non-volatile memory block device | |
CN115168416A (zh) | 数据缓存方法、装置、存储介质及电子装置 | |
CN112445794B (zh) | 一种大数据***的缓存方法 | |
US11899642B2 (en) | System and method using hash table with a set of frequently-accessed buckets and a set of less frequently-accessed buckets | |
US8028128B2 (en) | Method for increasing cache directory associativity classes in a system with a register space memory | |
CN114296635A (zh) | 缓存数据的缓存淘汰方法、装置、终端及存储介质 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |