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

缓存监控管理方法、装置、系统、设备和存储介质与流程

2021-11-03 14:30:00 来源:中国专利 TAG:


1.本技术涉及数据缓存技术领域,尤其涉及一种缓存监控管理方法、装置、系统、设备和存储介质。


背景技术:

2.随着互联网技术的快速发展,对服务的响应速度要求越来越高,而提高服务响应的第一大利器就是使用缓存。现有技术中缓存主要分为本地缓存和分布式缓存。
3.对于本地缓存,现有技术通过jvm(java虚拟机)只能获取到整体占用内存情况,而无法区分具体缓存的业务key和对应的value情况。
4.而分布式缓存在例如redis、memcache等分布式服务中,通过命令只能查询到部分数据,且没有汇总数据。
5.现有技术还有一种方法是通过对业务代码手动添加日志,然后根据日志分析来判断,这种方式对业务代码侵入性很高,在业务复杂的系统体系,如果每个业务线都手动去做缓存监控,会导致系统代码混乱,且每个业务线都单独分析,成本较高。


技术实现要素:

6.为了解决现有技术中对服务器缓存的监控过于粗糙、不具体,且监控繁琐的技术问题。本技术提供了一种缓存监控管理方法、装置、系统、设备和存储介质,其主要目的在于能够简单方便且详细具体地监控服务器的缓存数据。
7.为实现上述目的,本技术提供了一种缓存监控管理方法,该方法包括:
8.拦截第一客户端发送的数据请求,数据请求携带第一接入参数和待请求的目标数据的属性信息;
9.根据第一接入参数中的接口参数或注解参数确定第一缓存,第一缓存为所述本地缓存或分布式缓存;
10.根据属性信息确定第一缓存中目标数据对应的目标子缓存区;
11.根据属性信息向目标子缓存区请求目标数据;
12.拦截从目标子缓存区获取到的目标数据;
13.对数据请求和目标数据进行数据分析得到目标子缓存区的缓存监控数据,缓存监控数据包括子缓存区中key的数量、key所占的内存大小、每个key的相关数据中的至少一个。
14.此外,为实现上述目的,本技术还提供了一种缓存监控管理装置,该装置包括:
15.第一拦截模块,用于拦截第一客户端发送的数据请求,数据请求携带第一接入参数和待请求的目标数据的属性信息;
16.第一确定模块,用于根据第一接入参数中的接口参数或注解参数确定第一缓存;
17.第二确定模块,用于根据属性信息确定第一缓存中目标数据对应的目标子缓存区;
18.第一请求模块,用于根据属性信息向目标子缓存区请求目标数据;
19.第二拦截模块,用于拦截从目标子缓存区获取到的目标数据;
20.数据分析模块,用于对数据请求和目标数据进行数据分析得到目标子缓存区的缓存监控数据,所述缓存监控数据包括子缓存区中key的数量、key所占的内存大小、每个key的相关数据中的至少一个。
21.此外,为实现上述目的,本技术还提供了一种缓存监控管理系统,该系统包括:应用服务器和监控服务器,应用服务器内安装有缓存监控管理工具;
22.缓存监控管理工具用于拦截第一客户端发送的数据请求,数据请求携带第一接入参数和待请求的目标数据的属性信息;
23.缓存监控管理工具还用于根据第一接入参数中的接口参数或注解参数确定第一缓存;
24.缓存监控管理工具还用于根据属性信息确定第一缓存中目标数据对应的目标子缓存区;
25.缓存监控管理工具还用于根据属性信息向目标子缓存区请求目标数据;
26.缓存监控管理工具还用于拦截从目标子缓存区获取到的目标数据;
27.监控服务器用于对接收到的缓存监控管理工具上传的数据请求和目标数据进行数据分析,得到目标子缓存区的缓存监控数据,所述缓存监控数据包括子缓存区中key的数量、key所占的内存大小、每个key的相关数据中的至少一个。
28.为实现上述目的,本技术还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机可读指令,处理器执行计算机可读指令时执行如前面任一项的缓存监控管理方法的步骤。
29.为实现上述目的,本技术还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机可读指令,计算机可读指令被处理器执行时,使得处理器执行如前面任一项的缓存监控管理方法的步骤。
30.本技术提出的缓存监控管理方法、装置、系统、设备和存储介质,通过缓存监控管理工具作为中间工具可以安装至任何配置支持的各种服务器中,具有广泛的应用,不需要像现有技术一样通过手动编写日志来跟踪缓存数据,因此,减少了代码的编写工作,且对于应用服务器所在的业务系统而言,由于不会改动业务系统的原代码,因此不会造成业务系统代码混乱,对于业务系统而言代码侵入性低,一定程度上保证了业务系统的稳定性和安全性。另外,由于缓存监控管理工具实时监控所有与缓存相关的来往数据,因此,可以做到对业务系统中每个业务线都能够监控到,成本低、监控范围广。
31.另外,通过嵌入的缓存监控管理工具能够对各种服务器的缓存进行管理和监控,灵活性高,且能够具体监测到每种缓存(例如本地缓存、分布式缓存)的缓存命中率和缓存内存的具体占用情况,而现有技术只能粗略得到缓存的大概情况,本技术实施例保证了缓存监控数据的完整性和具体性。
附图说明
32.图1为本技术一实施例中缓存监控管理方法的应用场景图;
33.图2为本技术一实施例中缓存监控管理方法的流程示意图;
34.图3为本技术一实施例中缓存监控管理装置的结构框图;
35.图4为本技术一实施例中计算机设备的内部结构框图。
36.本技术目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
37.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术的一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本技术保护的范围。应当理解,此处所描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
38.本技术提供的缓存监控管理方法,可应用在如图1的缓存监控管理系统中。该缓存监控管理系统包括应用服务器、监控服务器和分布式缓存,应用服务器内安装有缓存监控管理工具,且,应用服务器内设有本地缓存。缓存监控管理工具通过网络与监控服务器、第一客户端、分布式缓存通信,第一客户端通过网络与应用服务器通信。缓存监控管理工具通过应用服务器内部的软硬件与本地缓存进行数据传输。缓存监控管理工具具体为一种sdk或程序包。缓存监控管理工具用于拦截第一客户端发送的数据请求,数据请求携带第一接入参数和待请求的目标数据的属性信息;缓存监控管理工具还用于根据第一接入参数中的接口参数或注解参数确定第一缓存;缓存监控管理工具还用于根据属性信息确定第一缓存中目标数据对应的目标子缓存区;缓存监控管理工具还用于根据属性信息向目标子缓存区请求目标数据;缓存监控管理工具还用于拦截从目标子缓存区获取到的目标数据;监控服务器用于对接收到的缓存监控管理工具上传的数据请求和目标数据进行数据分析,得到目标子缓存区的缓存监控数据。
39.第一客户端为应用服务器对应的客户端,应用服务器是第一客户端的源服务器。第一客户端的使用者一般是应用服务器所对应的应用程序或web网页或网址的用户。应用服务器还包括对应的数据库,第一客户端向应用服务器发送数据请求时,根据数据请求中的缓存方式先从本地缓存或分布式缓存中查找对应的目标数据,如果缓存中查找不到对应的目标数据,则应用服务器会从对应的数据库中查找对应的目标数据返回给第一客户端。同时应用服务器还会将该目标数据写入本地缓存或分布式缓存中。将目标数据写入本地缓存还是写入分布式缓存可以由第一客户端指定,也可以由系统默认,还可以根据目标数据实际的数据类型和本地缓存、分布式缓存能够支持存储的数据类型决定。
40.应用服务器可以是由独立的服务器或者是多个服务器组成的服务器集群来实现。
41.在另外一个实施例中,缓存监控管理系统还可以包括监控服务器对应的第二客户端,监控服务器通过网络与第二客户端通信。第二客户端的使用者一般是对缓存数据进行监控的工程人员或其他专业人员。工程人员依次通过第二客户端、监控服务器可以对应用服务器中的缓存监控管理工具进行管理和配置。第二客户端还可以将监控服务器获取到的缓存监控数据以可视化形式展示在界面上,供工程人员实时查看。
42.第一客户端和第二客户端可以但不限于各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备。
43.当然,本技术提供的缓存监控管理方法也可以由应用服务器中的缓存监控管理工
具独立实现。
44.图2为本技术一实施例中缓存监控管理方法的流程示意图。参考图2,以该方法应用在图1中的缓存监控管理系统为例进行说明。该缓存监控管理方法包括以下步骤s100

