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

本地缓存处理方法、装置、设备及计算机可读存储介质与流程

2021-12-07 22:00:00 来源:中国专利 TAG:


1.本公开涉及计算机领域,尤其涉及一种本地缓存处理方法、装置、设备及计算机可读存储介质。


背景技术:

2.本地缓存是指将客户机本地的物理内存划分出一部分空间用来缓冲客户机回写到服务器的数据。该技术将客户机回写的数据不再先写入服务器硬盘,而是将回写数据先写入本地回写缓存,当缓存空间达到一定的阀值时,再将数据回写到服务器。有了本地回写缓存功能之后,可大大降低服务器读写压力和网络负载。
3.实际应用中,使用较多的本地缓存为基于map派生的各种本地缓存,诸如hashmap,concurrenthashmap等;基于guava的loadingcache;基于spring的caffeine。上述本地缓存能够防止请求穿透;保护核心资源;加快访问速度。
4.但是,上述本地缓存在使用过程中,集群中任意一台客户机均无法与其他客户机进行信息交互,因此,往往容易导致客户机之间的数据不同步,容灾能力较差的问题。


技术实现要素:

5.本公开提供一种本地缓存处理方法、装置、设备及计算机可读存储介质,用于解决现有的本地缓存处理方法容易导致客户机之间的数据不同步,容灾能力较差的技术问题。
6.本公开的第一个方面是提供一种本地缓存处理方法,包括:
7.与集群中的每一客户机建立通信连接;
8.获取所述集群中任一客户机发送的数据同步请求,所述数据同步请求中包括待同步缓存以及发起所述数据同步请求的目标客户机的标识信息;
9.根据所述数据同步请求中的待同步缓存,对本地缓存中的数据进行更新操作,使得更新后的本地缓存中的数据与所述目标客户机的本地缓存中的数据保持一致。
10.本公开的第二个方面是提供一种本地缓存处理装置,包括:
11.连接模块,用于与集群中的每一客户机建立通信连接;
12.同步请求获取模块,用于获取所述集群中任一客户机发送的数据同步请求,所述数据同步请求中包括待同步缓存以及发起所述数据同步请求的目标客户机的标识信息;
13.同步模块,用于根据所述数据同步请求中的待同步缓存,对本地缓存中的数据进行更新操作,使得更新后的本地缓存中的数据与所述目标客户机的本地缓存中的数据保持一致。
14.本公开的第三个方面是提供一种本地缓存处理设备,包括:存储器,处理器;
15.存储器;用于存储所述处理器可执行指令的存储器;
16.其中,所述处理器用于调用所述存储器中的程序指令执行如第一方面所述的本地缓存处理方法。
17.本公开的第三个方面是提供一种计算机可读存储介质,所述计算机可读存储介质
中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如第一方面所述的本地缓存处理方法。
18.本公开提供的本地缓存处理、装置、设备及计算机可读存储介质,通过与集群中的每一客户机建立通信连接,获取各客户机发送的数据同步请求,根据该数据同步请求进行数据同步操作,从而能够保证更新后的本地缓存中的数据与所述目标客户机的本地缓存中的数据保持一致,有效地避免了个客户机内本地缓存数据不同步的问题,容灾能力较强。
附图说明
19.为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本公开的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
20.图1为本公开基于的网络架构示意图;
21.图2为本公开实施例一提供的本地缓存处理方法的流程示意图;
22.图3为本公开实施例提供的本地缓存连接示意图;
23.图4为本公开实施例二提供的本地缓存处理方法的流程示意图;
24.图5为本公开实施例三提供的本地缓存处理方法的流程示意图;
25.图6为本公开实施例四提供的本地缓存处理装置的结构示意图;
26.图7为本公开实施例五提供的本地缓存处理设备的结构示意图。
具体实施方式
27.为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例所获得的所有其他实施例,都属于本公开保护的范围。
28.针对上述提及的现有的本地缓存处理方法容易导致客户机之间的数据不同步,容灾能力较差的技术问题,本公开提供了一种本地缓存处理、装置、设备及计算机可读存储介质。
29.需要说明的是,本公开提供本地缓存处理、装置、设备及计算机可读存储介质可运用在各种本地缓存处理的场景中。
30.实际应用中,集群中各个客户机中的缓存,由于请求负载均衡的缘故,客户机中的缓存数据基本上都是不一致的,对于一些特定的场景,此种情况非常不利。举例来说,比如在一台客户机中将用户缓存删除后,无法同步到集群中所有的本地缓存中,有时候不得不等待过期时间到达后才能彻底将此用户信息从本地缓存中清理干净。此外,集群中两台客户机中的本地缓存由于无法感知对方的存在,所以不会进行互操作。
31.在解决上述技术问题的过程中,发明人通过研究发现,为了实现集群中各客户机之间缓存的同步,可以建立集群中各客户机之间的连接关系。建立连接之后,当任一客户机涉及到数据的变动时,可以发送数据同步请求,以使其他客户机根据该数据同步请求进行数据同步操作,从而能够保证更新后的本地缓存中的数据与所述目标客户机的本地缓存中的数据保持一致。
32.名词解释:
33.本地缓存:一种可以在客户机上运行的缓存组件。
34.p2p通讯:点对点通讯,一种去服务器化的通讯方式,持有通讯列表的节点可以通过列表中的地址访问远程节点。
35.netty:基于java实现的网络通讯组件。
36.mina:网络通讯组件。
37.hashmap:哈希表,一种可以进行数据存储的哈希结构。一般充当本地缓存角色,非线程安全。
38.guava cache:guava的本地缓存组件。
39.缓存穿透:缓存中无数据,需要去数据库拿数据,然后回写到缓存。
40.缓存雪崩:大量请求透过缓存直接穿透到数据库,导致数据库崩溃。从而引发整个集群逐渐崩溃的过程。
41.图1为本公开基于的网络架构示意图,如图1所示,本公开基于的网络架构至少包括:服务器1以及多台客户机2,服务器内设置有本地缓存处理装置,该本地缓存处理装置可采用c/c 、java、shell或python等语言编写。
42.图2为本公开实施例一提供的本地缓存处理方法的流程示意图,如图2所示,该方法包括:
43.步骤101、与集群中的每一客户机建立通信连接。
44.本实施例的执行主体为本地缓存处理装置,该本地缓存处理装置可耦合于服务器中。
45.为了实现集群中每一客户机本地缓存中的数据的同步性,可以在任一本地缓存进行数据更新时,根据该本地缓存更新的内容同步进行数据更新操作。因此,首先需要与集群中每一客户机建立通信连接,从而后续能够实现数据同步请求的发送与接收。
46.具体地,可以通过点对点通讯技术与集群中的每一客户机建立通信连接。集群中每个本地缓存保存有其他本地缓存的连接地址,可以方便的进行感知和数据传输。通过利用底层netty组件,赋予本地缓存通讯的能力,通过这种通讯能力,再加上适当的通讯协议,即可实现强大的集群感知和控制功能。
47.步骤102、获取所述集群中任一客户机发送的数据同步请求,所述数据同步请求中包括待同步缓存以及发起所述数据同步请求的目标客户机的标识信息。
48.在本实施方式中,在与集群中各客户机建立通信连接之后,可以与各客户机进行信息交互。具体地,当任一客户机发生数据更新时,为了保证与其他本地缓存内的数据保持同步,可以发送数据同步请求,其中,该数据同步请求中可以包括当前发生数据更新的目标客户机的标识信息以及该客户机对应的待同步缓存。相应地,本地缓存处理装置可以获取该目标客户机发送的数据同步请求。
49.步骤103、根据所述数据同步请求中的待同步缓存,对本地缓存中的数据进行更新操作,使得更新后的本地缓存中的数据与所述目标客户机的本地缓存中的数据保持一致。
50.在本实施方式中,在获取到数据同步请求之后,可以根据该数据同步请求中的待同步缓存,对本地缓存中的数据进行更新操作。
51.具体地,目标客户机的数据更新可以为数据写入,相应地,该待同步缓存可以为需
要写入本地缓存的内容,在获取到数据同步请求之后,可以将该待同步缓存的内容写入本地缓存中。目标客户机的数据更新可以为数据删除操作,该待同步缓存中的内容可以为待删除缓存的标识信息,在获取到数据同步请求之后,可以待删除缓存的标识信息对待删除缓存进行删除操作。
52.相应地,在根据该数据同步请求对本地缓存中的数据进行更新操作之后,更新后的本地缓存中的数据与目标客户机的本地缓存中的数据保持一致。从而能够在任何情况下保证各客户机本地缓存中的数据的同步性。
53.图3为本公开实施例提供的本地缓存连接示意图,如图3所示,每一本地缓存均与集群中的其他各本地缓存通信连接,从而能够实现信息的交互。
54.本实施例提供的本地缓存处理方法,通过与集群中的每一客户机建立通信连接,获取各客户机发送的数据同步请求,根据该数据同步请求进行数据同步操作,从而能够保证更新后的本地缓存中的数据与所述目标客户机的本地缓存中的数据保持一致,有效地避免了个客户机内本地缓存数据不同步的问题,容灾能力较强。
55.图4为本公开实施例二提供的本地缓存处理方法的流程示意图,在实施例一的基础上,如图4所示,步骤101之后,还包括:
56.步骤201、获取所述集群中任一客户机发送的状态更新信息,所述状态更新信息中包括发送所述状态更新信息的客户机的标识信息以及发送所述状态更新信息的客户机的目标状态。
57.步骤202、根据所述状态更新信息,将本地缓存中预存的缓存列表中发送所述状态更新信息的客户机的状态更新为所述目标状态。
58.在本实施例中,由于集群中各客户机的运行状态可能有所不同,例如,可能个别客户机因为某些突发状况下线。因此,可以预先在本地缓存中存储一张缓存列表,该缓存列表中包括集群中每一本地缓存的连接地址、运行状态。
59.为了精准地确定各客户机的运行状态,可以实时进行监听操作,获取集群中任一客户发送的状态更新信息,状态更新信息中包括发送所述状态更新信息的客户机的标识信息以及发送所述状态更新信息的客户机的目标状态。该目标状态具体可以包括上线状态以及下线状态。
60.在获取到状态更新信息之后,可以根据该状态信息将预存的缓存列表中发送状态更新信息的客户机的状态更新为目标状态。
61.以实际应用举例来说,本地缓存处理装置可以实时监听集群中的客户机发送的状态更新信息。具体地,该状态更新信息可以为上线信息,该上线信息具体可以为0x01 ip的自定义上线协议。若本地缓存处理装置接收到该上线信息,则可以将缓存列表中发送状态更新信息的客户机的状态更新为上线状态。该状态更新信息可以为下线信息,该上线信息具体可以为0x02 ip下线协议。其他客户机接收到此下线消息,会将各自缓存列表中的发送状态更新信息的客户机设置为下线状态。后续有同步数据操作将不会发送给下线的客户机。
62.本实施例提供的本地缓存处理方法,通过监听各客户机发送的状态更新信息,并根据该状态更新指令对预存的缓存列表中客户机的状态进行更新,从而能够精准地确定各客户机的运行状态,并且能够根据该运行状态进行数据同步操作,提高数据同步的精准度。
63.进一步地,在上述任一实施例的基础上,步骤101之后,还包括:
64.获取各客户机按照预设的第一时间间隔发送的心跳包,根据所述心跳包对预存的缓存列表中发送所述心跳包的客户机的机器心跳探活计数进行更新操作。
65.在本实施例中,集群中的各客户机可以按照预设的第一时间间隔想集群中发送心跳包,以证明该客户机处于存活状态。其中,该第一时间间隔可以为一分钟。相应地,本地缓存处理装置可以实时监听是否有客户机发送心跳包,根据心跳包对预存的缓存列表中发送心跳包的客户机的机器心跳探活计数进行更新操作。
66.进一步地,在上述任一实施例的基础上,该方法还包括:
67.针对所述集群中的每一客户机,若超过预设的第二时间间隔未接收到所述客户机的心跳包,则将本地缓存中预存的缓存列表中未发送心跳包的客户机的状态更新为离线状态。
68.在本实施例中,针对集群中的每一客户机,若其超过预设的第二时间间隔仍旧未发送心跳包到集群中,则可以认定该客户机处理掉线状态,其中,该预设的第二时间间隔可以为五分钟。因此,针对集群中的每一客户机,若本地缓存处理装置超过预设的第二时间间隔未接收到客户机的心跳包,则将本地缓存中预存的缓存列表中未发送心跳包的客户机的状态更新为离线状态。相应地,若判定客户机的状态为离线状态,则后续有客户机进行数据更新时,将不会发送给离线的客户机。
69.区别于现有的本地缓存处理方法,当本地缓存因为各种原因挂了后,需要用户对异常进行捕获,然后重新建立缓存,进行数据刷写。对于低并发应用,此数据刷写可能导致缓存穿透,不会有太大的影响,但是对于高并发应用,此种缓存穿透将会给底层服务极大的压力,甚至造成缓存雪崩。本实施例提供的本地缓存处理方法,通过根据各客户机发送心跳包的时间间隔对各客户机的状态进行更新操作,能够自动精准地确定各客户机的状态,提高本地缓存的容灾能力,避免造成缓存雪崩。
70.本实施例提供的本地缓存处理方法,通过监听各客户机发送的心跳包,并根据各客户机发送心跳包的时间间隔对各客户机的状态进行更新操作,从而能够精准地确定各客户机的状态,并且能够根据该状态进行数据同步操作,提高数据同步的精准度。
71.图5为本公开实施例三提供的本地缓存处理方法的流程示意图,在上述任一实施例的基础上,如图5所示,步骤101之后,还包括:
72.步骤301、获取所述集群中任一客户机发送的暂停交互请求,所述暂停交互请求中包括发送所述暂停交互请求的客户机的标识信息。
73.步骤302、根据所述暂停交互请求,停止与发送所述暂停交互请求的客户机进行信息交互。
74.在本实施例中,当集群整体的网络流量大于预设的阈值偏大,带宽不富裕的时候,客户机可以发送暂停交互请求。网络交互的暂停并不会影响本地缓存本身的功能,本地缓存依旧可以正常使用,只是没有网络操作了而已。待到网络流量变小了后,可以重新打开。
75.相应地,本地缓存处理装置可以监听集群中任一客户机发送的暂停交互请求,其中,该暂停交互请求中包括发送所述暂停交互请求的客户机的标识信息。进而可以根据暂停交互请求,停止与发送所述暂停交互请求的客户机进行信息交互。
76.本实施例提供的本地缓存处理方法,通过当集群整体的网络流量大于预设的阈值
偏大,带宽不富裕的时候,根据暂停交互请求,停止与发送所述暂停交互请求的客户机进行信息交互,从而能够避免信息交互造成的带宽压力,提高本地缓存的使用效率。
77.图6为本公开实施例四提供的本地缓存处理装置的结构示意图,如图6所示,该装置包括:连接模块41、同步请求获取模块42以及同步模块43,其中,连接模块41,用于与集群中的每一客户机建立通信连接。同步请求获取模块42,用于获取所述集群中任一客户机发送的数据同步请求,所述数据同步请求中包括待同步缓存以及发起所述数据同步请求的目标客户机的标识信息。同步模块43,用于根据所述数据同步请求中的待同步缓存,对本地缓存中的数据进行更新操作,使得更新后的本地缓存中的数据与所述目标客户机的本地缓存中的数据保持一致。
78.具体地,在实施例四的基础上,所述连接模块用于:
79.通过点对点通讯技术与集群中的每一客户机建立通信连接。
80.本实施例提供的本地缓存处理装置,通过与集群中的每一客户机建立通信连接,获取各客户机发送的数据同步请求,根据该数据同步请求进行数据同步操作,从而能够保证更新后的本地缓存中的数据与所述目标客户机的本地缓存中的数据保持一致,有效地避免了个客户机内本地缓存数据不同步的问题,容灾能力较强。
81.进一步地,在实施例四的基础上,所述装置还包括:更新信息获取模块以及更新模块,其中,更新信息获取模块,用于获取所述集群中任一客户机发送的状态更新信息,所述状态更新信息中包括发送所述状态更新信息的客户机的标识信息以及发送所述状态更新信息的客户机的目标状态。更新模块,用于根据所述状态更新信息,将本地缓存中预存的缓存列表中发送所述状态更新信息的客户机的状态更新为所述目标状态。
82.进一步地,在实施例四的基础上,所述目标状态包括上线状态以及下线状态。
83.进一步地,在上述任一实施例的基础上,所述装置还包括:心跳包获取模块。其中,心跳包获取模块,用于获取各客户机按照预设的第一时间间隔发送的心跳包,根据所述心跳包对预存的缓存列表中发送所述心跳包的客户机的机器心跳探活计数进行更新操作。
84.进一步地,在上述任一实施例的基础上,还包括:状态更新模块,其中,状态更新模块,用于针对所述集群中的每一客户机,若超过预设的第二时间间隔未接收到所述客户机的心跳包,则将本地缓存中预存的缓存列表中未发送心跳包的客户机的状态更新为离线状态。
85.进一步地,在上述任一实施例的基础上,所述装置还包括:获取模块以及控制模块,其中,获取模块,用于获取所述集群中任一客户机发送的暂停交互请求,所述暂停交互请求中包括发送所述暂停交互请求的客户机的标识信息。控制模块,用于根据所述暂停交互请求,停止与发送所述暂停交互请求的客户机进行信息交互。
86.进一步地,在上述任一实施例的基础上,所述暂停交互请求为客户机在检测到当前的网络流量大于预设的阈值时发送的。
87.图7为本公开实施例五提供的本地缓存处理设备的结构示意图,如图7所示,该设备包括:处理组件502,存储器504,电源组件506,以及通信组件508。
88.处理组件502通常控制设备500的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件502可以包括一个或多个处理器510来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件502可以包括一个或多个模块,便
于处理组件502和其他组件之间的交互。例如,处理组件502可以包括多媒体模块,以方便多媒体组件505和处理组件502之间的交互。
89.存储器504被配置为存储各种类型的数据以支持在设备500的操作。这些数据的示例包括用于在设备500上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器504可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。
90.电源组件506为设备500的各种组件提供电力。电源组件506可以包括电源管理系统,一个或多个电源,及其他与为设备500生成、管理和分配电力相关联的组件。
91.通信组件508被配置为便于设备500和其他设备之间有线或无线方式的通信。设备500可以接入基于通信标准的无线网络,如wifi,2g或3g,或它们的组合。在一个示例性实施例中,通信组件508经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件508还包括近场通信(nfc)模块,以促进短程通信。例如,在nfc模块可基于射频识别(rfid)技术,红外数据协会(irda)技术,超宽带(uwb)技术,蓝牙(bt)技术和其他技术来实现。
92.在示例性实施例中,设备500可以被一个或多个应用专用集成电路(asic)、数字信号处理器(dsp)、数字信号处理设备(dspd)、可编程逻辑器件(pld)、现场可编程门阵列(fpga)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。
93.在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器504,上述指令可由设备500的处理器520执行以完成上述方法。例如,所述非临时性计算机可读存储介质可以是rom、随机存取存储器(ram)、cd-rom、磁带、软盘和光数据存储设备等。
94.一种非临时性计算机可读存储介质,当该存储介质中的指令由终端设备的处理器执行时,使得终端设备能够执行上述终端设备的本地缓存处理方法。
95.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
96.本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。
97.最后应说明的是:以上各实施例仅用以说明本公开的技术方案,而非对其限制;尽管参照前述各实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本公开各实施例技术方案的范围。
再多了解一些

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

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

相关文献