一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种提升本地缓存命中率的方法、装置、设备及存储介质与流程

2022-02-22 08:22:37 来源:中国专利 TAG:


1.本技术涉及数据交互技术领域,尤其是涉及一种提升本地缓存命中率的方法、装置、设备及存储介质。


背景技术:

2.电商平台每年都会有大促的运营活动。为了营造抢购的紧张氛围,一般都会在指定的时间点,例如晚上8点、凌晨0点,开始对应的促销。而在对应高峰时间点,因业务系统的请求压力非常高,最高可去到100万qps(query per second,每秒查询次数)。
3.目前,为了提升用户体验,同时考虑节省机器资源,通过引入服务端的本地缓存来提升单台应用的qps。
4.但服务端本地缓存是有容量上限的,采用普通的lru(least recently used,最近最少使用)算法维护的缓存,在有限空间的条件下,常常出现热点数据被踢掉的情况,如业务层面最常用且每次请求必然会访问的数据被踢掉,而使得整体命中率不高,响应速度慢,用户体验有待改善。
5.针对上述中的相关技术,发明人认为存在有现有的服务端本地缓存的热点数据容易被踢掉,导致命中率低的缺陷。


技术实现要素:

6.为了减少热点数据被踢掉的情况,本技术提供了一种提升本地缓存命中率的方法、装置、设备及存储介质。
7.第一方面,本技术提供一种提升本地缓存命中率的方法,具有减少热点数据被踢掉的特点。
8.本技术是通过以下技术方案得以实现的:
9.一种提升本地缓存命中率的方法,包括以下步骤:
10.基于数据类型的请求频次以及对应类型数据占用的空间,将本地缓存空间划分为专用存储空间和临时存储空间,其中,专用存储空间用于存储占用空间固定且属于高频访问的热点数据,临时存储空间用于存储占用空间大且属于低频访问的非热点数据;
11.把业务数据库中的热点数据预热到本地缓存中;
12.使已更新的所述热点数据实时存储至所述专用存储空间;
13.当收到数据请求信息时,从所述本地缓存空间获取所需数据。
14.通过采用上述技术方案,基于数据类型的请求频次以及对应类型数据占用的空间,将本地缓存空间划分为专用存储空间和临时存储空间,以确保请求频次高且占用空间固定的缓存类型数据能永久存放在本地缓存中,保证数据长时间有效,当外部请求访问这些数据类型时,可以直接从本地缓存中获取数据;为了使本地缓存的数据和业务数据库中的数据保持一致,为本地缓存做数据预热,确保热点数据设置到本地缓存中,同时,如果消息发生了丢失,可以修正缓存中错误的数据,从而进一步减少消息丢失产生的影响;把业务
数据库中的热点数据预热到本地缓存中,以在业务数据库的后台管理变更信息后,实时将最新数据推送到本地缓存中,使得本地缓存中的热点数据更新,也保持和业务数据库中的数据记录一致;当收到数据请求信息时,直接从本地缓存空间获取所需数据,迅速响应到请求方,提升qps,降低响应时延,改善用户体验,同时,减少了热点数据被踢掉的情况,提升了服务端的本地缓存命中率;进而提升本地缓存命中率的方法通过分区干预本地缓存空间,使得其中一部分热点数据总是能命中缓存,提升了服务端本地缓存的命中率,保证了业务系统的整体性能,提升了用户的使用体验。
15.本技术在一较佳示例中可以进一步配置为:所述把业务数据库中的热点数据预热到本地缓存中的步骤包括:
16.定时扫描业务数据库,从业务数据库中获取对应的业务类型数据;
17.将定时扫描业务数据库,从业务数据库中获取对应的业务类型数据定义为第一消息,并将第一消息通知到每个业务应用;
18.当接收到所述第一消息后,所述业务应用将从业务数据库中获取的对应业务类型数据设置到本地缓存中。
19.通过采用上述技术方案,定时扫描业务数据库,从业务数据库中获取对应的业务类型数据,并将消息通知到每个业务应用,业务应用接收到消息后,将获取的业务类型数据设置到本地缓存中,从而保证本地缓存的数据和业务数据库中的数据一致;又由于服务端应用在版本发布或日常过程中也会有重启的情况,而重启后本地缓存空间是空的,通过提前把业务数据预热好,从而提升服务端本地缓存的命中率;同时,如果消息发生了丢失,可以修正缓存中错误的数据,从而进一步减少消息丢失产生的影响。
20.本技术在一较佳示例中可以进一步配置为:所述使已更新的所述热点数据实时存储至所述专用存储空间的步骤包括:
21.解析获取变更的业务类型数据;
22.将解析获取变更的业务类型数据定义为第二消息,并将第二消息通知到每个业务应用;
23.当接收到所述第二消息后,所述业务应用查询所述本地缓存空间是否有相同的数据类型;
24.当存在相同的数据类型时,所述业务应用根据所述第二消息,使变更的业务类型数据实时存储至所述专用存储空间。
25.通过采用上述技术方案,解析获取到变更的业务数据,并将消息通知到每个业务应用,业务应用接受到消息后,借助查询本地缓存是否有存在的数据,确认更新的数据是否为热点数据,如果是则主动更新本地缓存的热点数据,以使已更新的热点数据实时存储至专用存储空间,进而有利于其中一部分热点数据总是能命中缓存。
26.本技术在一较佳示例中可以进一步配置为:所述使已更新的所述热点数据实时存储至所述专用存储空间的步骤还包括:
27.当无相同的数据类型时,判断该数据是否为热点数据;
28.当数据不是热点数据时,所述业务应用将接收的所述第二消息丢弃。
29.通过采用上述技术方案,当本地缓存空间中无相同的数据类型时,且待更新的数据是非热点数据时,因为本地缓存的空间是有限的,非热点数据没必要存放在本地缓存空
间中、占用宝贵的缓存空间,直接选择丢弃。
30.本技术在一较佳示例中可以进一步配置为:还包括以下步骤:
31.当从所述本地缓存空间获取的结果为空时,从二级的中央缓存获取所需数据。
32.通过采用上述技术方案,当从本地缓存空间获取的结果为空时,从二级的中央缓存获取所需数据,采取次级策略,确保获取到所需数据。
33.本技术在一较佳示例中可以进一步配置为:还包括以下步骤:
34.当从二级的中央缓存获取的结果为空时,从三级的业务数据库或外部应用服务获取所需数据。
35.通过采用上述技术方案,当从二级的中央缓存获取的结果为空时,从三级的业务数据库或外部应用服务获取所需数据,以回源到业务数据库中获取数据,保证获取到所需的数据。
36.本技术在一较佳示例中可以进一步配置为:还包括以下步骤:
37.当从三级的业务数据库或外部应用服务获取到所需数据后,将获取的数据信息反向写入对应的本地缓存空间和中央缓存。
38.通过采用上述技术方案,当从三级的业务数据库或外部应用服务获取到所需数据后,将获取的数据信息反向写入对应的本地缓存空间和中央缓存,更新本地缓存或中央缓存的数据,以确保再次遇到同样的请求需求时无需再次穿透到业务数据库中获取所需数据,提升qps,降低响应时延,使得其中一部分热点数据总是能命中缓存,提升服务端本地缓存的命中率,改善用户体验。
39.第二方面,本技术提供一种提升本地缓存命中率的装置,具有减少热点数据被踢掉的特点。
40.本技术是通过以下技术方案得以实现的:
41.一种提升本地缓存命中率的装置,包括:
42.缓存管理模块,用于基于数据类型的请求频次以及对应类型数据占用的空间,将本地缓存空间划分为专用存储空间和临时存储空间,其中,专用存储空间用于存储占用空间固定且属于高频访问的热点数据,临时存储空间用于存储占用空间大且属于低频访问的非热点数据;
43.全量更新任务模块,用于把业务数据库中的热点数据预热到本地缓存中;
44.增量更新任务模块,用于使已更新的所述热点数据实时存储至所述专用存储空间;
45.数据获取模块,用于在收到数据请求信息时,从所述本地缓存空间获取所需数据。
46.第三方面,本技术提供一种计算机设备,具有减少热点数据被踢掉的特点。
47.本技术是通过以下技术方案得以实现的:
48.一种计算机设备,包括存储器、处理器以及存储在所述存储器中并在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述提升本地缓存命中率的方法的步骤。
49.第四方面,本技术提供一种计算机可读存储介质,具有减少热点数据被踢掉的特点。
50.本技术是通过以下技术方案得以实现的:
51.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述提升本地缓存命中率的方法的步骤。
52.综上所述,本技术包括以下至少一种有益技术效果:
53.1、一种提升本地缓存命中率的方法通过分区干预本地缓存空间,减少了热点数据被踢掉的情况,使得其中一部分热点数据总是能命中缓存,提升了服务端本地缓存的命中率,保证了业务系统的整体性能,提升了用户的使用体验;
54.2、把业务数据库中的热点数据预热到本地缓存中,以提前把业务数据预热好,从而提升服务端本地缓存的命中率,同时,如果消息发生了丢失,可以修正缓存中错误的数据,进一步减少消息丢失产生的影响;
55.3、直接选择丢弃待更新的非热点数据,释放宝贵的本地缓存空间;
56.4、当从本地缓存空间获取的结果为空时,从二级的中央缓存、从三级的业务数据库或外部应用服务获取所需数据,以确保获取到所需数据;
57.5、将获取的数据信息反向写入对应的本地缓存空间和中央缓存,更新本地缓存或中央缓存的数据,以确保再次遇到同样的请求需求时无需再次穿透到业务数据库中获取所需数据,提升qps,降低响应时延。
附图说明
58.图1是本技术其中一实施例一种提升本地缓存命中率的方法的流程示意图。
59.图2是本技术其中一实施例一种提升本地缓存命中率的方法的交互示意图。
60.图3是把业务数据库中的热点数据预热到本地缓存中的步骤流程图。
61.图4是使已更新的热点数据实时存储至专用存储空间的步骤流程图。
62.图5是本技术其中一实施例一种提升本地缓存命中率的装置的结构框图。
63.图6是日常本地缓存的命中率与本技术的本地缓存的命中率的对比图。
具体实施方式
64.本具体实施例仅是对本技术的解释,其并不是对本技术的限制,本领域技术人员在阅读完本说明书后可以根据需要对本实施例,做出没有创造性贡献的修改,但只要在本技术的权利要求范围内都受到专利法的保护。
65.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
66.另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,如无特殊说明,一般表示前后关联对象是一种“或”的关系。
67.服务端的本地缓存是存在于服务器运行的iis(internet information services,互联网信息服务)内存里面,比如将某些页面设置了服务端的本地缓存,在缓存的时间间隔里面,能迅速响应客户端的请求。
68.但因服务端的本地缓存是有容量上限的,常常出现热点数据被踢掉的情况,如业
务层面最常用且每次请求必然会访问的数据被踢掉,进而使得整体命中率不高,响应速度慢,用户体验差。
69.本技术通过分区干预本地缓存空间,保证其中一部分热点数据总是能命中缓存,最终提升服务端应用本地缓存的命中率,保证业务系统整体性能,提升用户的使用体验。
70.下面结合说明书附图对本技术实施例作进一步详细描述。
71.参照图1和图2,本技术实施例提供一种提升本地缓存命中率的方法,所述方法的主要步骤描述如下。
72.s1:基于数据类型的请求频次以及对应类型数据占用的空间,将本地缓存空间划分为专用存储空间和临时存储空间,其中,专用存储空间用于存储占用空间固定且属于高频访问的热点数据,临时存储空间用于存储占用空间大且属于低频访问的非热点数据;
73.s2:把业务数据库中的热点数据预热到本地缓存中;
74.s3:使已更新的热点数据实时存储至专用存储空间;
75.s4:当收到数据请求信息时,从本地缓存空间获取所需数据。
76.具体地,服务端的本地缓存中存放的数据类型有20多种,例如,在售商品信息、商品尺码信息、商品所属专场信息、商品关联的库存信息、商品关联的采购档期信息、条码白名单信息等等。这些缓存类型的数据量并不是一个级别的,比如在售商品信息大概是几百万,而商品所属专场信息只有几万。同时,不同类型的数据,请求的频次也不相同。
77.参照图2,基于数据类型的请求频次以及对应类型数据占用的空间,对服务端的本地缓存中存放的数据进行分类,包括占用空间固定且属于高频访问的热点数据和占用空间大且属于低频访问的非热点数据。同时,将本地缓存空间分隔为专用存储空间special cache和临时存储空间other cache,专用存储空间用于存储热点数据,临时存储空间用于存储非热点数据,以确保请求频次高占用空间固定的缓存类型数据能够永久存放在本地缓存中,进而在外部请求访问这些数据类型时,可以直接从本地的专用存储空间special cache中获取到数据。
78.参照图3,进一步地,s2:把业务数据库中的热点数据预热到服务端应用的本地缓存中的步骤包括:
79.s21:定时扫描业务数据库,从业务数据库中获取对应的业务类型数据;
80.s22:将定时扫描业务数据库,从业务数据库中获取对应的业务类型数据定义为第一消息,并将第一消息通知到每个业务应用;
81.s23:当接收到第一消息后,业务应用将从业务数据库中获取的对应业务类型数据设置到本地缓存中。
82.在定时扫描业务数据库时,根据业务数据类型的数据量和业务敏感度设置扫描时间。本实施例中,数据量大的业务类型定时轮巡的间隔为1个小时或30分钟,数据量小的业务类型则为5分钟。
83.定时扫描业务数据库,从业务数据库中,获取对应的业务类型数据,并通过kafka消息通道,异步将消息广播通知到每个业务应用;业务应用接收到消息数据后,主动将对应数据设置到本地缓存中,完成数据更新。
84.把业务数据库中的热点数据预热到服务端应用的本地缓存中,以确保业务数据库中的热点数据能够设置到本地缓存中,为本地缓存做数据预热,从而提升缓存的命中率。例
如,服务端应用程序重启时,本地缓存中的数据是空的,通过把业务数据库中的热点数据预热到服务端应用的本地缓存中,提前把缓存数据预热好。
85.同时,因把业务数据库中的热点数据预热到服务端应用的本地缓存中,使本地缓存的数据和业务数据库中的数据保持一致,进而在设置的缓存时间较长的情形下,如大于2个小时,当热点数据实时存储至专用存储空间的消息发生了丢失时,可以借助本地缓存的数据修正错误的数据,从而进一步减少数据丢失的影响。
86.参照图4,进一步地,s3:使已更新的热点数据实时存储至专用存储空间的步骤包括:
87.s31:解析获取变更的业务类型数据;
88.s32:将解析获取变更的业务类型数据定义为第二消息,并将第二消息通知到每个业务应用;
89.s33:当接收到第二消息后,业务应用查询本地缓存空间是否有相同的数据类型;
90.s34:当存在相同的数据类型时,业务应用根据第二消息,使变更的业务类型数据实时存储至专用存储空间;当无相同的数据类型时,则判断该数据是否为热点数据,当数据不是热点数据时,业务应用将接收的第二消息丢弃。
91.本实施例中,通过解析业务数据库binlog文件,如后台对商品做了上下架操作、修改库存操作、修改商品属性操作等业务db变更记录,获取到变更的业务数据,并通过kafka消息通道,异步将消息广播通知到每个业务应用。
92.业务应用接受到增量更新的数据后,查询本地缓存是否有存在的数据。
93.如果本地缓存存在相同类型的数据则主动更新,以在业务数据库的后台管理系统变更时,能实时将最新数据推送到服务端应用本地缓存中,让本地缓存中的数据更新,进而保持和业务数据库中的记录一致。
94.如果本地缓存无相同类型的数据时,且判断该业务数据并非热点数据,直接丢弃,因为本地缓存的空间是有限的,非热点数据是冷数据,没必要存放在本地缓存占用宝贵的缓存空间,所以选择直接丢弃策略,释放本地缓存空间。
95.特别地,在判断是否是热点数据时,还需要结合业务的具体场景。如果某个商品从下架状态变化为上架状态,则这种数据是热点数据,因为只有上架的商品用户才能购买。
96.s4:当收到数据请求信息时,从本地缓存空间获取所需数据。基于接收的业务请求,从本地缓存空间获取所需数据,即业务请求返回的基础类型数据,并加工后返回。例如,根据商品尺码信息获取对应尺码的资料、价格及库存信息。加工后返回的业务数据是依赖缓存中各维度的数据,按照一定的业务规则进行处理后,再组装返回的数据。
97.进一步地,当从本地缓存空间获取的结果为空时,则从二级的中央缓存获取所需数据,以穿透到二级的中央缓存获取数据。
98.进一步地,当从二级的中央缓存获取的结果为空时,从三级的业务数据库或外部应用服务获取所需数据,以继续穿透到三级的业务数据库或外部应用服务。
99.且当从三级的业务数据库或外部应用服务获取到所需数据后,将获取的数据信息反向写入对应的本地缓存空间和中央缓存,使得回源获取的数据反向更新到本地缓存中,进而保证后续同种类型数据的请求,可以直接从本地缓存空间或中央缓存中获取数据,而不用再回源穿透到业务或外部应用服务中,提升了qps,降低了响应时延。
100.进而一种提升本地缓存命中率的方法通过分区干预本地缓存空间,使得其中一部分热点数据总是能命中缓存,减少了热点数据被踢掉的情况;把业务数据库中的热点数据预热到本地缓存中,以提前把业务数据预热好,从而提升服务端本地缓存的命中率;同时,当热点数据实时存储至专用存储空间的消息发生了丢失时,可以借助本地缓存的数据修正错误的数据,从而进一步减少数据丢失的影响;提升了服务端本地缓存的命中率,保证了业务系统的整体性能,提升了用户的使用体验。
101.应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本技术实施例的实施过程构成任何限定。
102.参照图5,本技术实施例还提供一种提升本地缓存命中率的装置,该一种提升本地缓存命中率的装置与上述实施例中一种提升本地缓存命中率的方法一一对应。该一种提升本地缓存命中率的装置包括:
103.缓存管理模块,用于基于数据类型的请求频次以及对应类型数据占用的空间,将本地缓存空间划分为专用存储空间和临时存储空间,其中,专用存储空间用于存储占用空间固定且属于高频访问的热点数据,临时存储空间用于存储占用空间大且属于低频访问的非热点数据;
104.全量更新任务模块,用于使本地缓存的数据和业务数据库中的数据保持一致;
105.增量更新任务模块,用于使已更新的热点数据实时存储至专用存储空间;当数据不是热点数据时,将已更新的数据丢弃;
106.数据获取模块,用于在收到数据请求信息时,从本地缓存空间获取所需数据;当从本地缓存空间获取的结果为空时,则从二级的中央缓存获取所需数据;当从二级的中央缓存获取的结果为空时,从三级的业务数据库或外部应用服务获取所需数据,并将获取的数据信息反向写入对应的本地缓存空间和中央缓存。
107.关于一种提升本地缓存命中率的装置的具体限定可以参见上文中对于一种提升本地缓存命中率的方法的限定,在此不再赘述。上述一种提升本地缓存命中率的方法中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
108.参照图6,当未实施本技术的方案在线上运行时,日常本地缓存的命中率大概在75%左右,而使用本技术的方案后,本地缓存的命中率可提升至99%,效果非常显著。
109.在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现上述提升本地缓存命中率的方法。
110.在一个实施例中,提供了一种计算机可读存储介质,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:
111.基于数据类型的请求频次以及对应类型数据占用的空间,将本地缓存空间划分为专用存储空间和临时存储空间,其中,专用存储空间用于存储占用空间固定且属于高频访问的热点数据,临时存储空间用于存储占用空间大且属于低频访问的非热点数据;
112.把业务数据库中的热点数据预热到本地缓存中;
113.使已更新的热点数据实时存储至专用存储空间;
114.当收到数据请求信息时,从本地缓存空间获取所需数据。
115.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。
116.所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述系统的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献