s600。
45.s100:拦截第一客户端发送的数据请求,数据请求携带第一接入参数和待请求的目标数据的属性信息。
46.具体地,数据请求也是第一客户端向应用服务器发送的访问请求。第一接入参数包括接口参数或注解参数。接口参数或注解参数中都用于指示需要从哪个缓存提供的接口读取目标数据。其中,不论是本地缓存还是分布式缓存都提供数据读取或写入的api接口。接口参数包括采用接口调用的方式向缓存请求读取数据时所提供的用于指示需要从哪个缓存提供的接口读取目标数据的接口信息。注解参数包括采用注解方式向缓存请求读取数据时所提供的用于指示需要从哪个缓存提供的接口读取目标数据的接口信息。第一接入参数是在发送数据请求之前事先设置的。第一接入参数可以根据实际情况更改。根据第一接入参数可以确定从哪个缓存区读取目标数据,还可以确定以哪种方式读取目标数据。
47.现有技术中应用服务器中是没有安装缓存监控管理工具的,因此,第一客户端的数据请求会直接由应用服务器自身来处理。本技术实施例缓存监控管理工具会作为应用服务器与缓存的桥梁,来管理缓存以及监控缓存。管理缓存具体包括将待缓存数据写入缓存、根据数据请求向缓存读取数据等不局限于此。
48.应用服务器所对应的业务系统代码只需要使用一个java注解,即可引入缓存监控管理工具的sdk jar,完成缓存接入和监控,对业务系统而言代码侵入性极低。
49.目标数据为第一客户端向应用服务器的本地缓存或分布式缓存或数据库中请求的数据。属性信息可以包括目标数据的唯一标识、目标数据的数据类型等不局限于此。唯一标识为目标数据的标识信息,用于唯一确定目标数据,例如可以为目标数据的key。
50.s200:根据第一接入参数中的接口参数或注解参数确定第一缓存。
51.具体地,第一接入参数中的接口参数或注解参数都携带了用于定位第一缓存的唯一标识。因此,根据接口参数或注解参数可以确定第一缓存,即确定从哪个缓存区查询目标数据。第一缓存为本地缓存或分布式缓存。本地缓存是应用服务器的本地缓存,本地缓存包括本地内存和本地硬盘。分布式缓存为应用服务器从外部引入的缓存,分布式缓存为由一个或多个缓存服务器组成的集群。
52.缓存监控管理工具可以提供接入缓存的api接口,也可以提供接入缓存的注解接入方式。
53.根据接口参数可以通过调用api接口的方式接入本地缓存或分布式缓存,从缓存中读取数据。api接口包括本地缓存api接口和分布式缓存api接口。
54.根据注解参数可以通过注解接入方式接入本地缓存或分布式缓存,从缓存中读取数据。
55.s300:根据属性信息确定第一缓存中目标数据对应的目标子缓存区。
56.具体地,第一缓存中包括了至少一种子缓存区,每一种子缓存区对应不同的缓存方式,即子缓存区与缓存方式一一对应。每种缓存方式能够支持存储的数据类型可能不同,处理数据的性能也不完全相同。因此,不同的数据会根据一定的缓存规则写入缓存中的一
种子缓存区。因此,本技术实施例需要根据目标数据的属性信息确定其存入了第一缓存中的哪个目标子缓存区。
57.本地缓存的缓存方式可以包括:spring cache、guavacache、caffine、hashmap、concurrenthashmap、list、vector、h5

