发布信息

数据查询系统和缓存数据更新方法与流程 专利技术说明

作者:admin      2023-07-05 13:35:53     296



计算;推算;计数设备的制造及其应用技术1.本公开涉及计算机技术领域,具体而言,涉及一种数据查询系统和缓存数据更新方法。背景技术:2.随着互联网技术的快速发展,互联网上出现了越来越多的数据,在进行数据查询的过程中,往往会采用缓存系统对数据进行缓存,以避免对数据库中的数据进行频繁查询,从而提高数据查询性能。3.相关技术中,在使用包含缓存功能的数据查询系统对数据进行查询时,往往会针对不同的数据设置固定的有效期,从而在有效期内对数据进行缓存和使用,但设置固定有效期的数据缓存方式可能会出现缓存击穿、缓存穿透、缓存雪崩等异常情况,因此如何提高数据查询系统的可靠性成为了本领域内亟待解决的技术问题。技术实现要素:4.本公开实施例至少提供一种数据查询系统和缓存数据更新方法。5.第一方面,本公开实施例提供了一种数据查询系统,包括服务集群和通信中间件,所述服务集群包括多个服务实例,其中:所述服务实例,用于接收客户端发送的数据查询请求,获取与所述数据查询请求对应的目标数据;在所述目标数据是从缓存区域中获取的情况下,基于所述服务实例存储的与所述目标数据对应的更新信息,检测所述目标数据是否满足预设的缓存数据更新条件,若是,对所述缓存区域中的目标数据进行更新,将更新后的目标数据发送至所述客户端;以及,重新确定与所述目标数据对应的更新信息,并将重新确定的更新信息发送至所述通信中间件;所述通信中间件,用于在接收到任一所述服务实例发送的更新信息之后,将接收的更新信息发送至除该服务实例外的其他服务实例,以对其他服务实例存储的更新信息进行更新。6.一种可能的实施方式中,所述服务实例中包括应用进程和缓存管理组件;所述应用进程,用于根据接收的数据查询请求,确定与所述数据查询请求对应的查询关键字;所述缓存管理组件,用于从数据库或者数据库对应的所述缓存区域中,获取与所述查询关键字匹配的目标数据。7.一种可能的实施方式中,所述服务实例中包括更新时间管理组件;所述更新时间管理组件,用于存储所述缓存区域中各数据分别对应的更新信息;其中,所述更新信息包括下次更新时间。8.一种可能的实施方式中,所述服务实例中包括缓存异步更新线程;所述服务实例,在对所述缓存区域中的目标数据进行更新时,用于:通过所述缓存异步更新线程启动异步线程,从数据库中获取与所述目标数据对应的更新数据;基于所述更新数据对所述目标数据进行更新。9.一种可能的实施方式中,所述更新信息包括下次更新时间,所述服务实例,在重新确定与所述目标数据对应的更新信息时,用于:基于预设的更新时间间隔和当前时间确定所述目标数据对应的下次更新时间。10.一种可能的实施方式中,所述服务实例还用于:接收其他服务实例基于所述通信中间件发送的第一更新信息;基于所述第一更新信息中携带的查询关键字,确定更新时间管理组件存储的更新信息中,与所述查询关键字对应的第二更新信息;基于所述第一更新信息对所述第二更新信息进行更新。11.第二方面,本公开实施例提供了一种缓存数据更新方法,包括:通过服务实例接收客户端发送的数据查询请求;获取与所述数据查询请求对应的目标数据;在所述目标数据是从缓存区域中获取的情况下,基于预先存储的与所述目标数据对应的更新信息,检测所述目标数据是否满足预设的缓存数据更新条件,若是,对所述缓存区域中的目标数据进行更新,将更新后的目标数据发送至所述客户端;以及,重新确定与所述目标数据对应的更新信息,并将重新确定的更新信息发送至通信中间件,以通过所述通信中间件对除接收所述数据查询请求的服务实例外的其他服务实例存储的更新信息进行更新。12.第三方面,本公开实施例还提供一种计算机设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当计算机设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行上述第二方面中的步骤。13.第四方面,本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述第二方面中的步骤。14.本公开实施例提供的数据查询系统和缓存数据更新方法,通过设置包含多个服务实例的服务集群,对缓存区域中的缓存数据进行更新,能够减少因为大量的缓存数据更新不及时所导致的数据查询系统缓存击穿的风险,提高数据查询系统的稳定性;另一方面,各服务实例在对缓存数据进行更新后,还可以重新确定出缓存数据对应的更新信息,并将重新确定出的更新信息通过通信中间件同步至其他服务实例中,从而实现更新信息的同步,从而能够避免由于更新信息不同步导致的短期内对同一缓存数据进行重复更新,所导致的计算资源浪费的问题,提高了数据查询系统的可靠性。15.为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。附图说明16.为了更清楚地说明本公开实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,此处的附图被并入说明书中并构成本说明书中的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。应当理解,以下附图仅示出了本公开的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。17.图1示出了本公开实施例所提供的一种数据查询系统的架构示意图;图2示出了本公开实施例所提供的数据查询系统中,数据查询系统中服务实例13的架构示意图;图3示出了本公开实施例所提供的一种缓存数据更新方法的流程图;图4示出了本公开实施例所提供的缓存数据更新方法中,缓存数据更新方法在实际使用中的流程图;图5示出了本公开实施例所提供的一种数据查询和缓存数据更新的流程图;图6示出了本公开实施例所提供的一种计算机设备的结构示意图。具体实施方式18.为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。19.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。20.本文中术语“和/或”,仅仅是描述一种关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合,例如,包括a、b、c中的至少一种,可以表示包括从a、b和c构成的集合中选择的任意一个或多个元素。21.可以理解的是,在使用本公开各实施例公开的技术方案之前,均应当依据相关法律法规通过恰当的方式对本公开所涉及个人信息的类型、使用范围、使用场景等告知用户并获得用户的授权。22.例如,在响应于接收到用户的主动请求时,向用户发送提示信息,以明确地提示用户,其请求执行的操作将需要获取和使用到用户的个人信息。从而,使得用户可以根据提示信息来自主地选择是否向执行本公开技术方案的操作的电子设备、应用程序、服务器或存储介质等软件或硬件提供个人信息。23.作为一种可选的但非限定性的实现方式,响应于接收到用户的主动请求,向用户发送提示信息的方式例如可以是弹窗的方式,弹窗中可以以文字的方式呈现提示信息。此外,弹窗中还可以承载供用户选择“同意”或者“不同意”向电子设备提供个人信息的选择控件。24.可以理解的是,上述通知和获取用户授权过程仅是示意性的,不对本公开的实现方式构成限定,其它满足相关法律法规的方式也可应用于本公开的实现方式中。25.经研究发现,在使用包含缓存功能的数据查询系统对数据进行查询时,往往会针对不同的数据设置固定的有效期,从而在有效期内对数据进行缓存和使用,但设置固定有效期的数据缓存方式可能会出现缓存击穿、缓存穿透、缓存雪崩等异常情况。26.其中,若缓存数据更新不及时,导致在某个热点数据过期(即需要进行更新)之后,在对该热点数据更新完成之前,有大量的相关查询请求查询该热点数据,则会导致数据库在短时间内存在大量的访问和查询请求,从而造成数据库的请求阻塞,甚至可能会导致数据库崩溃,从而造成“缓存穿透”的异常情况;此外,若缓存数据更新不及时,导致在某一时刻大量缓存数据过期,则可能会导致由于数据库在短时间内存在大量的访问和查询请求,从而造成数据库的请求阻塞,甚至可能会导致数据库崩溃,从而造成“缓存雪崩”的异常情况。27.基于上述研究,本公开提供了一种数据查询系统、缓存数据更新方法及装置,通过设置包含多个服务实例的服务集群,可以在接收到多个数据查询请求之后,通过多个服务实例对多个数据查询请求分别进行处理,以同时对缓存区域中的多个缓存数据进行更新,因此通过这种方式能够减少因为大量的缓存数据更新不及时所导致的数据查询系统缓存击穿的风险,提高数据查询系统的稳定性;另一方面,各服务实例在对缓存数据进行更新后,还可以重新确定出缓存数据对应的更新信息,并将重新确定出的更新信息通过通信中间件同步至其他服务实例中,从而实现多个服务实例之间更新信息的同步,保证了各服务实例的缓存数据的实时性,提高了数据查询系统的可靠性。28.为便于对本实施例进行理解,首先对本公开实施例所公开的数据查询系统的架构进行详细介绍,所述数据查询系统由服务集群和通信中间件组成。29.参见图1所示,为本公开实施例提供的一种数据查询系统的架构示意图,包括服务集群11和通信中间件12,所述服务集群11包括多个服务实例13,其中:所述服务实例13,用于接收客户端14发送的数据查询请求,获取与所述数据查询请求对应的目标数据;在所述目标数据是从缓存区域15中获取的情况下,基于所述服务实例13存储的与所述目标数据对应的更新信息,检测所述目标数据是否满足预设的缓存数据更新条件,若是,对所述缓存区域15中的目标数据进行更新,将更新后的目标数据发送至所述客户端14;以及,重新确定与所述目标数据对应的更新信息,并将重新确定的更新信息发送至所述通信中间件12;其中,所述服务集群11中的各服务实例13在实际应用中可以进行分布式部署,即各所述服务实例13可以部署在分布式的服务器集群中,而在分布式部署场景下各服务实例可能会部署到不同的服务器中,若分别使用不同服务实例存储不同的缓存数据对应的更新信息,则当某一服务器发生故障无法正常运行时,则该服务器上部署的服务实例对应的缓存数据的更新信息便可能会丢失,从而导致缓存数据无法正常更新等异常情况,因此在分布式部署的情况下,所述服务集群11中的各服务实例13可以存储有各缓存数据(即缓存区域15中缓存的数据)分别对应的更新信息,各服务实例存储的更新信息相同,从而可以使得多个服务实例存储的更新信息互为备份,提高了数据查询系统的稳定性;所述缓存区域15可以是数据库16对应的缓存区域15,所述数据库16可以包含本地数据库和/或第三方数据库,所述第三方数据库可以通过第三方数据接口与缓存区域15进行数据传输,在进行数据查询的过程中,若无法从本地数据库中查询到相应的数据,则可以通过第三方数据接口进行数据查找,并将查找到的数据缓存到所述缓存区域15中,以提高数据查询请求的命中率;所述数据库16中的数据在被查询后,可以缓存至所述数据库16对应的缓存区域15中,以使相应数据可以在后续的查询过程中直接在缓存区域15中找到,各个服务示例13可以从同一缓冲区域中查询获取数据;检测所述目标数据是否满足预设的缓存数据更新条件,可以是检测当前时间是否达到所述目标数据对应的下次更新时间,若是,则可以确定所述目标数据满足预设的缓存数据更新条件,并对所述缓存区域中的目标数据进行更新。30.此外,针对所述缓存区域中存在的其他缓存数据,可以在判断目标数据是否需要进行更新时,同时通过判断缓存区域中除所述目标数据外的其他缓存数据是否需要更新。31.具体的,可以检测除所述目标数据外的所述其他缓存数据是否也满足所述缓存数据更新条件,即可以检测当前时间是否达到所述其他缓存数据中的任一缓存数据对应的下次更新时间,当检测到当前时间达到任一缓存数据对应的下次更新时间的情况下,即可对该缓存数据进行更新。这样,从而可以充分利用本公开实施例提供的数据查询系统中各个服务实例的计算资源,对缓存区域中的缓存数据进行及时更新。32.另外,所述服务集群11还可以根据其他缓存更新方式对缓存区域16中的缓存数据主动进行更新;其中,所述缓存更新方式可以包括如下方式中的至少一种:方式1、按照预设的时间间隔检测缓存区域中的缓存数据是否满足缓存数据更新条件。33.其中,服务集群11所包含的各服务实例13可以分别设置不同的时间间隔,以使得服务集群11中的各服务实例可以依次对所述缓存区域15中的缓存数据进行检测。34.示例性的,以服务集群11所包含的服务实例为实例1和实例2为例,则针对实例1的时间间隔可以设置为5s,针对实例2的时间间隔可以设置为8s,则所述实例1可以在第5s、第10s、第15s等时刻依次对所述缓存区域15中的缓存数据进行检测,所述实例2可以在第8s、第16s、第24s等时刻依次对所述缓存区域15中的缓存数据进行检测,从而可以通过为各服务实例设置不同的时间间隔,能够均衡不同服务实例的负载,且缩短缓存区域的检测等待时间,提高缓存区域的缓存数据更新效率。35.方式2、按照各服务实例的实时负载确定出用于进行检测的目标实例,并使用目标实例检测缓存区域中的缓存数据是否满足缓存数据更新条件。36.这里,可以在预设的检测时刻,按照各服务实例13分别对应的实时负载情况,确定出满足预设的实时负载要求的目标实例,并使用所述目标实例检测缓存区域中的缓存数据是否满足缓存数据更新条件,以完成对所述缓存区域的缓存数据更新,同时提高各服务实例的利用效率。37.上述两种方式中,可以不受限于是否接收到客户端的数据查询请求,在满足对应的条件下主动对缓存区域中的缓存数据进行更新,由此,可以保证缓存区域中的缓存数据的实时性。38.所述通信中间件12,用于在接收到任一所述服务实例13发送的更新信息之后,将接收的更新信息发送至除该服务实例13外的其他服务实例13,以对其他服务实例13存储的更新信息进行更新。39.这里,需要说明的是,所述客户端14可以包括多个客户端,多个客户端均可以向所述服务集群11发送数据查询请求,所述服务集群11中所包含的各服务实例13可以有均等机会接收到所述数据查询请求(或者可以根据负载均衡的方式进行分配),并根据接收到的数据查询请求进行数据查询;所述通信中间件12用于在分布式部署的环境下,为各服务实例13提供通信服务,各服务实例13可以通过向所述通信中间件12发布信息,以实现数据的传输。40.具体的,各服务实例13可以订阅所述通信中间件12的广播数据,从而可以通过通信中间件12的广播功能接收将其他服务实例13发布的数据,由于在分布式部署的环境下,各所述服务实例13中需要存储各缓存数据分别对应的更新信息,因此所述通信中间件12在发送所述广播数据时,可以向所述其他服务实例13发送内容相同的广播数据,以实现对于其他服务实例13的数据同步更新(即对更新信息进行同步更新);此外,所述通信中间件还可以通过其他方式进行各服务实例13之间的数据同步,例如可以通过消息队列、共享内存等方式。41.一种可能的实施方式中,所述服务实例13中包括应用进程131和缓存管理组件132,其中:所述应用进程131,用于根据接收的数据查询请求,确定与所述数据查询请求对应的查询关键字;所述缓存管理组件132,用于从数据库16或者数据库16对应的所述缓存区域15中,获取与所述查询关键字匹配的目标数据。42.这里,所述缓存区域15可以是基于远程字典服务(remote dictionary server,redis)建立的,在从缓存数据中查询数据时,可以根据数据查询请求对应的查询关键字key以及预先配置的key-value的映射关系,从缓存数据中找到与所述查询关键字key匹配的数据value。43.其中,所述查询关键字可以是基于所述数据查询请求中包含的请求参数确定的,在基于请求参数确定查询关键字时可以根据预设的关键字组合方法,将预设前缀与请求参数进行组合,从而得到与请求参数对应的查询关键字;针对实际应用中的不同需求,所述关键字组合方法中使用的预设前缀可以不同,本公开实施例对具体如何基于请求参数生成查询关键字不做限定,以实际应用中能够实施为准。44.具体的,在进行数据查询时,可以先从缓存区域15中进行查找,若缓存区域15中未能找到相应数据,则可以从数据库16中进行查找,并在从数据库16中查找到相应数据的情况下,根据预设的更新时间间隔,确定出相应数据对应的更新信息,从而将查找到的相应数据和更新信息存储至缓存区域15中,同时将相应数据作为数据查询结果发送至相应的客户端14。45.一种可能的实施方式中,所述服务实例13中包括更新时间管理组件133;所述更新时间管理组件133,用于存储所述缓存区域15中各数据分别对应的更新信息;其中,所述更新信息包括下次更新时间。46.其中,所述缓存区域15中的数据及对应的更新信息可以是预先配置的,比如可以在启动所述数据查询系统时,采用预热方法等数据处理方法将数据库16中的部分数据存储至缓存区域15中,以供缓存区域15使用;或者,也可以是所述更新时间管理组件133根据实时数据查询中使用到的数据进行动态添加的,比如可以根据实时的数据查询请求将相应数据及更新信息添加至所述缓存区域15中。47.具体的,所述更新时间管理组件133还可以基于查询关键字key从应用程序内存中查到数据value的下一次更新时间next_update_time。48.这样,本公开实施例可以基于存储的下一次更新时间和数据请求触发对缓存区域15中存储的缓存数据的更新,从而保证了缓存区域15中的数据有效性。49.一种可能的实施方式中,所述服务实例13中包括缓存异步更新线程134;任一所述服务实例13,在对所述缓存区域15中的目标数据进行更新时,用于:通过所述缓存异步更新线程134启动异步线程,从数据库16中获取与所述目标数据对应的更新数据,并基于所述更新数据对所述目标数据进行更新。50.这里,在检测所述目标数据满足预设的缓存数据更新条件的情况下,可以通过缓存异步更新线程134,从预先配置的线程池中获取并启动一个异步线程,以通过异步处理的方式从数据库16中获取与所述目标数据对应的更新数据,并基于所述更新数据对所述目标数据进行更新。51.具体的,在基于所述更新数据对所述目标数据进行更新时,可以使用所述更新数据对所述目标数据进行替换。52.这样,由于对目标数据进行更新的过程与其他任务是异步执行的,因此可以使得服务实例13能够在正常进行数据查询的过程中,实现对于缓存数据的异步更新,从而提高了服务实例13在实际使用过程中的数据处理效率。53.一种可能的实施方式中,所述更新信息包括下次更新时间,所述服务实例13,在重新确定与所述目标数据对应的更新信息时,用于:基于预设的更新时间间隔和当前时间确定所述目标数据对应的下次更新时间。54.其中,所述预设的更新时间间隔可以是人为配置的,或者也可以是综合缓存区域15实时缓存数据的数据量、缓存区域15的数据处理能力、数据库16实时存储数据的数据量等相关参数实时确定的,本公开实施例对实时确定更新时间间隔时使用的相关参数不做限定,以能够表征缓存区域15、服务实例13、数据库16中的至少一个要素的实时和/或预期数据处理压力为准。55.具体的,重新确定与所述目标数据对应的更新信息的步骤可以是由所述服务实例13中的更新时间管理组件133执行的,所述更新时间管理组件133可以根据当前时间current_time和预设的更新时间间隔update_interval,确定所述目标数据对应的下次更新时间next_update_time;并在计算出所述目标数据对应的下次更新时间后,将所述目标数据对应的查询关键字和所述目标数据对应的下次更新时间存储至本地(即应用进程内存);其中,在存储所述目标数据对应的查询关键字key和下次更新时间next_update_time(以下简写为n)时,可以将所述目标数据对应的查询关键字key和下次更新时间n进行拼接,生成一个k-n键值对(其中的k和n唯一对应,即一个查询关键字key对应一个下次更新时间n),并通过存储图map等方式进行存储,从而可以通过查询k-n键值对的方式,找到与目标数据对应的查询关键字key匹配的下次更新时间n,所述存储图例如可以是哈希图(hash map)。56.这样,通过设置更新时间间隔,可以计算出缓存数据对应的下次更新时间,从而可以根据确定出的下次更新时间对缓存数据进行更新,避免出现由于缓存数据更新不及时所导致的各种异常情况;此外,通过设置多个服务实例对缓存数据进行持续迭代更新,可以延长有效的缓存数据在缓存区域中的时间,从而使得缓存命中率得到提高,服务性能得到提升。57.一种可能的实施方式中,所述服务实例13中包括通信组件136,所述通信组件136,用于将重新确定的更新信息发送至所述通信中间件12,从而可以将重新确定出的更新信息同步至其他服务实例13中,以避免其他服务实例在短时间内对目标数据进行重复更新所造成的计算资源的浪费。58.具体的,在将重新确定的更新信息发送至所述通信中间件12时,可以将所述目标数据对应的查询关键字和下次更新时间一起发送至所述通信中间件12的缓存数据更新频道cache_update_channel中,并通过所述通信中间件12向订阅缓存数据更新频道cache_update_channel的其他服务实例广播所述数据对应的查询关键字和下次更新时间,从而可以将重新确定出的更新信息同步至其他服务实例13中。59.实际应用中,任一所述服务实例13除了可以在进行数据查询时,根据缓存数据对应的下次更新时间对缓存数据进行更新,还可以接收其他服务实例13通过通信中间件12发送的更新信息。60.一种可能的实施方式中,所述服务实例13还用于:接收其他服务实例13基于所述通信中间件12发送的第一更新信息;基于所述第一更新信息中携带的查询关键字,确定更新时间管理组件133存储的更新信息中,与所述查询关键字对应的第二更新信息;基于所述第一更新信息对所述第二更新信息进行更新。61.其中,所述第二更新信息包含待更新的下次更新时间,所述第一更新信息包含本次对缓存数据进行更新后重新确定出的下次更新时间,通过使用第一更新信息对所述第二更新信息进行更新,从而根据重新确定出的缓存数据对应的下次更新时间,对之前存储的待更新的下次更新时间进行更新,从而避免短时间内对缓存数据进行重复更新所造成的资源浪费等异常情况。62.这样,由于服务实例可以分布式部署,而通信中间件通过上述步骤将更新信息同步至分布式部署的各服务实例中,从而可以实现更新时间的同步,避免重复的数据查询、缓存数据更新等操作。63.此外,通过上述缓存更新方式自动刷新缓存数据,以及在及时更新缓存数据的同时通知其他服务实例,可以避免缓存击穿的风险,从而排除系统稳定性隐患。64.参见图2所示,为本公开实施例提供的一种数据查询系统中服务实例13的架构示意图,所述服务实例13包括应用进程131、缓存管理组件132、更新时间管理组件133、缓存异步更新线程134、数据管理组件135、通信组件136,其中:所述应用进程131,用于根据接收的数据查询请求,确定与所述数据查询请求对应的查询关键字;所述缓存管理组件132,用于从数据库16或者数据库16对应的所述缓存区域15中,获取与所述查询关键字匹配的目标数据;所述更新时间管理组件133,用于存储所述缓存区域15中各数据分别对应的更新信息;其中,所述更新信息包括下次更新时间;所述缓存异步更新线程134启动异步线程,用于从数据库16中获取与所述目标数据对应的更新数据,并基于所述更新数据对所述目标数据进行更新;所述数据管理组件135,用于从数据库16中查询数据;其中,在根据数据查询请求从缓存数据中无法查找到相应数据的情况下,可以数据管理组件135,即可使用数据管理组件135从数据库16中查询与所述数据查询请求对应的数据。65.所述通信组件136,用于将重新确定的更新信息发送至所述通信中间件12。66.具体的,上述组件的具体描述可以参照上文相关内容,在此不再赘述。67.下面,对本公开实施例提供的缓存数据更新方法进行介绍,为便于对本实施例进行理解,本公开实施例所提供的缓存数据更新方法的执行主体一般为具有一定计算能力的计算机设备,该计算机设备例如包括:终端设备或服务器或其它处理设备,终端设备可以为用户设备(user equipment,ue)、移动设备、用户终端、终端、个人数字助理(personal digital assistant,pda)、手持设备、计算设备、车载设备、可穿戴设备等。在一些可能的实现方式中,该缓存数据更新方法可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。68.参见图3所示,为本公开实施例提供的缓存数据更新方法的流程图,所述方法包括s301~s303,其中:s301:通过服务实例接收客户端发送的数据查询请求。69.s302:获取与所述数据查询请求对应的目标数据。70.s303:在所述目标数据是从缓存区域中获取的情况下,基于预先存储的与所述目标数据对应的更新信息,检测所述目标数据是否满足预设的缓存数据更新条件,若是,对所述缓存区域中的目标数据进行更新,将更新后的目标数据发送至所述客户端;以及,重新确定与所述目标数据对应的更新信息,并将重新确定的更新信息发送至通信中间件,以通过所述通信中间件对除接收所述数据查询请求的服务实例外的其他服务实例存储的更新信息进行更新。71.其中,所述预先存储的与所述目标数据对应的更新信息,可以包括所述目标数据对应的下次更新时间,所述下次更新时间用于判断当前时刻是否需要对目标数据进行更新;所述目标数据对应的更新信息可以存储在服务实例的更新时间管理组件中。72.示例性的,本公开实例提供的缓存数据更新方法在实际使用中的流程图可以如图4所示,图4中,所述应用进程131根据接收的数据查询请求,确定与所述数据查询请求对应的查询关键字;所述缓存管理组件132从数据库16对应的所述缓存区域15中,获取与所述查询关键字匹配的目标数据;所述数据管理组件135,在根据数据查询请求从缓存数据中无法查找到相应数据的情况下,从数据库16中查询与所述数据查询请求对应的数据;所述更新时间管理组件133存储所述缓存区域15中各数据分别对应的更新信息,以及基于预设的更新时间间隔和当前时间确定所述目标数据对应的下次更新时间;所述缓存异步更新线程134启动异步线程,用于从数据库16中获取与所述目标数据对应的更新数据,并基于所述更新数据对所述目标数据进行更新;服务实例a在完成上述过程中,可以通过通信组件136将重新确定的更新信息发送至所述通信中间件12,以通过所述通信中间件发送至其他服务实例13中,使得其他服务实例13的更新时间管理组件133基于接收的下次更新时间对存储的目标数据对应的下次更新时间进行更新,以对所述目标数据的更新信息进行更新;另一方面,在对完成对所述目标数据的更新后,可以将更新后的目标数据发送至所述客户端14。73.一种可能的实施方式中,在获取与所述数据查询请求对应的目标数据时,可以根据接收的数据查询请求,确定与所述数据查询请求对应的查询关键字,并从数据库或者数据库对应的所述缓存区域中,获取与所述查询关键字匹配的目标数据。74.一种可能的实施方式中,可以从更新时间管理组件中获取存储的所述缓存区域中各数据分别对应的更新信息;其中,所述更新信息包括下次更新时间。75.一种可能的实施方式中,在对所述缓存区域中的目标数据进行更新时,可以通过所述缓存异步更新线程启动异步线程,从数据库中获取与所述目标数据对应的更新数据;基于所述更新数据对所述目标数据进行更新。76.一种可能的实施方式中,在重新确定与所述目标数据对应的更新信息时,可以基于预设的更新时间间隔和当前时间确定所述目标数据对应的下次更新时间。77.一种可能的实施方式中,可以通过以下步骤a1~a3对更新信息进行更新:a1:接收其他服务实例基于所述通信中间件发送的第一更新信息。78.a2:基于所述第一更新信息中携带的查询关键字,确定更新时间管理组件存储的更新信息中,与所述查询关键字对应的第二更新信息。79.a3:基于所述第一更新信息对所述第二更新信息进行更新。80.具体的,关于上述实施方式的具体内容参照上文所述系统中的相关描述,在此不再赘述。81.下面,结合图5对数据查询和缓存数据更新的流程进行介绍,参见图5所示,为本公开实施例提供的数据查询过程(即图中第一阶段)和缓存数据更新过程(即图中第二阶段)的流程图,包括以下步骤:步骤1、接收数据查询请求。82.步骤2、基于请求参数生成目标数据v的key。83.步骤3、基于key从缓存区域查新目标数据v。84.步骤4、基于key查询v对应的下一次更新时间。85.步骤5、判断当前时间是否达到下一次更新时间。86.这里,若当前时间达到所述下一次更新时间,则执行步骤6,若当前时间未达到所述下一次更新时间,则执行步骤7。87.步骤6、异步更新缓存区域数据。88.步骤7、返回数据。89.其中,步骤6异步更新缓存区域数据可以由以下步骤组成:步骤61、启动异步线程。90.步骤62、查询key对应的最新数据vn。91.步骤63、将vn存储缓存区域替换旧数据v。92.步骤64、计算vn对应的下一次更新时间n。93.步骤65、将vn对应的key和n作为记录k-n存储至本地。94.步骤66、将k-n记录同步至其他服务实例。95.步骤67、结束异步线程。96.具体的,关于上述步骤的具体内容参照上文所述系统中的相关描述,在此不再赘述。97.本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。98.基于同一技术构思,本公开实施例还提供了一种计算机设备。参照图6所示,为本公开实施例提供的计算机设备600的结构示意图,包括处理器601、存储器602、和总线603。其中,存储器602用于存储执行指令,包括内存6021和外部存储器6022;这里的内存6021也称内存储器,用于暂时存放处理器601中的运算数据,以及与硬盘等外部存储器6022交换的数据,处理器601通过内存6021与外部存储器6022进行数据交换,当计算机设备600运行时,处理器601与存储器602之间通过总线603通信,使得处理器601在执行以下指令:通过服务实例接收客户端发送的数据查询请求;获取与所述数据查询请求对应的目标数据;在所述目标数据是从缓存区域中获取的情况下,基于预先存储的与所述目标数据对应的更新信息,检测所述目标数据是否满足预设的缓存数据更新条件,若是,对所述缓存区域中的目标数据进行更新,将更新后的目标数据发送至所述客户端;以及,重新确定与所述目标数据对应的更新信息,并将重新确定的更新信息发送至通信中间件,以通过所述通信中间件对除接收所述数据查询请求的服务实例外的其他服务实例存储的更新信息进行更新。99.一种可能的实施方式中,所述处理器601的指令中,所述获取与所述数据查询请求对应的目标数据,包括:根据接收的数据查询请求,确定与所述数据查询请求对应的查询关键字;从数据库或者数据库对应的所述缓存区域中,获取与所述查询关键字匹配的目标数据。100.一种可能的实施方式中,所述处理器601的指令中,所述对所述缓存区域中的目标数据进行更新,包括:通过所述缓存异步更新线程启动异步线程,从数据库中获取与所述目标数据对应的更新数据;基于所述更新数据对所述目标数据进行更新。101.一种可能的实施方式中,所述处理器601的指令中,所述重新确定与所述目标数据对应的更新信息,包括:基于预设的更新时间间隔和当前时间确定所述目标数据对应的下次更新时间。102.本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中所述的缓存数据更新方法的步骤。其中,该存储介质可以是易失性或非易失的计算机可读取存储介质。103.本公开实施例还提供一种计算机程序产品,该计算机程序产品承载有程序代码,所述程序代码包括的指令可用于执行上述方法实施例中所述的缓存数据更新方法的步骤,具体可参见上述方法实施例,在此不再赘述。104.其中,上述计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(software development kit,sdk)等等。105.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本公开所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。106.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。107.另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。108.所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。109.最后应说明的是:以上所述实施例,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施例技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应所述以权利要求的保护范围为准。









图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!




内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,发布内容不收取任何费用也不接任何广告!




免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本文部分文字与图片资源来自于网络,部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!

相关内容 查看全部