一种数据请求处理方法、装置、计算机设备及存储介质与流程
本发明涉及计算机技术领域,特别涉及一种数据请求处理方法、装置、计算机设备及存储介质。
背景技术:
网络游戏也称在线游戏,一般指多名玩家透过计算机互联网进行交互娱乐的电子游戏。其中,大型多人在线角色扮演游戏(massivemultiplayeronlinerole-playinggame,简称为mmorpg)是电子角色扮演游戏按电子游戏人数分类分别出来的一种网络游戏。在所有mmorpg中,玩家都可扮演一个或多个虚拟角色,并控制该角色在游戏的虚拟世界中进行活动与行为。
mmorpg中的游戏玩家数量庞大,游戏数据具有读多写少的特性,游戏数据库的读写能力难以满足高并发的数据访问请求,因此通常在游戏数据库的前端引入分布式缓存集群,将游戏数据缓存于分布式缓存集群中,数据访问请求转发至分布式缓存集群中处理,避免了由于请求直接冲击游戏数据库而导致的数据库崩溃。
然而相关技术中,高并发的热点数据请求对于分布式缓存集群的冲击会导致集群中单点的cpu与网络压力过大,进而导致缓存服务瘫痪。
技术实现要素:
为了解决现有技术的问题,本发明实施例提供了一种数据请求处理方法、装置、计算机设备及存储介质。所述技术方案如下:
一方面,提供了一种数据请求处理方法,所述方法包括:
通过至少一个代理增强节点接收数据请求方发送的针对目标数据的第一数据访问请求,所述至少一个代理增强节点中存储有热点缓存数据,所述热点缓存数据是指缓存集群中属于热点数据类型的缓存数据;
当所述热点缓存数据中存在与所述目标数据相匹配的目标热点缓存数据时,读取所述目标热点缓存数据;
通过所述至少一个代理增强节点将读取的所述目标热点缓存数据返回给所述数据请求方;
当所述热点缓存数据中不存在与所述目标数据相匹配的目标热点缓存数据时,通过所述至少一个代理增强节点将所述第一数据访问请求发送给所述缓存集群,由所述缓存集群确定所述第一数据访问请求的请求结果。
另一方面,提供了一种数据请求处理装置,所述装置包括:
接收模块,用于通过至少一个代理增强节点接收数据请求方发送的针对目标数据的第一数据访问请求,所述至少一个代理增强节点中存储有热点缓存数据,所述热点缓存数据是指缓存集群中存储的属于热点数据类型的缓存数据;
读取模块,用于在所述热点缓存数据中存在与所述目标数据相匹配的目标热点缓存数据时,读取所述目标热点缓存数据;
返回模块,用于通过所述至少一个代理增强节点将读取的所述目标热点缓存数据返回给所述数据请求方;
转发模块,用于在所述热点缓存数据中不存在与所述目标数据相匹配的目标热点缓存数据时,通过所述至少一个代理增强节点将所述第一数据访问请求发送给所述缓存集群,由所述缓存集群确定所述第一数据访问请求的请求结果。
在一个可能的方式的,所述装置还包括:
记录模块,用于针对所述缓存集群中每种数据类型的缓存数据,记录所述数据类型的缓存数据在第一预设时间间隔内的访问频次;
第一判断模块,用于根据所述数据类型的缓存数据在第一预设时间间隔内的访问频次,判断所述数据类型是否为热点数据类型;
第一上报模块,用于在所述数据类型为热点数据类型时,将所述热点数据类型上报给协调服务,由所述协调服务将所述热点数据类型对应的热点缓存数据发送给至少一个代理节点;
存储模块,用于在所述至少一个代理节点中存储所述热点数据类型对应的热点缓存数据,得到所述至少一个代理增强节点。
在一个可能的方式的,所述记录模块包括:
类型确定模块,用于确定所述缓存集群中缓存数据的至少一个数据类型;
队列建立模块,用于建立与所述至少一个数据类型相对应的至少一个访问频次队列,所述访问频次队列包括预设数量个时间窗口,每个所述时间窗口记录对应所述时间窗口的访问频次,所述时间窗口的大小为所述第一预设时间间隔;
目标队列确定模块,用于在通过至少一个代理节点接收到第二数据访问请求时,根据所述第二数据访问请求所请求访问的数据的第一数据类型,确定所述至少一个访问频次队列中与所述第一数据类型相匹配的第一访问频次队列;
频次更新模块,用于更新所述第一访问频次队列中目标时间窗口的访问频次。
在一个可能的方式中,所述第一判断模块包括:
频次提取模块,用于每隔第二预设时间间隔提取所述至少一个访问频次队列中每个访问频次队列的访问频次,得到每个访问频次队列对应的第一访问频次;
第二判断模块,用于判断所述第一访问频次是否超过预设频次阈值时;
热点确定模块,用于在第二判断模块判断的结果为是时,确定所述第一访问频次所对应的访问频次队列的数据类型为热点数据类型。
在一个可能的方式中,所述装置还包括:
第一确定模块,用于根据所述热点数据类型对应的热点缓存数据在第一预设时间间隔内的访问频次,确定不满足热度条件的第一热点数据类型;
第二上报模块,用于将所述第一热点数据类型上报给所述协调服务,由所述协调服务通知所述至少一个代理增强节点所述第一热点数据类型不满足热度条件;
删除模块,用于从所述至少一个代理增强节点中删除所述第一热点数据类型对应的热点缓存数据。
在一个可能的方式中,所述装置还包括:
变更消息发送模块,用于在所述热点缓存数据在数据库中的对应原数据发生变更时,将所述变更消息发送给所述协调服务,所述变更消息中包括变更后的所述原数据;由所述协调服务将所述变更后的原数据发送给所述至少一个代理增强节点;
热点更新模块,用于根据所述变更后的原数据,更新所述至少一个代理增强节点中对应的所述热点缓存数据。
在一个可能的方式中,所述接收模块包括:
第二确定模块,用于根据所述至少一个代理增强节点中每个代理增强节点的负载情况,确定目标代理增强节点;
接收子模块,用于通过所述目标代理增强节点接收所述第一数据访问请求。
另一方面,提供了一种计算机设备,包括处理器和存储器,所述存储器中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由所述处理器加载并执行以实现上述数据请求处理方法。
另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由处理器加载并执行以实现如上述的数据请求处理方法。
另一方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各种可选实现方式中提供的方法。
本发明实施例在代理增强节点存储热点缓存数据,通过代理增强节点接收数据访问请求,并在命中热点缓存数据时将数据直接返回给数据请求方,在未命中热点缓存数据时将请求转发给缓存集群,由缓存集群进行处理,从而在代理层对热点数据请求进行了拦截和处理,避免了由于高并发热点数据访问请求对缓存集群的冲击而导致的集群中单点的cpu和网络压力过大,确保了缓存集群可以正常提供服务。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的数据请求处理方法的一种示例性系统架构图;
图2是本发明实施例提供的数据请求处理方法的另一种示例性系统架构图;
图3是本发明实施例提供的一种数据请求处理方法的流程示意图;
图4是本发明实施例提供的生成代理增强节点的一种可选流程示意图;
图5是本发明实施例提供的访问频次队列的一种示例性结构图;
图6是本发明实施例提供的另一种数据请求处理方法的流程示意图;
图7是本发明实施例提供的另一种数据请求处理方法的流程示意图;
图8是本发明实施例提供的一种数据请求处理装置的结构示意图;
图9是本发明实施例提供的一种服务器的硬件结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或服务器不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
相关技术中一般采用一致性hash的缓存方案,即将缓存集群中的缓存节点采用一致性hash算法进行部署,每个请求到达一致性hash缓存后,顺时针找到距离最近的缓存节点进行数据访问。通过在一致性hash缓存中引入虚拟节点,当发生热点数据时,将部分热点请求转移至其他缓存节点以降低热点缓存节点的压力。上述降低缓存节点压力的方案中,需要在部署时确定一致性hash缓存的真实缓存节点和虚拟缓存节点的数量,虚拟缓存节点只能在一定程度上缓解热点缓存问题,无法根本上解决,一旦热点数据超过一定数量,一致性hash缓存将会失效,虚拟缓存节点分摊的压力会造成对真实缓存节点的压力继续增大,若真实缓存节点的压力已超过阈值,虚拟缓存节点转移过来的压力将导致缓存节点瘫痪,进而无法保证缓存集群提供正常的缓存服务。
鉴于此,本发明实施例提供了一种数据请求处理方法,该方法在代理增强节点存储热点缓存数据,通过代理增强节点接收数据访问请求,并在命中热点缓存数据时将数据直接返回给数据请求方,在未命中热点缓存数据时将请求转发给缓存集群,由缓存集群进行处理,从而在代理层对热点数据请求进行了拦截和处理,避免了由于高并发热点数据访问请求对缓存集群的冲击而导致的集群中单点的cpu和网络压力过大,确保了缓存集群可以正常提供服务。
请参阅图1,其所示为本发明实施例提供的一种数据请求处理方法的系统架构示意图,包括终端110、代理增强集群120、分布式缓存集群130、数据库集群140、热点处理节点150和协调服务集群160。
对于集群(120、130、140、160),从物理层面来说,可以包括多个服务器,从虚拟层面来说,可以包括多个节点。其中,节点指的是某个独立的server进程,可以用ip端口来区分,节点可以部署在一台或者多台服务器上,一般来说一台物理服务器独立部署一个节点,以实现高可用。
终端110可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。终端110中运行有客户端应用软件,该客户端应用软件可以但不限于是游戏应用程序。当为游戏应用程序时该可以是能够提供虚拟环境,以供用户代入和操作的虚拟角色在该虚拟环境中进行活动的应用程序,典型地,该游戏应用程序为大型多人在线角色扮演游戏mmorpg。该游戏应用程序具有账号登录功能,用户可以在游戏应用程序中注册和登录自己的用户账号,可选的,该用户账号下可以包括一个或者多个玩家角色。终端110作为数据请求方可以将数据访问请求发送给代理增强集群120。
代理增强集群120可以包括至少一个代理增强节点,本说明书实施例中代理增强节点是代理节点与热点缓存数据的结合,也即代理增强节点是存储有热点缓存数据的代理节点,如图2所示。至少一个代理增强节点可以接收终端110的数据访问请求,在命中本地存储的热点缓存数据时,直接向数据访问请求的请求方返回命中的热点缓存数据,在未命中本地存储的热度缓存数据时,才将该数据访问请求转发给分布式缓存集群130,由分布式缓存集群130对数据访问请求进行处理。
分布式缓存集群130包括至少一个缓存节点,负责缓存数据库140中的数据,提供高速的数据读取服务,整体对外提供统一的访问接口。
数据库集群140提供数据存储服务,同时提供数据修改服务,数据被修改后,将更新至分布式缓存中,数据库集群140在存储数据时可以依据数据类型对数据进行分类存储,该数据类型可以根据具体的应用场景来设定。在一个具体的应用场景中,数据库集群140可以是用于存储mmorpg中游戏数据的游戏数据库,该游戏数据库中的游戏数据的数据类型可以但不限于包括玩家数据、帮派数据、队伍数据、功力排行榜数据等等。可以理解的,分布式缓存集群130中缓存数据的数据类型与数据库集群140中的数据类型相一致。
热点处理节点150用于对分布式缓存集群130中缓存数据的访问频次进行统计,并根据统计的结果确定热点数据类型,将该热点数据类型上报给协调服务集群160。具体的实施中,如图2所示,热点处理节点150可以包括提供数据访问频次统计服务的多个单生产者单消费者队列(英文全称:singleproducersingleconsumer,英文简写:spsc),以及部署在该多个spsc队列后端的全局统计线程thread,多个spsc与缓存数据的数据类型一一对应,全局统计线程thread可以按照预设时间间隔从各个spsc队列中取出统计值,并根据取出的统计值确定热点数据类型,将热度数据类型上报给协调服务集群160。
协调服务集群160包括提供协调服务的至少一个协调服务节点,协调服务为分布式、开放源码的分布式应用程序协调服务,完成统一命名服务、状态同步服务、集群管理、分布式应用配置项管理等工作,具体的实施中,该协调服务集群160可以为如图2所示的zookpeer集群,zookeeper是google的chubby一个开源的实现。本发明实施例中,协调服务集群160可以接收到热点处理节点150上报的热度数据类型,并根据热点数据类型提供热度缓存数据推送服务,将热点缓存数据推送至代理节点形成代理增强节点。
本说明书实施例中,服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、cdn、以及大数据和人工智能平台等基础云计算服务的云服务器。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本发明在此不做限制。
云存储(cloudstorage)是在云计算概念上延伸和发展出来的一个新的概念,分布式云存储系统(以下简称存储系统)是指通过集群应用、网格技术以及分布存储文件系统等功能,将网络中大量各种不同类型的存储设备(存储设备也称之为存储节点)通过应用软件或应用接口集合起来协同工作,共同对外提供数据存储和业务访问功能的一个存储系统。
目前,存储系统的存储方法为:创建逻辑卷,在创建逻辑卷时,就为每个逻辑卷分配物理存储空间,该物理存储空间可能是某个存储设备或者某几个存储设备的磁盘组成。客户端在某一逻辑卷上存储数据,也就是将数据存储在文件系统上,文件系统将数据分成许多部分,每一部分是一个对象,对象不仅包含数据而且还包含数据标识(id,identity)等额外的信息,文件系统将每个对象分别写入该逻辑卷的物理存储空间,且文件系统会记录每个对象的存储位置信息,从而当客户端请求访问数据时,文件系统能够根据每个对象的存储位置信息让客户端对数据进行访问。
请参阅图3,其所示为本发明实施例提供的一种数据请求处理方法的流程示意图,该方法可以应用于本发明实施例的数据请求处理装置,该数据请求处理装置可以配置在图1或图2所示的系统中。
需要说明的是,本说明书提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的系统或产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。具体的如图3所示,所述方法可以包括:
s301,通过至少一个代理增强节点接收数据请求方发送的针对目标数据的第一数据访问请求。
具体的,在终端的客户端运行过程中,若用户想要查询或者修改一些数据时,用户可以通过该客户端向该客户端的后台发送针对目标数据的第一数据访问请求,该客户端的后台通过至少一个代理增强节点接收数据请求方发送的上述第一数据访问请求。其中,至少一个代理增强节点中存储有热点缓存数据,所述热点缓存数据是指缓存集群中属于热点数据类型的缓存数据,缓存集群中某个数据类型是否为热点数据类型可以通过该数据类型的缓存数据所对应的访问频次来确定,具体的可以将访问频次超过某一频次阈值的数据类型确定为热点数据类型。
本发明实施例中代理增强节点的生成过程可以包括如图4中的以下步骤:
s401,针对所述缓存集群中每种数据类型的缓存数据,记录所述数据类型的缓存数据在第一预设时间间隔内的访问频次。
其中,第一预设时间间隔可以根据实际需要进行设置,例如该第一预设时间间隔可以为1秒,也即针对每种数据类型的缓存数据,记录该缓存数据每秒的请求次数。
以mmorpg中的游戏数据为例,缓存集群中缓存数据的数据类型可以包括玩家信息、帮派信息、队伍信息、功力排行榜信息等等。
在一个可能的实施方式中,可以通过建立与数据类型一一对应的队列来记录相应数据类型的缓存数据在第一预设时间间隔内的访问频次,在具体的实施中可以包括以下步骤:
1)确定缓存集群中缓存数据的至少一个数据类型。
例如,确定mmorpg对应缓存集群中的游戏缓存数据的数据类型包括玩家信息、帮派信息、队伍信息、功力排行榜信息等等。
2)建立与所述至少一个数据类型相对应的至少一个访问频次队列,每个访问频次队列包括预设数量个时间窗口,每个时间窗口记录对应该时间窗口的访问频次,时间窗口的大小为上述的第一预设时间间隔。
本发明实施例中,访问频次队列与数据类型一一对应,也即一个数据类型对应一个访问频次队列,该访问频次队列可以是单生产者单消费者spsc队列,每个访问频次队列包括预设数量个时间窗口,该预设数量可以根据实际应用中内存的占用情况来设定,每个时间窗口的大小为第一预设时间间隔,例如当第一预设时间间隔为1秒时,每个时间窗口的大小为1秒,也即每个时间窗口记录1秒内的访问频次。
实际应用中,在建立至少一个访问频次队列时可以配置相互配合使用的定时器和窗口指针,其中,定时器用于计时,预先设置有时间窗口大小如1秒。当定时器计时达到时间窗口大小即第一预设时间间隔后,可以控制窗口指针在访问频次队列中按设定的顺序移动一个时间窗口,并且重新计时。窗口指针用于指示当前时刻对应的时间窗口,即窗口指针在访问频次队列中指向的目标时间窗口。
本发明实施例中,为了实现对内存的复用,以及提升对缓存集群的保护力度,上述访问频次队列可以采用如图5所示的环形队列结构,该环形队列中的每个时间窗口用于记录对应该时间窗口如1秒内的访问频次,向该环形队列中插入数据以及从该环形队列中消费数据均沿着环形队列的规定方向顺序操作,当从该环形队列中的某个时间窗口提取数据也即消费数据后清空该时间窗口中的记录。
3)在通过至少一个代理节点接收到第二数据访问请求时,根据所述第二数据访问请求所请求访问的数据的第一数据类型,确定所述至少一个访问频次队列中与所述第一数据类型相匹配的第一访问频次队列。
本发明实施例中,未存储有热点缓存数据的代理层节点为普通的代理节点,初始阶段通过至少一个代理节点接收终端作为数据请求方发送的第二数据访问请求,根据该第二数据访问请求所请求访问的数据可以确定所请求访问的数据的第一数据类型,进而依据该第一数据类型可以查找到至少一个访问频次队列中与该第一数据类型相匹配的第一访问频次队列。
4)更新所述第一访问频次队列中目标时间窗口的访问频次。
具体的,目标时间窗口为当前时刻窗口指针在访问频次队列中所指向的时间窗口。其中,更新访问频次具体可以为对相应时间窗口的访问频次加1,也即代理层接收的数据访问请求可以触发相应访问频次队列中相应时间窗口的访问频次加1。
以图5所示的环形结构的访问频次队列为例,新建的访问频次队列中每个时间窗口记录的访问频次的初始值为0次。假设在第一个时间窗口如第一个1秒内代理节点有接收到a数据类型的数据访问请求,那么当前时刻的窗口指针应该指向索引为“1”的时间窗口,进而可以对与a数据类型相对应的访问频次队列a’中时间窗口1记录的访问频次0次更新为1次。假设在上述第一个时间窗口如第一个1秒内代理节点还接收到b数据类型的数据访问请求,那么当前时刻的窗口指针应该仍指向索引为“1”的时间窗口,进而可以对与b数据类型相对应的访问频次队列b’中时间窗口1记录的访问频次0次更新为1次;假设在上述第一个时间窗口如第一个1秒内代理节点又接收到a数据类型的数据访问请求,那么当前时刻的窗口指针应该仍指向索引为“1”的时间窗口,进而可以对与a数据类型相对应的访问频次队列a’中时间窗口1记录的访问频次1次更新为2次。假设在第二个时间窗口如第二个1秒内代理节点有接收到a数据类型的数据访问请求,那么当前时刻的窗口指针应该指向索引为“2”的时间窗口,进而可以对与a数据类型相对应的访问频次队列a’中时间窗口2记录的访问频次0次更新为1次。
通过上述实施例,可以实现将每种数据类型的缓存数据在时间窗口即第一预设时间间隔内的访问频次进行记录。
s403,根据所述数据类型的缓存数据在第一预设时间间隔内的访问频次,判断所述数据类型是否为热点数据类型。
本发明实施例针对每种数据类型的缓存数据,根据其在第一预设时间间隔内的访问频次对其是否为热点数据类型进行判断,若该数据类型为热点数据类型,则可以执行步骤s405。
具体的实施中,当采用前述的访问频次队列来记录每种数据类型在第一预设时间间隔内的访问频次时,可以每隔第二预设时间间隔提取所述至少一个访问频次队列中每个访问频次队列的访问频次,得到每个访问频次队列对应的第一访问频次。如图2中所示的系统示意图,可以通过部署在至少一个访问频次队列后端的全局统计线程thread每隔第二预设时间间隔从各个访问频次队列中消费一个时间窗口中的数据,其中第二预设时间间隔可以与第一预设时间间隔相一致,例如都为1秒。其中,对于访问频次队列的时间窗口中访问频次的消费按照窗口指针的移动方向进行。
判断每个访问频次队列对应的第一访问频次是否超过预设频次阈值,若存在超过预设频次阈值的第一访问频次,则将该超过预设频次阈值的第一访问频次所对应的访问频次队列的数据类型确定为热点数据类型。
其中,预设频次阈值应小于缓存集群中单点请求处理能力最大时的访问频次,具体的实施中,预设频次阈值可以根据实际应用中缓存集群中单点的请求处理能力来设定,当缓存集群中单点的请求处理能力较强时,可以将预设频次阈值设置的大一些,当缓存集群中单点的请求处理能力较弱时,可以将预设频次阈值设置的小一些,以确定缓存服务的正常提供。
s405,将所述热点数据类型上报给协调服务,由所述协调服务将所述热点数据类型对应的热点缓存数据发送给至少一个代理节点。
具体的,协调服务可以在接收到热点数据类型时,从缓存集群中获取该热点数据类型对应的缓存数据也即热点缓存数据,并将该热点缓存数据推送给至少一个代理节点。
实际应用中,为了提高缓存内存的使用率,协调服务可以将缓存集群中的热点缓存数据迁移到至少一个代理节点,也即当在至少一个代理节点中存储该热点缓存数据后,可以将缓存集群中对应该热点缓存数据的缓存数据删除掉,从而可以释放出更多的缓存内存,以缓存数据库中其他的数据。
s407,在所述至少一个代理节点中存储所述热点数据类型对应的热点缓存数据,得到所述至少一个代理增强节点。
也即本发明实施例的代理增强节点是在本地存储有热点缓存数据的代理节点。
可以理解的,上述步骤s301在通过至少一个代理增强节点接收到数据请求方发送的针对目标数据的第一数据访问请求时,该第一数据访问请求也可以同时作为上述的第二数据访问请求触发对相应数据类型的访问频次队列中目标时间窗口的访问频次的更新,从而实现对热点数据类型的实时监测。
s303,当所述热点缓存数据中存在与所述目标数据相匹配的目标热点缓存数据时,读取所述目标热点缓存数据。
具体的,至少一个代理增强节点在接收到数据请求方发送的针对目标数据的第一数据访问请求后,首先判断本地存储的热点缓存数据是否命中目标数据,若命中了则直接从本地读取命中的热点缓存数据,并执行步骤s305;若本地存储的热点缓存数据未命中目标数据,则执行步骤s306。
s305,通过所述至少一个代理增强节点将读取的所述目标热点缓存数据返回给所述数据请求方。
也即,若至少一个代理增强节点本地存储的热点缓存数据命中了目标数据时,直接将命中的目标热点缓存数据返回给数据请求方,从而实现了对针对热点缓存数据的热点数据访问请求的拦截,避免了热点数据访问请求对缓存集群的直接冲击,确保了缓存服务的正常。
s307,当所述热点缓存数据中不存在与所述目标数据相匹配的目标热点缓存数据时,通过所述至少一个代理增强节点将所述第一数据访问请求发送给所述缓存集群,由所述缓存集群确定所述第一数据访问请求的请求结果。
本发明实施例中,若至少一个代理增强节点本地存储的热点缓存数据未命中目标数据,则表明该第一数据访问请求所请求的目标数据不是热点缓存数据,此时将该第一数据访问请求转发给缓存集群,由缓存集群处理该第一数据访问请求以确定该第一数据访问请求的请求结果,从而在实现对热点数据访问请求拦截的同时,确保了对数据请求方数据访问请求的正常响应。
在一个可能的实施方式中,为了进一步避免代理层的热点问题,步骤s301在执行时,可以先通过负载均衡器接收数据请求方的第一数据访问请求,根据至少一个代理增强节点中每个代理增强节点的负载情况,确定目标代理增强节点;进而将该第一数据访问请求分发给目标代理增强节点,通过目标代理增强节点接收并按照上述步骤s303至步骤s307处理该第一数据访问请求。具体的实施方式中,目标代理增强节点可以是负载最低的代理增强节点。
实际应用中,热点数据类型不会一直保持高访问的热度,为了提高本发明实施例中方案的灵活性,在至少一个代理节点中存储热点数据类型对应的热点缓存数据得到至少一个代理增强节点之后,该方法还可以包括如图6中所示的以下步骤:
s601,根据所述热点数据类型对应的热点缓存数据在第一预设时间间隔内的访问频次,确定不满足热度条件的第一热点数据类型。
其中,热度条件可以是访问频次超过预设频次阈值,那么当某个热点数据类型对应的热点缓存数据在第一预设时间间隔内的访问频次不能满足热度条件时,则表明对该热点缓存数据的访问请求已不构成对缓存集群的威胁,此时针对不满足热度条件的第一热点数据类型可以执行步骤s603。
s603,将所述第一热点数据类型上报给所述协调服务,由所述协调服务通知所述至少一个代理增强节点所述第一热点数据类型不满足热度条件。
s605,从所述至少一个代理增强节点中删除所述第一热点数据类型对应的热点缓存数据。
可以理解的,步骤s601至步骤s605并不限于如图6中所示位于步骤s301之前,其还可以与步骤s301同时进行,也可以在步骤s301之后执行,本发明对此不作具体限定。
在一个可能的实施方式中,为了保证代理增强节点中存储的热点缓存数据与数据库集群中数据的一致性,该方法还可以包括以下步骤:
1)当所述热点缓存数据在数据库中的对应原数据发生变更时,将所述变更消息发送给所述协调服务,所述变更消息中包括变更后的所述原数据。
2)由所述协调服务将所述变更后的原数据发送给所述至少一个代理增强节点。
3)根据所述变更后的原数据,更新所述至少一个代理增强节点中对应的所述热点缓存数据,从而可以保证数据请求方可以访问到最新的数据。
可以理解的,至少一个代理增强节点在接收到客户端的数据写操作时,可以直接将待写入的数据发送给数据库集群,由数据库集群对待写入的数据进行存储。
下面结合图2所示的系统架构图对本发明实施例的方案进行进一步的说明。在图2中每个spsc队列维护与其对应的数据类型的缓存数据每秒的访问频次,每个spsc队列的结构可以参见图5,其中时间窗口大小为1秒。请参阅图7,其所示为本发明实施例提供的另一种数据请求处理方法的流程示意图,如图7所示,该方法可以包括:
s701,数据请求方向代理节点发送第二数据访问请求;
s702,代理节点根据第二数据访问请求所请求访问数据的第一数据类型确定相匹配的spsc队列。
s703,相匹配的spsc队列更新当前时刻对应的时间窗口中的访问频次。
s704,thread线程每秒从各个spsc队列中取出访问频次。
s705,thread线程判断从各个spsc队列中取出的访问频次是否超过预设频次阈值,并将超过预设频次阈值的spsc队列对应的数据类型确定为热点数据类型。
s706,thread线程将热点数据类型上报给协调服务。
s707,协调服务从缓存集群中获取热点数据类型对应的缓存数据即热点缓存数据。
s708,协调服务将热点缓存数据推送给各个代理节点。
s709,各个代理节点在本地存储热点缓存数据,形成代理增强节点。
s710,代理增强节点接收数据请求方发送的针对目标数据的第一数据访问请求。
s711,代理增强节点判断本地存储的热点缓存数据是否命中,若本地存储的热点缓存数据命中则执行步骤s712~s713,否则执行步骤s714。
s712,代理增强节点获取命中的热点缓存数据。
s713,代理增强节点将命中的热点缓存数据返回给数据请求方。
s714,代理增强节点将第一数据访问请求转发给缓存集群。
s715,缓存集群确定第一数据访问请求的请求结果,并将该请求结果返回给数据请求方。
s716,代理增强节点在接收到第一数据访问请求后,还将该第一数据访问请求作为前述步骤s701中的第二数据访问请求,并执行前述步骤s702至步骤s709。
需要说明的是,前述步骤s701至步骤s716中的具体细节可以参见本发明实施例中的图3至图6所示方法实施例中的相关描述,在此不再赘述。
由本发明实施例的上述技术方案可见,本发明实施例在代理增强节点存储热点缓存数据,通过代理增强节点接收数据访问请求,并在命中热点缓存数据时将数据直接返回给数据请求方,在未命中热点缓存数据时将请求转发给缓存集群,由缓存集群进行处理,从而在代理层对热点数据请求进行了拦截和处理,避免了由于高并发热点数据访问请求对缓存集群的冲击而导致的集群中单点的cpu和网络压力过大,确保了缓存集群可以正常提供服务。
与上述几种实施例提供的数据请求处理方法相对应,本发明实施例还提供一种数据请求处理装置,由于本发明实施例提供的数据请求处理装置与上述几种实施例提供的数据请求处理方法相对应,因此前述数据请求处理方法的实施方式也适用于本实施例提供的数据请求处理装置,在本实施例中不再详细描述。
请参阅图8,其所示为本发明实施例提供的一种数据请求处理装置的结构示意图,该装置具有实现上述方法实施例中数据请求处理方法的功能,所述功能可以由硬件实现,也可以由硬件执行相应的软件实现。如图8所示,该装置可以包括:
接收模块810,用于通过至少一个代理增强节点接收数据请求方发送的针对目标数据的第一数据访问请求,所述至少一个代理增强节点中存储有热点缓存数据,所述热点缓存数据是指缓存集群中存储的属于热点数据类型的缓存数据;
读取模块820,用于在所述热点缓存数据中存在与所述目标数据相匹配的目标热点缓存数据时,读取所述目标热点缓存数据;
返回模块830,用于通过所述至少一个代理增强节点将读取的所述目标热点缓存数据返回给所述数据请求方;
转发模块840,用于在所述热点缓存数据中不存在与所述目标数据相匹配的目标热点缓存数据时,通过所述至少一个代理增强节点将所述第一数据访问请求发送给所述缓存集群,由所述缓存集群确定所述第一数据访问请求的请求结果。
在一个可能的实施方式中,该装置还可以包括:
记录模块,用于针对所述缓存集群中每种数据类型的缓存数据,记录所述数据类型的缓存数据在第一预设时间间隔内的访问频次;
第一判断模块,用于根据所述数据类型的缓存数据在第一预设时间间隔内的访问频次,判断所述数据类型是否为热点数据类型;
第一上报模块,用于在所述数据类型为热点数据类型时,将所述热点数据类型上报给协调服务,由所述协调服务将所述热点数据类型对应的热点缓存数据发送给至少一个代理节点;
存储模块,用于在所述至少一个代理节点中存储所述热点数据类型对应的热点缓存数据,得到所述至少一个代理增强节点。
在一个可能的实施方式中,记录模块可以包括:
类型确定模块,用于确定所述缓存集群中缓存数据的至少一个数据类型;
队列建立模块,用于建立与所述至少一个数据类型相对应的至少一个访问频次队列,所述访问频次队列包括预设数量个时间窗口,每个所述时间窗口记录对应所述时间窗口的访问频次,所述时间窗口的大小为所述第一预设时间间隔;
目标队列确定模块,用于在通过至少一个代理节点接收到第二数据访问请求时,根据所述第二数据访问请求所请求访问的数据的第一数据类型,确定所述至少一个访问频次队列中与所述第一数据类型相匹配的第一访问频次队列;
频次更新模块,用于更新所述第一访问频次队列中目标时间窗口的访问频次。
在一个可能的实施方式中,第一判断模块可以包括:
频次提取模块,用于每隔第二预设时间间隔提取所述至少一个访问频次队列中每个访问频次队列的访问频次,得到每个访问频次队列对应的第一访问频次;
第二判断模块,用于判断所述第一访问频次是否超过预设频次阈值时;
热点确定模块,用于在第二判断模块判断的结果为是时,确定所述第一访问频次所对应的访问频次队列的数据类型为热点数据类型。
在一个可能的实施方式中,该装置还可以包括:
第一确定模块,用于根据所述热点数据类型对应的热点缓存数据在第一预设时间间隔内的访问频次,确定不满足热度条件的第一热点数据类型;
第二上报模块,用于将所述第一热点数据类型上报给所述协调服务,由所述协调服务通知所述至少一个代理增强节点所述第一热点数据类型不满足热度条件;
删除模块,用于从所述至少一个代理增强节点中删除所述第一热点数据类型对应的热点缓存数据。
在一个可能的实施方式中,装置还可以包括:
变更消息发送模块,用于在所述热点缓存数据在数据库中的对应原数据发生变更时,将所述变更消息发送给所述协调服务,所述变更消息中包括变更后的所述原数据;由所述协调服务将所述变更后的原数据发送给所述至少一个代理增强节点;
热点更新模块,用于根据所述变更后的原数据,更新所述至少一个代理增强节点中对应的所述热点缓存数据。
在一个可能的实施方式中,接收模块810可以包括:
第二确定模块,用于根据所述至少一个代理增强节点中每个代理增强节点的负载情况,确定目标代理增强节点;
接收子模块,用于通过所述目标代理增强节点接收所述第一数据访问请求。
需要说明的是,上述实施例提供的装置,在实现其功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本发明实施例的数据请求处理装置在代理增强节点存储热点缓存数据,通过代理增强节点接收数据访问请求,并在命中热点缓存数据时将数据直接返回给数据请求方,在未命中热点缓存数据时将请求转发给缓存集群,由缓存集群进行处理,从而在代理层对热点数据请求进行了拦截和处理,避免了由于高并发热点数据访问请求对缓存集群的冲击而导致的集群中单点的cpu和网络压力过大,确保了缓存集群可以正常提供服务。
本发明实施例提供了一种计算机设备,该计算机设备包括处理器和存储器,该存储器中存储有至少一条指令或至少一段程序,该至少一条指令或该至少一段程序由该处理器加载并执行以实现如上述方法实施例所提供的数据请求处理方法。
存储器可用于存储软件程序以及模块,处理器通过运行存储在存储器的软件程序以及模块,从而执行各种功能应用以及数据请求的处理。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、功能所需的应用程序等;存储数据区可存储根据所述设备的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器还可以包括存储器控制器,以提供处理器对存储器的访问。
本发明实施例所提供的方法实施例可以在计算机终端、服务器或者类似的运算装置中执行。以运行在服务器上为例,图9是本发明实施例提供的运行一种数据请求处理方法的服务器的硬件结构框图,如图9所示,该服务器900可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(centralprocessingunits,cpu)910(处理器910可以包括但不限于微处理器mcu或可编程逻辑器件fpga等的处理装置)、用于存储数据的存储器xx30,一个或一个以上存储应用程序923或数据922的存储介质920(例如一个或一个以上海量存储设备)。其中,存储器930和存储介质920可以是短暂存储或持久存储。存储在存储介质920的程序可以包括一个或一个以上模块,每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器910可以设置为与存储介质920通信,在服务器900上执行存储介质920中的一系列指令操作。服务器900还可以包括一个或一个以上电源960,一个或一个以上有线或无线网络接口950,一个或一个以上输入输出接口940,和/或,一个或一个以上操作系统921,例如windowsservertm,macosxtm,unixtm,linuxtm,freebsdtm等等。
输入输出接口940可以用于经由一个网络接收或者发送数据。上述的网络具体实例可包括服务器900的通信供应商提供的无线网络。在一个实例中,输入输出接口940包括一个网络适配器(networkinterfacecontroller,nic),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,输入输出接口940可以为射频(radiofrequency,rf)模块,其用于通过无线方式与互联网进行通讯。
本领域普通技术人员可以理解,图9所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,服务器900还可包括比图9中所示更多或者更少的组件,或者具有与图9所示不同的配置。
本发明的实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质可设置于计算机设备之中以保存用于实现一种数据请求处理方法相关的至少一条指令或至少一段程序,该至少一条指令或该至少一段程序由该处理器加载并执行以实现上述方法实施例提供的数据请求处理方法。
本发明的实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各种可选实现方式中提供的方法。
可选地,在本实施例中,上述存储介质可以包括但不限于:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
需要说明的是:上述本发明实施例先后顺序仅仅为了描述,不代表实施例的优劣。且上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
起点商标作为专业知识产权交易平台,可以帮助大家解决很多问题,如果大家想要了解更多知产交易信息请点击 【在线咨询】或添加微信 【19522093243】与客服一对一沟通,为大家解决相关问题。
此文章来源于网络,如有侵权,请联系删除