localstorage等。分布式缓存的缓存方式包括redis、memcache等。
58.s400:根据属性信息向目标子缓存区请求目标数据。
59.具体地,缓存监控管理工具确定了目标子缓存区后,根据属性信息和目标子缓存区的标识或地址生成用于向目标子缓存区请求目标数据的查询指令,使第一缓存根据该查询指令在目标子缓存区中查询目标数据。
60.s500:拦截从目标子缓存区获取到的目标数据。
61.具体地,第一缓存根据资源请求中的资源信息从其内存中查找对应的目标资源,如果该目标资源在目标缓存区中有存储,则能够找到该目标资源。但是目标缓存区不能将目标资源返回至客户端,而是需要经过缓存监控工具转发,因此,缓存监控工具可以拦截该目标资源。
62.第一缓存查询到目标数据后不会直接由应用服务器返回至第一客户端,而是被缓存监控管理工具所拦截,再由缓存监控管理工具通过应用服务器将目标数据返回至第一客户端。相当于缓存监控管理工具作为数据传递的桥梁。因此,缓存监控管理工具可以获取到所有与缓存来往或相关的数据。
63.s600:对数据请求和目标数据进行数据分析得到目标子缓存区的缓存监控数据。
64.具体地,缓存监控数据包括子缓存区中key的数量、key所占的内存大小、每个key的相关数据中的至少一个。key的相关数据可以包括key的调用数据和缓存数据。数据分析具体包括数据的清洗、提取和统计等操作。从数据请求中可以解析出业务系统标识、应用服务器的标识、应用服务器的ip地址等第一缓存监控数据。
65.业务系统由至少一个应用服务器作为业务支撑。每个应用服务器都具有唯一标识和唯一ip地址,且每个应用服务器设置有对应的本地缓存。客户端可以向业务系统中的任意一个应用服务器请求获取数据。通过缓存监控工具可以拦截任意一个应用服务器的数据请求。
66.数据分析可以由缓存监控管理工具执行,也可以由缓存监控工具将访问请求和目标资源发送至监控服务器,由监控服务器进行数据分析得到缓存监控数据。即上述步骤s100

