CN112597195A - 缓存数据刷新方法及分布式系统 - Google Patents
缓存数据刷新方法及分布式系统 Download PDFInfo
- Publication number
- CN112597195A CN112597195A CN202011484476.9A CN202011484476A CN112597195A CN 112597195 A CN112597195 A CN 112597195A CN 202011484476 A CN202011484476 A CN 202011484476A CN 112597195 A CN112597195 A CN 112597195A
- Authority
- CN
- China
- Prior art keywords
- data
- target
- data record
- cache
- database
- 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
- 238000000034 method Methods 0.000 title claims abstract description 41
- 230000015654 memory Effects 0.000 claims description 9
- 230000004044 response Effects 0.000 claims description 9
- 238000004891 communication Methods 0.000 claims description 7
- 238000011010 flushing procedure Methods 0.000 claims description 3
- 238000013500 data storage Methods 0.000 abstract description 9
- 238000010586 diagram Methods 0.000 description 8
- 238000012545 processing Methods 0.000 description 7
- 230000003993 interaction Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000000750 progressive effect Effects 0.000 description 2
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013499 data model Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 229910021389 graphene Inorganic materials 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000003999 initiator Substances 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本说明书实施例公开了一种缓存数据刷新方法及分布式系统,对本地缓存使用两级哈希表结构进行数据存储。第一级哈希表中以类型标识作为键值,以第二级数据表的键值作为数据值;第二级哈希表的键值基于数据记录在数据库中的主键生成,第二级哈希表的数据值对应缓存的单条数据记录。分布式缓存采用哈希槽结构进行数据存储,哈希槽内数据值的键值基于类型标识以及数据记录在数据库中的主键生成,数据值对应缓存的单条数据记录,哈希槽内数据集合的标记字段基于键值中的类型标识生成,以使相同类型标识下的键值及数据记录存储至同一数据集合中。基于上述缓存数据存储结构,可以大幅提高各级缓存数据刷新的效率以及一致性。
Description
技术领域
本说明书涉及数据处理技术领域,特别地,涉及一种缓存数据刷新方法及分布式系统。
背景技术
目前主流的分布式系统都会用到缓存功能,缓存会重复访问的数据,提高系统响应速度,并且可以减轻系统的负载。当前金融机构通常采用本地缓存、分布式缓存两级缓存,其中,本地缓存、分布式缓存的优先级依次降低。数据库为业务系统以及各级缓存提供原始数据。如每台服务器(AP)都可以配置本地缓存,该缓存优先级最高,服务器执行数据处理时优先从本地缓存查询数据,存在则直接返回结果。如果本地缓存不存在时,则可以进一步从分布式缓存中查询,如果还是没有,则直接查询数据库。如果从数据库中查询到数据,则可以将查询到的数据分别写入本地缓存和分布式缓存。
但目前常用的多级缓存系统只能实现单条数据的缓存刷新,采用该目前的缓存刷新方式,在业务系统自身执行数据刷新或者与其他业务系统进行数据同步时,需要比较新旧数据,找出增删改了哪些数据,然后逐一调用接口,刷新变化的参数,数据刷新操作较为复杂繁琐,且易出现漏刷数据或者错误刷新的情况。同时,分布式系统各节点处理的数据量非常庞大,使得新旧数据的比较需要消耗较长的时间,且逐一刷新数据也需要消耗较长的时间。因此,目前亟需一种更加简单高效的数据刷新方法。
发明内容
本说明书实施例的目的在于提供一种缓存数据刷新方法及分布式系统,可以大幅提高分布式系统中各级缓存数据刷新的效率以及一致性。
本说明书提供一种缓存数据刷新方法及分布式系统是包括如下方式实现的:
一种缓存数据刷新方法,应用于分布式系统,所述分布式系统包括数据库、分布式缓存、通知中心以及至少一个应用服务器。所述应用服务器中布设有本地缓存,所述应用服务器与所述通知中心建立通信连接。其中,所述本地缓存采用两级哈希表结构进行数据存储;第一级哈希表中以类型标识作为键值,以第二级数据表的键值作为数据值;第二级哈希表的键值基于数据记录在数据库中的主键生成。分布式缓存采用哈希槽结构进行数据存储;其中,哈希槽内数据值的键值基于类型标识以及数据记录在数据库中的主键生成,哈希槽内数据集合的标记字段基于键值中的类型标识生成,以使相同类型标识下的键值及数据记录存储至同一数据集合中。所述方法包括如下步骤。所述数据提供方在确定对数据库的目标数据记录更新操作成功后,向所述分布式缓存发送数据更新指令,所述数据更新指令包括目标数据记录以及所述目标数据记录的目标类型标识、在数据库中的目标主键,以使所述分布式缓存将所述目标类型标识以及目标主键所对应的数据记录更新为所述目标数据记录。以及,所述数据提供方向通知中心发送数据更新通知,所述数据更新通知包括所述目标数据记录的目标类型标识、在数据库中的目标主键;以使各应用服务器在接收到通知中心的消息后,从所述分布式缓存中读取所述目标类型标识以及目标主键所对应的数据记录,并基于读取的数据记录对本地缓存中所述目标类型标识以及目标主键对应的数据记录进行更新处理。
本说明书提供的所述方法的另一些实施例中,所述数据提供方通过异步的方式向通知中心发送数据更新通知;并在接收到通知中心反馈的消息广播成功响应后,向所述分布式缓存发送数据更新指令。
另一方面,本说明书实施例还提供一种缓存数据刷新方法,应用于分布式系统,所述分布式系统包括数据库、分布式缓存、通知中心以及至少一个应用服务器。所述应用服务器中布设有本地缓存,所述应用服务器与所述通知中心建立通信连接。其中,所述本地缓存采用两级哈希表结构进行数据存储;第一级哈希表中以类型标识作为键值,以第二级数据表的键值作为数据值;第二级数据表的键值基于数据记录在数据库中的主键生成。分布式缓存采用哈希槽结构进行数据存储;其中,哈希槽内数据值的键值基于类型标识以及数据记录在数据库中的主键生成,哈希槽内数据集合的标记字段基于键值中的类型标识生成,以使相同类型标识下的键值及数据记录存储至同一数据集合中。所述方法包括如下步骤。所述数据提供方在确定对数据库在目标类型标识下的数据记录更新操作成功后,向所述分布式缓存发送数据清空指令,所述数据清空指令包括所述目标类型标识,以使所述分布式缓存将所述目标类型标识对应的数据记录清空。以及,所述数据提供方向通知中心发送数据清空通知,所述数据清空通知包括所述目标类型标识;以使各应用服务器在接收到通知中心的消息后,将所述目标类型标识下的数据记录清空。
本说明书提供的所述方法的另一些实施例中,所述方法还包括如下步骤。应用服务器在基于数据查询请求在从本地缓存以及分布式缓存中读取目标数据记录,而目标数据记录不存在的情况下,从所述数据库中读取所述目标数据记录;以及在确认从所述数据库中成功读取所述目标数据记录的情况下,以该应用服务器作为数据刷新服务器。相应的,所述数据刷新服务器向所述分布式缓存发送数据更新指令,所述数据更新指令包括目标数据记录以及所述目标数据记录的目标类型标识、在数据库中的目标主键;以使所述分布式缓存将所述目标类型标识以及目标主键所对应的数据记录更新为所述目标数据记录。
本说明书提供的所述方法的另一些实施例中,所述方法还包括,所述数据刷新服务器向通知中心发送数据更新通知,所述数据更新通知包括所述目标数据记录的目标类型标识、在数据库中的目标主键,以使各应用服务器在接收到通知中心的消息后,从所述分布式缓存中读取所述目标类型标识以及目标主键所对应的数据记录,并基于读取的数据记录对本地缓存中所述目标类型标识以及目标主键对应的数据记录进行更新处理。
另一方面,本说明书实施例还提供一种分布式系统,所述分布式系统包括数据库、分布式缓存、通知中心以及至少一个应用服务器。所述应用服务器中布设有本地缓存,所述应用服务器与所述通知中心建立通信连接。其中,所述本地缓存采用两级哈希表结构进行数据存储;第一级哈希表中以类型标识作为键值,以第二级数据表的键值作为数据值;第二级数据表的键值基于数据记录在数据库中的主键生成。分布式缓存采用哈希槽结构进行数据存储;其中,哈希槽内数据值的键值基于类型标识以及数据记录在数据库中的主键生成,哈希槽内数据集合的标记字段基于键值中的类型标识生成,以使相同类型标识下的键值及数据记录存储至同一数据集合中。
本说明书提供的所述系统的另一些实施例中,所述数据提供方用于在确定对数据库的目标数据记录更新操作成功后,向所述分布式缓存发送数据更新指令,所述数据更新指令包括目标数据记录以及所述目标数据记录的目标类型标识、在数据库中的目标主键。所述分布式缓存用于将所述目标类型标识以及目标主键所对应的数据记录更新为所述目标数据记录。
本说明书提供的所述系统的另一些实施例中,所述数据提供方用于向通知中心发送数据更新通知,所述数据更新通知包括所述目标数据记录的目标类型标识、在数据库中的目标主键。所述应用服务器用于在接收到通知中心的消息后,从所述分布式缓存中读取所述目标类型标识以及目标主键所对应的数据记录,并基于读取的数据记录对本地缓存中所述目标类型标识以及目标主键对应的数据记录进行更新处理。
本说明书提供的所述系统的另一些实施例中,所述数据提供方用于通过异步的方式向通知中心发送数据更新通知;并在接收到通知中心反馈的消息广播成功响应后,向所述分布式缓存发送数据更新指令。
本说明书提供的所述系统的另一些实施例中,所述数据提供方用于在确定对数据库在目标类型标识下的数据记录更新操作成功后,向所述分布式缓存发送数据清空指令,所述数据清空指令包括所述目标类型标识。所述分布式缓存用于将所述目标类型标识对应的数据记录清空。
本说明书提供的所述系统的另一些实施例中,所述数据提供方还用于向通知中心发送数据清空通知,所述数据清空通知包括目标类型标识。所述应用服务器用于在接收到通知中心的消息后,将所述目标类型标识下的数据记录清空。
本说明书提供的所述系统的另一些实施例中,应用服务器还用于在基于数据查询请求在从本地缓存以及分布式缓存中读取目标数据记录,而目标数据记录不存在的情况下,从所述数据库中读取所述目标数据记录;以及在确认从所述数据库中成功读取所述目标数据记录的情况下,以该应用服务器作为数据刷新服务器。相应的,所述数据刷新服务器用于向所述分布式缓存发送数据更新指令,所述数据更新指令包括目标数据记录以及所述目标数据记录的目标类型标识、在数据库中的目标主键。所述分布式缓存还用于将所述目标类型标识以及目标主键所对应的数据记录更新为所述目标数据记录。
本说明书提供的所述系统的另一些实施例中,所述数据刷新服务器还用于向通知中心发送数据更新通知,所述数据更新通知包括所述目标数据记录的目标类型标识、在数据库中的目标主键。应用服务器还用于在接收到通知中心的消息后,从所述分布式缓存中读取所述目标类型标识以及目标主键所对应的数据记录,并基于读取的数据记录对本地缓存中所述目标类型标识以及目标主键对应的数据记录进行更新处理。
另一方面,本说明书实施例还提供一种分布式系统,所述分布式系统包括至少一个处理器及用于存储处理器可执行指令的存储器,所述指令被所述处理器执行时实现上述任意一个或者多个实施例所述方法的步骤。
本说明书一个或多个实施例提供的缓存数据刷新方法及分布式系统,可以对本地缓存使用两级哈希表结构进行数据存储。其中,第一级哈希表中以类型标识作为键值,以第二级数据表的键值作为数据值;第二级哈希表的键值基于数据记录在数据库中的主键生成,第二级哈希表的数据值对应缓存的单条数据记录。分布式缓存采用哈希槽结构进行数据存储,其中,哈希槽内数据值的键值基于类型标识以及数据记录在数据库中的主键生成,而数据值对应缓存的单条数据记录,哈希槽内数据集合的标记字段基于键值中的类型标识生成,以使相同类型标识下的键值及数据记录存储至同一数据集合中。基于上述缓存数据存储结构,可以快速准确的实现单条数据记录的缓存刷新,同时,还可以快速准确的实现同一类型下的多条数据的缓存刷新。从而利用本说明书各个实施例,可以大幅提高分布式系统中各级缓存数据刷新的效率以及一致性。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1为本说明书提供的一个实施例中的应用服务器与通知中心的布设示意图;
图2为本说明书提供的一个实施例中的分布式系统的数据存储架构示意图;
图3为本说明书提供的一个实施例中的本地缓存中数据存储结构示意图;
图4为本说明书提供的一个实施例中的分布式缓存中数据存储结构示意图;
图5为本说明书提供的一个实施例中的数据刷新交互流程示意图;
图6为本说明书提供的另一个实施例中的数据刷新交互流程示意图;
图7为本说明书提供的另一个实施例中的数据刷新交互流程示意图;
图8为本说明书提供的另一个实施例中的数据刷新交互流程示意图。
具体实施方式
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书一个或多个实施例中的附图,对本说明书一个或多个实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是说明书一部分实施例,而不是全部的实施例。基于说明书一个或多个实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书实施例方案保护的范围。
本说明书实施例提供的一个场景示例中,所述缓存数据刷新方法应用于分布式系统。所述分布式系统包括数据库、分布式缓存、通知中心以及至少一个应用服务器(AP)。各AP注册到通知中心。通知中心如可以采用ZooKeeper架构。当然也可以采用其他形式的分布式协调服务架构,这里不做限定。如图1所示,分布式系统采用ZooKeeper架构。其中,AP1、AP2、……APn表示n个应用服务器。可以设置单台AP连接到单个ZooKeeper服务器,并在AP与对应的ZooKeeper服务器之间维护一个TCP连接。AP可以通过该连接发送请求,获取响应,获取监视事件,以及发送心跳等。如果AP与对应的ZooKeeper服务器的TCP连接断开,则AP可以连接到通知中心的其它服务器。
如图2所示,本说明书实施例中,所述分布式系统可以采用两级缓存结构,分别为分布式缓存以及布设于各应用服务器中的本地缓存。数据库为分布式系统提供原始数据。应用服务器读取数据的优先级为本地缓存优选级最高,其次是分布式缓存,最低为数据库。AP执行数据处理时优先从本地缓存查询数据,存在则直接返回结果。如果本地缓存不存在时,则可以进一步从分布式缓存中查询,如果还是没有,则直接查询数据库。
分布式系统通常根据业务类型的不同将数据划分不同的数据类型,每个数据类型可以对应设置有类型标识(Type)。不同数据类型的数据对应存储在数据库的不同数据表中。数据类型的具体划分方式可以根据实际需要进行,这里不做限定。每个数据表配置有主键。通常数据库中的一条记录中对应有若干个属性,若其中某一个属性组能唯一标识一条记录,则可以将该属性组作为该条记录的主键。由此可见,数据表中的主键之间是无重复的。
本说明书实施例中,应用服务器的本地缓存可以采用两级哈希表结构进行存储。其中,第一级哈希表以类型标识作为键值,以第二级哈希表的键值作为数据值。第二级哈希表的键值可以基于数据库中数据表的主键生成。第二级哈希表的数据值可以对应缓存的单条数据记录。
如图3所示,本地缓存相当于使用了两级Hash Table(哈希表),整个缓存相当于一个大的HashMap。其中,Type1、Type2、……、Typen分布表示不同的标识类型。KEY11、KEY12、……、KEYnn分别表示不同的KEY,VALUE11、VALUE12、……、VALUEnn分别对应缓存的单条数据记录。
类型标识(Type)作为第一级哈希表的键值,KEY作为第一级哈希表的数据值。每个Type又对应一个Hash Table,作为第二级哈希表,KEY为第二级哈希表的键值。而第二级哈希表的数据值可以为缓存的单条数据记录(VALUE),当然也可以为序列化后的单条数据记录。序列化可以是指将数据对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,数据对象将其当前状态写入到临时或持久性存储区。实际应用时,可以通过从存储区中读取或反序列化数据对象的状态,重新创建该数据对象。通过序列化的方式可以使得数据的存储与传输更为高效。
一些实施例中,可以基于数据库中数据表的主键生成KEY。生成的方式这里不做限定,如可以直接将数据记录对应的主键信息作为KEY。当然也可以对主键信息进行一定的处理后,作为KEY,但生成方式需保证KEY值的唯一性。对于整个分布式系统的多级缓存中的KEY采用相同的生成方式,以保证数据存储的一致性。同时,由上述分析可知,主键是唯一的,相应的,KEY值也是唯一的,不会重复。查询单条数据记录时,通过Type和KEY即可快速准确的定位到该条数据记录。同时,根据Type也可以快速定位到所有该Type下的所有数据记录,无需再做单条数据搜索。
对于分布式缓存。分布式缓存如可以采用Redis集群的架构形式。当然也可以采用其他形式的分布式缓存架构形式,可以根据需要设置,这里不做限定。分布式缓存内的缓存的数据所有AP均可以直接访问。如图4所示,本说明书实施例中,分布式缓存可以采用一级Hash Table结构。与本地缓存不同的是,分布式缓存采用Type和KEY组合在一起构成了哈希表的键值,单条数据记录或者序列化后的单条数据记录作为哈希表的数据值。然后,可以进一步利用哈希槽(Hash Slot)结构,将分布式缓存的键值的Type字段以某种方式标记,相应的,有相同标记的查询键值被聚集在一个哈希槽中,即相当于将同一Type下的数据聚集在一个哈希槽中。为了便于描述,可以将基于Type字段所生成的标记作为哈希槽内数据集合的标记字段。相应的,查询同一Type下的数据时,可以基于Type,快速定位到相应Type所生成的标记字段下的所有数据,进而快速提取出该Type所对应的数据记录。
基于上述实施例提供的方案,本说明书的一些实施例中还提供一种分布式系统,所述分布式系统可以包括数据库、分布式缓存、通知中心以及至少一个应用服务器。所述应用服务器中布设有本地缓存,所述应用服务器与所述通知中心建立通信连接。其中,所述本地缓存采用两级哈希表结构进行数据存储。其中,第一级哈希表中以类型标识作为键值,以第二级数据表的键值作为数据值。第二级数据表的键值基于数据记录在数据库中的主键生成,第二级哈希表的数据值对应缓存的单条数据记录。分布式缓存采用哈希槽结构进行数据存储。其中,哈希槽内数据值的键值基于类型标识以及数据记录在数据库中的主键生成,数据值对应缓存的单条数据记录,哈希槽内数据集合的标记字段基于键值中的类型标识生成,以使相同类型标识下的键值及数据记录存储至同一数据集合中。通过上述系统中缓存数据存储方式,可以在数据刷新时,更加快速准确的定位到相应的单条数据记录以及同一类型下的所有数据记录,从而可以更加快速的实现数据刷新处理。
基于上述分布式系统架构以及缓存数据存储方式,本说明书实施例中进一步提供了本地缓存以及分布式缓存的缓存数据刷新方式。对于单条数据记录以及同一数据类型下的全部数据记录可以分布采用下述两种不同的方式进行数据刷新,以提高数据刷新的效率以及一致性。
如图5以及图6所示,一些实施例中,对于单条数据记录,可以采用下述方式进行本地缓存以及分布式缓存的缓存数据刷新。
数据更新可以由用户在数据维护页面或者通过API接口调用等发起请求。相应的,可以将用户发起请求的终端作为更新发起方。该请求可以包括对数据需要做的操作(如增、删、改等操作)、Type、主键信息以及数据信息。该请求可以直接发送到数据提供方(直接操作数据库的服务器),数据提供方可以组装SQL语句,执行数据库操作。操作成功后,数据提供方可以调用通知中心的接口发起缓存数据刷新通知。通知成功后,数据提供方提交数据库的事务。
一些实施例中,所述数据提供方可以通过异步的方式向通知中心发送数据更新通知。以及所述数据提供方还可以调用分布式缓存的缓存数据刷新接口,向所述分布式缓存发送数据更新指令。所述数据更新指令中可以包括Type和主键。然后,分布式缓存可以根据该主键生成KEY。分布式缓存可以执行缓存数据刷新逻辑将Type以及KEY所对应的数据记录进行刷新。
另一些实施例中,所述数据提供方还可以在接收到通知中心反馈的消息广播成功响应后,再调用分布式缓存的缓存数据刷新接口。之后,再执行上述分布式缓存数据刷新步骤。通过在确定各应用服务器可以正常响应通知中心的消息通知后,再进一步后续的数据缓存刷新步骤,可以进一步保证执行缓存时,各应用服务器的数据一致性。
当缓存数据刷新通知由数据提供方成功写到通知中心后,所有注册到该通知中心的AP都会收到此消息,AP收到消息后,可以执行缓存数据刷新逻辑,从分布式缓存中读取更新后的数据,以刷新本地缓存中的数据。
在执行数据刷新时,分布式缓存以及各应用服务器的本地缓存可以先将相应Type以及KEY对应的数据记录清空,再执行数据填充操作,完成缓存数据刷新。当然,也可以采用其他的数据刷新逻辑,这里不做限定。
本说明书实施例中,通过先对分布式缓存中的数据记录进行刷新,再对本地缓存中的数据记录进行刷新,可以在数据刷新过程中,优先保证各应用服务器所对应的业务系统有数据使用。
基于上述实施例提供的方案,一些实施例中,所述数据提供方还可以用于在确定对数据库的目标数据记录更新操作成功后,向所述分布式缓存发送数据更新指令,所述数据更新指令可以包括目标数据记录以及所述目标数据记录的目标类型标识、在数据库中的目标主键。所述分布式缓存可以用于将所述目标类型标识以及目标主键所对应的数据记录更新为所述目标数据记录。所述目标数据记录可以为当前数据更新请求所对应的任意一个数据记录。为便于区分表述,该数据更新请求中的每个数据记录对应的类型标识作为目标类型标识,每个数据记录对应的主键作为目标主键。
另一些实施例中,所述数据提供方还可以用于向通知中心发送数据更新通知,所述数据更新通知包括所述目标数据记录的目标类型标识、在数据库中的目标主键。所述应用服务器还可以用于在接收到通知中心的消息后,从所述分布式缓存中读取所述目标类型标识以及目标主键所对应的数据记录,并基于读取的数据记录对本地缓存中所述目标类型标识以及目标主键对应的数据记录进行更新处理。
另一些实施例中,所述数据提供方还可以用于通过异步的方式向通知中心发送数据更新通知,并可以在接收到通知中心反馈的消息广播成功响应后,向所述分布式缓存发送数据更新指令。
对于按Type进行数据更新时,图7和图8所示,数据更新可以由用户在数据维护页面或者通过API接口调用等发起请求至数据提供方。数据库中数据的更新操作可以参考上述实施例。数据库操作执行成功后,数据提供方可以将相应Type的缓存数据刷新信息发送给通知中心,经由通知中心将消息发送到其它AP。该数据提供方还可以调用分布式缓存的缓存数据刷新接口,根据Type筛选出该Type下所有数据记录,然后全部删除。各AP接收到通知中心的刷新通知后,就将各自AP上相应Type下的缓存数据全部删除。
在本地缓存和分布式缓存该Type下的缓存数据均已清空的情况下,下次该Type所对应的数据查询请求过来时,AP将直接从数据库中查询数据,然后,再将查询的数据基于Type和KEY重新写入分布式缓存中以及本地缓存中,相应的,各AP可以通过读取分布式缓存中的数据更新自身本地缓存中的相应数据。
基于上述实施例提供的方案,一些实施例中,所述数据提供方可以用于在确定对数据库在目标类型标识下的数据记录更新操作成功后,向所述分布式缓存发送数据清空指令,所述数据清空指令包括所述目标类型标识。所述分布式缓存可以用于将所述目标类型标识对应的数据记录清空。
另一些实施例中,所述数据提供方还可以用于向通知中心发送数据清空通知,所述数据清空通知包括所述目标类型标识。所述应用服务器还可以用于在接收到通知中心的消息后,将所述目标类型标识下的数据记录清空。
另一些实施例中,应用服务器还可以用于在基于数据查询请求在从本地缓存以及分布式缓存中读取目标数据记录,而目标数据记录不存在的情况下,从所述数据库中读取所述目标数据记录;以及在确认从所述数据库中成功读取所述目标数据记录的情况下,以应用服务器作为数据刷新服务器。相应的,所述数据刷新服务器可以用于向所述分布式缓存发送数据更新指令,所述数据更新指令可以包括目标数据记录以及所述目标数据记录的目标类型标识、在数据库中的目标主键。所述分布式缓存还可以用于将所述目标类型标识以及目标主键所对应的数据记录更新为所述目标数据记录。
另一些实施例中,所述数据刷新服务器还可以用于向通知中心发送数据更新通知,所述数据更新通知包括所述目标数据记录的目标类型标识、在数据库中的目标主键。各应用服务器还可以用于在接收到通知中心的消息后,从所述分布式缓存中读取所述目标类型标识以及目标主键所对应的数据记录,并基于读取的数据记录对本地缓存中所述目标类型标识以及目标主键下的数据记录进行更新处理。
基于上述分布式系统,本说明书实施例还提供一种缓存数据刷新方法,所述方法可以包括如下步骤。
S20:所述数据提供方在确定对数据库的目标数据记录更新操作成功后,向所述分布式缓存发送数据更新指令,所述数据更新指令包括目标数据记录以及所述目标数据记录的目标类型标识、在数据库中的目标主键,以使所述分布式缓存将所述目标类型标识以及目标主键所对应的数据记录更新为所述目标数据记录。
S22:所述数据提供方向通知中心发送数据更新通知,所述数据更新通知包括所述目标数据记录的目标类型标识、在数据库中的目标主键;以使各应用服务器在接收到通知中心的消息后,从所述分布式缓存中读取所述目标类型标识以及目标主键所对应的数据记录,并基于读取的数据记录对本地缓存中所述目标类型标识以及目标主键对应的数据记录进行更新处理。
另一些实施例中,所述数据提供方还可以通过异步的方式向通知中心发送数据更新通知。并在接收到通知中心反馈的消息广播成功响应后,向所述分布式缓存发送数据更新指令。
基于上述分布式系统,本说明书实施例还提供一种缓存数据刷新方法,所述方法可以包括如下步骤。
S40:所述数据提供方在确定对数据库在目标类型标识下的数据记录更新操作成功后,向所述分布式缓存发送数据清空指令,所述数据清空指令包括所述目标类型标识,以使所述分布式缓存将所述目标类型标识对应的数据记录清空。
S42:所述数据提供方向通知中心发送数据清空通知,所述数据清空通知包括所述目标类型标识;以使各应用服务器在接收到通知中心的消息后,将所述目标类型标识下的数据记录清空。
另一些实施例中,应用服务器还可以在基于数据查询请求在从本地缓存以及分布式缓存中读取目标数据记录,而目标数据记录不存在的情况下,从所述数据库中读取所述目标数据记录;以及在确认从所述数据库中成功读取所述目标数据记录的情况下,以该应用服务器作为数据刷新服务器。相应的,所述数据刷新服务器可以向所述分布式缓存发送数据更新指令,所述数据更新指令包括目标数据记录以及所述目标数据记录的目标类型标识、在数据库中的目标主键,以使所述分布式缓存将所述目标类型标识以及目标主键所对应的数据记录更新为所述目标数据记录。
一些实施方式中,在对分布式缓存中的目标数据记录刷新完成后,数据刷新服务器可以不再向通知中心发送数据刷新通知,而是由各应用服务器在接收到数据查询请求时,直接从分布式缓存中读取目标数据记录。在从分布式缓存中读取到目标数据记录的情况下,相应的应用服务器对自身的本地缓存进行缓存更新。
另一些实施例中,所述数据刷新服务器还可以向通知中心发送数据更新通知,所述数据更新通知包括所述目标数据记录的目标类型标识、在数据库中的目标主键,以使各应用服务器在接收到通知中心的消息后,从所述分布式缓存中读取所述目标类型标识以及目标主键所对应的数据记录,并基于读取的数据记录对本地缓存中所述目标类型标识以及目标主键下的数据记录进行更新处理。通过进一步发送数据更新通知,可以使得各应用服务器及时更新自身的缓存数据,并可以进一步保证分布式系统中各级缓存数据的一致性。
需要说明的,上述所述的装置根据方法实施例的描述还可以包括其他的实施方式。具体的实现方式可以参照相关方法实施例的描述,在此不作一一赘述。
本说明书提供的上述实施例所述的方法或装置可以通过计算机程序实现业务逻辑并记录在存储介质上,所述的存储介质可以计算机读取并执行,实现本说明书实施例所描述方案的效果。因此,本说明书还提供一种缓存数据刷新设备,应用于服务器,所述设备可以包括处理器及存储处理器可执行指令的存储器,所述指令被所述处理器执行时实现包括上述任意一个实施例所述方法的步骤。
本说明书提供的上述实施例所述的方法或系统可以通过计算机程序实现业务逻辑并记录在存储介质上,所述的存储介质可以计算机读取并执行,实现本说明书实施例所描述方案的效果。因此,本说明书还提供一种分布式系统,所述系统可以包括处理器及存储处理器可执行指令的存储器,所述指令被所述处理器执行时实现包括上述任意一个实施例所述方法的步骤。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。具体的可以参照前述相关处理相关实施例的描述,在此不做一一赘述。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本说明书实施例并不局限于必须是符合标准数据模型/模板或本说明书实施例所描述的情况。某些行业标准或者使用自定义方式或实施例描述的实施基础上略加修改后的实施方案也可以实现上述实施例相同、等同或相近、或变形后可预料的实施效果。应用这些修改或变形后的数据获取、存储、判断、处理方式等获取的实施例,仍然可以属于本说明书的可选实施方案范围之内。
所述存储介质可以包括用于存储信息的物理装置,通常是将信息数字化后再以利用电、磁或者光学等方式的媒体加以存储。所述存储介质有可以包括:利用电能方式存储信息的装置如,各式存储器,如RAM、ROM等;利用磁能方式存储信息的装置如,硬盘、软盘、磁带、磁芯存储器、磁泡存储器、U盘;利用光学方式存储信息的装置如,CD或DVD。当然,还有其他方式的可读存储介质,例如量子存储器、石墨烯存储器等等。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本说明书的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述并不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
以上所述仅为本说明书的实施例而已,并不用于限制本说明书。对于本领域技术人员来说,本说明书可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书的权利要求范围之内。
Claims (14)
1.一种缓存数据刷新方法,其特征在于,应用于分布式系统,所述分布式系统包括数据库、分布式缓存、通知中心以及至少一个应用服务器;所述应用服务器中布设有本地缓存,所述应用服务器与所述通知中心建立通信连接;其中,所述本地缓存采用两级哈希表结构进行数据存储;第一级哈希表中以类型标识作为键值,以第二级数据表的键值作为数据值;第二级哈希表的键值基于数据记录在数据库中的主键生成;分布式缓存采用哈希槽结构进行数据存储;其中,哈希槽内数据值的键值基于类型标识以及数据记录在数据库中的主键生成,哈希槽内数据集合的标记字段基于键值中的类型标识生成,以使相同类型标识下的键值及数据记录存储至同一数据集合中;所述方法包括:
所述数据提供方在确定对数据库的目标数据记录更新操作成功后,向所述分布式缓存发送数据更新指令,所述数据更新指令包括目标数据记录以及所述目标数据记录的目标类型标识、在数据库中的目标主键,以使所述分布式缓存将所述目标类型标识以及目标主键所对应的数据记录更新为所述目标数据记录;以及,
所述数据提供方向通知中心发送数据更新通知,所述数据更新通知包括所述目标数据记录的目标类型标识、在数据库中的目标主键;以使各应用服务器在接收到通知中心的消息后,从所述分布式缓存中读取所述目标类型标识以及目标主键所对应的数据记录,并基于读取的数据记录对本地缓存中所述目标类型标识以及目标主键对应的数据记录进行更新处理。
2.根据权利要求1所述的方法,其特征在于,所述数据提供方通过异步的方式向通知中心发送数据更新通知;并在接收到通知中心反馈的消息广播成功响应后,向所述分布式缓存发送数据更新指令。
3.一种缓存数据刷新方法,其特征在于,应用于分布式系统,所述分布式系统包括数据库、分布式缓存、通知中心以及至少一个应用服务器;所述应用服务器中布设有本地缓存,所述应用服务器与所述通知中心建立通信连接;其中,所述本地缓存采用两级哈希表结构进行数据存储;第一级哈希表中以类型标识作为键值,以第二级数据表的键值作为数据值;第二级数据表的键值基于数据记录在数据库中的主键生成;分布式缓存采用哈希槽结构进行数据存储;其中,哈希槽内数据值的键值基于类型标识以及数据记录在数据库中的主键生成,哈希槽内数据集合的标记字段基于键值中的类型标识生成,以使相同类型标识下的键值及数据记录存储至同一数据集合中;所述方法包括:
所述数据提供方在确定对数据库在目标类型标识下的数据记录更新操作成功后,向所述分布式缓存发送数据清空指令,所述数据清空指令包括所述目标类型标识,以使所述分布式缓存将所述目标类型标识对应的数据记录清空;以及,
所述数据提供方向通知中心发送数据清空通知,所述数据清空通知包括所述目标类型标识;以使各应用服务器在接收到通知中心的消息后,将所述目标类型标识下的数据记录清空。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
应用服务器在基于数据查询请求在从本地缓存以及分布式缓存中读取目标数据记录,而目标数据记录不存在的情况下,从所述数据库中读取所述目标数据记录;以及在确认从所述数据库中成功读取所述目标数据记录的情况下,以该应用服务器作为数据刷新服务器;
相应的,所述数据刷新服务器向所述分布式缓存发送数据更新指令,所述数据更新指令包括目标数据记录以及所述目标数据记录的目标类型标识、在数据库中的目标主键;以使所述分布式缓存将所述目标类型标识以及目标主键所对应的数据记录更新为所述目标数据记录。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
所述数据刷新服务器向通知中心发送数据更新通知,所述数据更新通知包括所述目标数据记录的目标类型标识、在数据库中的目标主键,以使各应用服务器在接收到通知中心的消息后,从所述分布式缓存中读取所述目标类型标识以及目标主键所对应的数据记录,并基于读取的数据记录对本地缓存中所述目标类型标识以及目标主键对应的数据记录进行更新处理。
6.一种分布式系统,其特征在于,所述分布式系统包括数据库、分布式缓存、通知中心以及至少一个应用服务器;所述应用服务器中布设有本地缓存,所述应用服务器与所述通知中心建立通信连接;其中,所述本地缓存采用两级哈希表结构进行数据存储;第一级哈希表中以类型标识作为键值,以第二级数据表的键值作为数据值;第二级数据表的键值基于数据记录在数据库中的主键生成;分布式缓存采用哈希槽结构进行数据存储;其中,哈希槽内数据值的键值基于类型标识以及数据记录在数据库中的主键生成,哈希槽内数据集合的标记字段基于键值中的类型标识生成,以使相同类型标识下的键值及数据记录存储至同一数据集合中。
7.根据权利要求6所述的系统,其特征在于,所述数据提供方用于在确定对数据库的目标数据记录更新操作成功后,向所述分布式缓存发送数据更新指令,所述数据更新指令包括目标数据记录以及所述目标数据记录的目标类型标识、在数据库中的目标主键;
所述分布式缓存用于将所述目标类型标识以及目标主键所对应的数据记录更新为所述目标数据记录。
8.根据权利要求7所述的系统,其特征在于,所述数据提供方用于向通知中心发送数据更新通知,所述数据更新通知包括所述目标数据记录的目标类型标识、在数据库中的目标主键;
所述应用服务器用于在接收到通知中心的消息后,从所述分布式缓存中读取所述目标类型标识以及目标主键所对应的数据记录,并基于读取的数据记录对本地缓存中所述目标类型标识以及目标主键对应的数据记录进行更新处理。
9.根据权利要求8所述的系统,其特征在于,所述数据提供方用于通过异步的方式向通知中心发送数据更新通知;并在接收到通知中心反馈的消息广播成功响应后,向所述分布式缓存发送数据更新指令。
10.根据权利要求6所述的系统,其特征在于,所述数据提供方用于在确定对数据库在目标类型标识下的数据记录更新操作成功后,向所述分布式缓存发送数据清空指令,所述数据清空指令包括所述目标类型标识;
所述分布式缓存用于将所述目标类型标识对应的数据记录清空。
11.根据权利要求6所述的系统,其特征在于,所述数据提供方还用于向通知中心发送数据清空通知,所述数据清空通知包括目标类型标识;
所述应用服务器用于在接收到通知中心的消息后,将所述目标类型标识下的数据记录清空。
12.根据权利要求10所述的系统,其特征在于,应用服务器还用于在基于数据查询请求在从本地缓存以及分布式缓存中读取目标数据记录,而目标数据记录不存在的情况下,从所述数据库中读取所述目标数据记录;以及在确认从所述数据库中成功读取所述目标数据记录的情况下,以该应用服务器作为数据刷新服务器;
相应的,所述数据刷新服务器用于向所述分布式缓存发送数据更新指令,所述数据更新指令包括目标数据记录以及所述目标数据记录的目标类型标识、在数据库中的目标主键;
所述分布式缓存还用于将所述目标类型标识以及目标主键所对应的数据记录更新为所述目标数据记录。
13.根据权利要求10所述的系统,其特征在于,所述数据刷新服务器还用于向通知中心发送数据更新通知,所述数据更新通知包括所述目标数据记录的目标类型标识、在数据库中的目标主键;
应用服务器还用于在接收到通知中心的消息后,从所述分布式缓存中读取所述目标类型标识以及目标主键所对应的数据记录,并基于读取的数据记录对本地缓存中所述目标类型标识以及目标主键对应的数据记录进行更新处理。
14.一种分布式系统,其特征在于,所述分布式系统包括至少一个处理器及用于存储处理器可执行指令的存储器,所述指令被所述处理器执行时实现权利要求1-5任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011484476.9A CN112597195B (zh) | 2020-12-16 | 2020-12-16 | 缓存数据刷新方法及分布式系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011484476.9A CN112597195B (zh) | 2020-12-16 | 2020-12-16 | 缓存数据刷新方法及分布式系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112597195A true CN112597195A (zh) | 2021-04-02 |
CN112597195B CN112597195B (zh) | 2024-08-13 |
Family
ID=75196376
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011484476.9A Active CN112597195B (zh) | 2020-12-16 | 2020-12-16 | 缓存数据刷新方法及分布式系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112597195B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103345521A (zh) * | 2013-07-17 | 2013-10-09 | 腾讯科技(深圳)有限公司 | 一种在哈希表数据库中处理键值的方法和装置 |
CN107888657A (zh) * | 2017-10-11 | 2018-04-06 | 上海交通大学 | 低延迟分布式存储系统 |
CN108153757A (zh) * | 2016-12-02 | 2018-06-12 | 深圳市中兴微电子技术有限公司 | 一种哈希表管理的方法和装置 |
CN110083601A (zh) * | 2019-04-04 | 2019-08-02 | 中国科学院计算技术研究所 | 面向键值存储系统的索引树构建方法及系统 |
CN111367877A (zh) * | 2020-03-11 | 2020-07-03 | 中国人民解放军国防科技大学 | 基于区块链的文件处理方法、装置及终端 |
CN111459418A (zh) * | 2020-05-15 | 2020-07-28 | 南京大学 | 一种基于rdma的键值存储系统传输方法 |
US20200311075A1 (en) * | 2019-03-27 | 2020-10-01 | Sap Se | Hash trie based optimization of database operations |
-
2020
- 2020-12-16 CN CN202011484476.9A patent/CN112597195B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103345521A (zh) * | 2013-07-17 | 2013-10-09 | 腾讯科技(深圳)有限公司 | 一种在哈希表数据库中处理键值的方法和装置 |
CN108153757A (zh) * | 2016-12-02 | 2018-06-12 | 深圳市中兴微电子技术有限公司 | 一种哈希表管理的方法和装置 |
CN107888657A (zh) * | 2017-10-11 | 2018-04-06 | 上海交通大学 | 低延迟分布式存储系统 |
US20200311075A1 (en) * | 2019-03-27 | 2020-10-01 | Sap Se | Hash trie based optimization of database operations |
CN110083601A (zh) * | 2019-04-04 | 2019-08-02 | 中国科学院计算技术研究所 | 面向键值存储系统的索引树构建方法及系统 |
CN111367877A (zh) * | 2020-03-11 | 2020-07-03 | 中国人民解放军国防科技大学 | 基于区块链的文件处理方法、装置及终端 |
CN111459418A (zh) * | 2020-05-15 | 2020-07-28 | 南京大学 | 一种基于rdma的键值存储系统传输方法 |
Non-Patent Citations (1)
Title |
---|
邢毅;: "针对移动计算环境改进的T-Tree缓存设计", 计算机工程与设计, no. 03, 16 February 2008 (2008-02-16) * |
Also Published As
Publication number | Publication date |
---|---|
CN112597195B (zh) | 2024-08-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109254733B (zh) | 用于存储数据的方法、装置和系统 | |
CN109144994A (zh) | 索引更新方法、系统及相关装置 | |
CN112789606B (zh) | 数据重分布方法、装置及系统 | |
WO2017092470A1 (zh) | 数据存储方法和装置 | |
CN104202423B (zh) | 一种通过软件架构扩展缓存的系统 | |
CN110597859B (zh) | 一种分页查询数据的方法和装置 | |
CN111143382B (zh) | 数据处理方法、系统和计算机可读存储介质 | |
CN106874424A (zh) | 一种基于MongoDB和Redis的网页数据采集处理方法及系统 | |
CN101964820A (zh) | 一种保持数据一致性的方法及系统 | |
CN105512283A (zh) | 数据质量管理控制方法及装置 | |
WO2022062184A1 (zh) | 高并发查询方法、智能终端及存储介质 | |
CN103503388B (zh) | 一种分布式队列消息读取方法及设备、系统 | |
CN111414361A (zh) | 标签数据存储方法、装置、设备及可读存储介质 | |
CN112800066B (zh) | 索引管理的方法、相关设备及存储介质 | |
CN112597195B (zh) | 缓存数据刷新方法及分布式系统 | |
US20240045888A1 (en) | Key name generation method and apparatus and non-transitory computer-readable storage medium | |
CN115576947A (zh) | 一种数据管理方法、装置、组合库、电子设备及存储介质 | |
CN117827854A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN111984600B (zh) | 一种文件聚合方法、装置、设备及可读存储介质 | |
CN105357222B (zh) | 一种分布式Session管理中间件 | |
CN113626382A (zh) | 分布式文件系统中聚合对象的索引方法、系统及相关装置 | |
CN112711627A (zh) | 一种Greenplum数据库的数据导入方法、装置及设备 | |
CN112347794A (zh) | 数据翻译方法、装置、设备及计算机存储介质 | |
CN112269758A (zh) | 一种基于文件分级的文件迁移方法及相关装置 | |
CN112527911B (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 |