s500由缓存监控管理工具执行,步骤s600可以由缓存监控管理工具也可以由监控服务器执行。
67.目标数据包括了待调用的key和key对应的value,进行数据分析可以统计每个key被调用的次数,以及每个key对应的value的大小、调用时间、缓存时间、是否过期、缓存中key的个数、所有key所占的内存大小,同一类型的key的数量和所占内存大小等等各种具体的缓存占用情况等第二缓存监控数据,还可以统计出缓存命中率。缓存命中率为命中次数与总次数的比例;其中,命中次数为从缓存中能够获取到目标数据的次数,总次数为目标数据的总调用次数。
68.缓存监控管理工具作为中间工具可以安装至任何配置支持的各种服务器中,具有广泛的应用,不需要像现有技术一样通过手动编写日志来跟踪缓存数据,因此,减少了代码
的编写工作,且对于应用服务器所在的业务系统而言,由于不会改动业务系统的原代码,因此不会造成业务系统代码混乱,对于业务系统而言代码侵入性低,一定程度上保证了业务系统的稳定性和安全性。另外,由于缓存监控管理工具实时监控所有与缓存相关的来往数据,因此,可以做到对业务系统中每个业务线都能够监控到,成本低、监控范围广。
69.另外,通过嵌入的缓存监控管理工具能够对各种服务器的缓存进行管理和监控,灵活性高,且能够具体监测到每种缓存(例如本地缓存、分布式缓存)的缓存命中率和缓存内存的具体占用情况,而现有技术只能粗略得到缓存的大概情况,本技术实施例保证了缓存监控数据的完整性和具体性。
70.在一个实施例中,在步骤s200之前,该方法还包括:
71.接收用户下发的第一缓存配置数据,根据第一缓存配置数据生成或更新对应的第一缓存规则;
72.拦截数据写入请求,数据写入请求携带待缓存数据和第二接入参数;
73.根据第二接入参数确定第二缓存;
74.根据待缓存数据的数据类型和第一缓存规则,将待缓存数据写入到第二缓存对应的子缓存区。
75.具体地,第一缓存规则用于定义数据缓存的位置,即定义数据的写入规则。即,将待写入数据写入到哪一种缓存中。
76.第一缓存配置数据是工程人员依次通过监控服务器对应的第二客户端、监控服务器下发给缓存监控管理工具的。第一缓存配置数据用于配置本地缓存和/或分布式缓存的数据写入规则和/或数据读取规则。缓存监控管理工具接收到监控服务器下发的第一缓存配置数据;根据第一缓存配置数据对第一缓存规则进行对应配置,以生成第一缓存规则或更新已有的第一缓存规则。
77.当从缓存中查找不到目标数据时,应用服务器会向其对应的数据库查询目标数据,然后返回至第一客户端。同时应用服务器还会将查询到的目标数据作为待缓存数据存储到本地缓存或分布式缓存中。因此,数据写入请求是应用服务器发起的,缓存监控管理工具会对数据写入请求进行拦截,以作为中间桥梁管理缓存的数据写入。
78.当然缓存监控管理工具也可以作为应用服务器与应用服务器的数据库之间的桥梁,代替应用服务器直接向对应的数据库请求目标数据,然后通过应用服务器将目标数据返回至第一客户端。同时,缓存监控管理工具根据第一缓存规则将获取到的目标数据作为待缓存数据存入对应的子缓存区。
79.第二接入参数包括接口参数或注解参数。根据第二接入参数可以确定将待缓存数据写入到哪个缓存区,还可以确定以哪种方式写入待缓存数据。第二接入参数可以根据实际情况更改。
80.第二接入参数中的接口参数或注解参数都携带了用于定位第二缓存的唯一标识。因此,根据接口参数或注解参数可以确定第二缓存,即确定将待缓存数据写入到哪个缓存区中。第二缓存为本地缓存或分布式缓存。
81.缓存监控管理工具可以提供接入缓存的api接口,也可以提供接入缓存的注解接入方式。
82.根据接口参数可以通过调用api接口的方式接入本地缓存或分布式缓存,将待缓
存数据写入到对应的缓存中。api接口包括本地缓存api接口和分布式缓存api接口。
83.根据注解参数可以通过注解接入方式接入本地缓存或分布式缓存,将待缓存数据写入到缓存中。
84.第一缓存配置数据可以根据业务系统的具体升级情况更改,从而更新缓存监控管理工具的版本,以适应业务系统的更新。使得缓存监控管理工具能够处理更多类型的数据的缓存,即支持更多类型的数据的写入,而不需要对业务系统进行大的改动,从而节省了开发成本。
85.在一个实施例中,根据待缓存数据的数据类型和第一缓存规则,将待缓存数据写入到第二缓存对应的子缓存区,包括:
86.根据待缓存数据的数据类型,从第二缓存对应的所有第一候选缓存方式中确定支持待缓存数据的可用缓存方式,其中,第一候选缓存方式与第二缓存中的子缓存区具有映射关系;
87.根据第一缓存规则确定可用缓存方式中最优的第一目标缓存方式;
88.将待缓存数据写入到第二缓存中第一目标缓存方式对应的子缓存区。
89.具体地,如果第二缓存为本地缓存,则第一候选缓存方式为本地缓存对应的多种缓存方式。如果第二缓存为分布式缓存,则第一候选缓存方式为分布式缓存对应的多种缓存方式。可用缓存方式为本地缓存或分布式缓存对应的多种缓存方式中、支持待缓存数据的数据类型的一种或多种缓存方式。
90.缓存方式之间可以支持的数据类型可能有重叠。即,一种类型的数据可能存在多种缓存方式支持。因此,需要筛选出性能最高的缓存方式,将待缓存数据存入最优的第一目标缓存方式所其对应的子缓存区,处理数据的速度和效率也是最高的。因此,可以提高获取目标资源的速度。其中,每种缓存方式所对应的子缓存区不同。
91.在一个实施例中,步骤s300具体包括以下步骤:
92.根据属性信息获取目标数据的数据类型;
93.根据数据类型和第一缓存规则从第一缓存对应的所有第二候选缓存方式中确定支持目标数据的第二目标缓存方式;
94.确定第一缓存中第二目标缓存方式所对应的子缓存区为目标数据对应的目标缓存区。
95.具体地,第一缓存规则还用于定义如何正确从缓存中读取数据,即定义数据的读取规则。即,如何根据数据类型从正确的缓存中查找数据,避免无效查询。
96.第一缓存中每一种子缓存区对应一种缓存方式。候选缓存方式为第一缓存所有子缓存区对应的所有缓存方式。第二目标缓存方式为支持目标数据的数据类型,即可以存储目标数据的缓存方式。如果第一缓存为本地缓存,则第二目标缓存方式可以为:spring cache、guavacache、caffine、hashmap、concurrenthashmap、list、vector、h5

localstorage等其中的一种。如果第一缓存为分布式缓存,则第二目标缓存方式可以为redis、memcache等其中的一种。同一个数据是根据第一缓存规则中的写入规则写入的,因此,读取时也会根据写入规则对应的读取规则读出。因此,根据目标数据的数据类型可以快速确定第二目标缓存方式,并确定第二目标缓存方式所对应的子缓存区。
97.在一个实施例中,方法还包括:
98.接收用户下发的第二缓存配置数据,根据第二缓存配置数据生成或更新对应的第二缓存规则,第二缓存规则用于定义缓存大小和过期策略。
99.具体地,第二缓存配置数据用于配置本地缓存和/或分布式缓存的缓存大小和过期策略。该第二缓存规则用于定义或修改缓存的数量,第二缓存规则还用于定义缓存过期时间等。工程人员可以通过监控服务器所对应的第二客户端向缓存监控管理工具下发第二缓存配置数据。比如缓存过期时间需要调整,在没有使用缓存监控管理工具前,各个业务系统需修改代码重启服务去调整,比如一个缓存项,缓存的数量是控制在100,在观察生产缓存服务运行状况后可能会调整到500,现有技术中业务系统需修改代码,并重启服务生效。使用缓存监控管理工具后,只需在缓存监控服务界面配置并下发到缓存监控管理工具即可生效。实现了对业务系统性能的高效管理,同时减少对原业务系统中代码的修改,进一步维护了业务系统的稳定。
100.另外,对于不同的业务系统框架,可能支持的缓存方式不同,例如,系统框架为jdk1.6时,不能使用caffeine框架做缓存,jdk1.8时可以使用。在现有技术中,需要根据业务系统的框架来匹配对应的缓存框架。通过本技术实施例只需要根据业务系统的框架,在缓存监控管理工具中更新或增加业务系统所支持的缓存框架,即可使得该业务系统与缓存进行无障碍的数据交互。此时缓存监控管理工具具有业务系统所支持的缓存框架,因此,可以与缓存监控管理工具无障碍的数据交互,而缓存监控管理工具可以与缓存进行数据交互,由于业务系统不直接与缓存进行数据交互,因此,即使业务系统支持的缓存框架是缓存不支持的,但是缓存监控管理工具作为中间桥梁,可以很好的转发业务系统和缓存之间的数据,实现了无障碍对接,以及缓存方式的动态选择。
101.在一个实施例中,该方法还包括:
102.将缓存监控数据上传至监控服务器;
103.根据缓存监控数据在监控服务器所对应的监控服务客户端实时生成并展示对应的缓存监控图表。
104.具体地,监控服务器所对应的第二客户端为一种监控管理平台,可以通过对底层生成的缓存监控数据进行处理,通过界面显示缓存使用情况。以便于工程人员实时观察本地缓存或分布式缓存的使用情况。
105.在一个实施例中,该方法还包括:基于预设的预警规则检测缓存监控数据中是否存在异常数据,若存在,则发出实时预警。
106.具体地,预警规则可以根据实际情况调整。预警是界面的单表操作,可增删改。提供默认配置。具体业务key可关联对应的预警配置。在检测到某个业务key存在异常时,则触发相应的预警。
107.以下情况都可以触发对应的预警机制,例如:单个key的大小超过第一阈值、缓存的数据大小超过第二阈值、同一类型的key所对应的value数据所占内存大小综合超过第三阈值等等。
108.更具体地,例如:缓存单个key大小超过500kb时,即一个key对应的value所占内存超过500kb告警。
109.又例如:缓存的数据量大于10000时告警,即所有缓存key的数量大于10000,则告警。
110.同一类型缓存key所对应的value数据的大小汇总值大于100m时告警。
111.另外,在现有技术中,服务器缓存存在较多问题。例如,缓存驱逐策略问题,未设置过期,随着版本数据越来越多,导致加载数据过多,jvm发生fullgc,服务不可用。再例如:缓存的大key问题,缓存的value存储全量字典表数据,版本需求在字典表新增6000条数据,导致读取缓存的value过大,单个接口性能问题导致整个系统不可用。再例如:缓存污染问题,业务线程取出缓存的数据,在特定分支做了删除操作,影响接口数据的正确性。(缓存本身未做深拷贝,删除后影像缓存的源数据)。再例如:缓存数据不一致,在更新缓存的过程,在这个短暂的过程中可能会出现传空的场景导致数据不一致。再例如:登录页读取缓存中的env字段,导致页面空白(生产环境不会有env字段)。
112.因工程人员对缓存的使用理解程度各不相同的影响,导致持续不断的产生上述各种问题。通过本技术的缓存监控管理工具,可以帮助工程人员实现“缓存的管理”,减少因缓存使用不当而引起的系统隐患,同时也为开发人员对缓存优化提供了数据支持和验证支持,减少该类问题的发生。
113.本技术业务系统通过注解方式或接口调用的方式即可引入缓存监控工具,完成缓存接入和监控,对业务系统而言代码侵入性极地,有效保证了业务系统的稳定性和安全性。通过缓存监控工具可以实现自动对分布式缓存和本地缓存进行监控,得到具体的缓存占用情况和缓存命中率,不需要人工手动编写代码,节省了开发成本。弥补了现有技术没有一个完整的技术可以自动地对具体缓存的命中率和缓存内存占用情况进行监控以及统计分析和数据汇总的技术空白。
114.应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本技术实施例的实施过程构成任何限定。
115.图3为本技术一实施例中缓存监控管理装置的结构框图;参考图3,该缓存监控管理装置包括:
116.第一拦截模块100,用于拦截第一客户端发送的数据请求,数据请求携带第一接入参数和待请求的目标数据的属性信息;
117.第一确定模块200,用于根据第一接入参数中的接口参数或注解参数确定第一缓存;
118.第二确定模块300,用于根据属性信息确定第一缓存中目标数据对应的目标子缓存区;
119.第一请求模块400,用于根据属性信息向目标子缓存区请求目标数据;
120.第二拦截模块500,用于拦截从目标子缓存区获取到的目标数据;
121.数据分析模块600,用于对数据请求和目标数据进行数据分析得到目标子缓存区的缓存监控数据,缓存监控数据包括子缓存区中key的数量、key所占的内存大小、每个key的相关数据中的至少一个。
122.在一个实施例中,该装置还包括:
123.第一规则配置模块,用于接收用户下发的第一缓存配置数据,根据第一缓存配置数据生成或更新对应的第一缓存规则,第一缓存规则用于定义数据的写入规则;
124.第三拦截模块,用于拦截数据写入请求,数据写入请求携带待缓存数据和第二接
入参数;
125.第三确定模块,用于根据第二接入参数确定第二缓存;
126.写入模块,用于根据待缓存数据的数据类型和第一缓存规则,将待缓存数据写入到第二缓存对应的子缓存区。
127.在一个实施例中,写入模块具体包括:
128.匹配单元,用于根据待缓存数据的数据类型,从第二缓存对应的所有第一候选缓存方式中确定支持待缓存数据的可用缓存方式,其中,第一候选缓存方式与第二缓存中的子缓存区具有映射关系;
129.筛选单元,用于根据第一缓存规则确定可用缓存方式中最优的第一目标缓存方式;
130.写入单元,用于将待缓存数据写入到第二缓存中第一目标缓存方式对应的子缓存区。
131.在一个实施例中,第二确定模块300具体包括:
132.数据类型获取单元,用于根据属性信息获取目标数据的数据类型;
133.第一确定单元,用于根据数据类型和第一缓存规则从第一缓存对应的所有第二候选缓存方式中确定支持目标数据的第二目标缓存方式,第一缓存规则还用于定义数据的读取规则;
134.第二确定单元,用于确定第一缓存中第二目标缓存方式所对应的缓存区为目标数据对应的目标缓存区。
135.在一个实施例中,该装置还包括:
136.第二规则配置模块,用于接收用户下发的第二缓存配置数据,根据第二缓存配置数据生成或更新对应的第二缓存规则,第二缓存规则用于定义缓存大小和过期策略。
137.在一个实施例中,该装置还包括:
138.发送模块,用于将缓存监控数据上传至监控服务器;
139.展示模块,用于根据缓存监控数据在监控服务器所对应的第二客户端实时生成并展示对应的缓存监控图表。
140.其中上述模块/单元中的“第一”和“第二”的意义仅在于将不同的模块/单元加以区分,并不用于限定哪个模块/单元的优先级更高或者其它的限定意义。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或模块的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或模块,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或模块,本技术中所出现的模块的划分,仅仅是一种逻辑上的划分,实际应用中实现时可以有另外的划分方式。
141.关于缓存监控管理装置的具体限定可以参见上文中对于缓存监控管理方法的限定,在此不再赘述。上述缓存监控管理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
142.图4为本技术一实施例中计算机设备的内部结构框图。该计算机设备具体可以是图1中的应用服务器。如图4所示,该计算机设备包括通过系统总线连接的处理器、存储器、
网络接口、输入装置、数据库和显示屏。其中,该计算机设备的处理器用于提供计算和控制能力。存储器包括存储介质和内存储器。存储介质可以是非易失性存储介质,也可以是易失性存储介质。存储介质存储有操作系统,还可存储有计算机可读指令,该计算机可读指令被处理器执行时,可使得处理器实现缓存监控管理方法。该内存储器为存储介质中的操作系统和计算机可读指令的运行提供环境。该内存储器中也可储存有计算机可读指令,该计算机可读指令被处理器执行时,可使得处理器执行缓存监控管理方法。该计算机设备的网络接口用于与外部服务器通过网络连接通信。计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
143.在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机可读指令(例如计算机程序),处理器执行计算机可读指令时实现上述实施例中缓存监控管理方法的步骤,例如图2所示的步骤s100至步骤s600及该方法的其它扩展和相关步骤的延伸。或者,处理器执行计算机可读指令时实现上述实施例中缓存监控管理装置的各模块/单元的功能,例如图3所示模块100至模块600的功能。为避免重复,这里不再赘述。
144.处理器可以是中央处理单元(central processing unit,cpu),还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field

programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,处理器是计算机装置的控制中心,利用各种接口和线路连接整个计算机装置的各个部分。
145.存储器可用于存储计算机可读指令和/或模块,处理器通过运行或执行存储在存储器内的计算机可读指令和/或模块,以及调用存储在存储器内的数据,实现计算机装置的各种功能。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、视频数据等)等。
146.存储器可以集成在处理器中,也可以与处理器分开设置。
147.本领域技术人员可以理解,图4中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
148.在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机可读指令,计算机可读指令被处理器执行时实现上述实施例中缓存监控管理方法的步骤,例如图2所示的步骤s100至步骤s600及该方法的其它扩展和相关步骤的延伸。或者,计算机可读指令被处理器执行时实现上述实施例中数据缓存监控管理装置的各模块/单元的功能,例如图3所示模块100至模块600的功能。为避免重复,这里不再赘述。
149.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机可读指令来指示相关的硬件来完成,所述的计算机可读指令可存储于一计算机可读取存储介质中,该计算机可读指令在执行时,可包括如上述各方法的实施例的流程。其
中,本技术所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双倍速率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。
150.需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。
151.上述本技术实施例序号仅仅为了描述,不代表实施例的优劣。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本技术各个实施例所述的方法。
152.以上仅为本技术的优选实施例,并非因此限制本技术的专利范围,凡是利用本技术说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本技术的专利保护范围内。
再多了解一些

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

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

相关文献