CN115766866A - 数据访问方法、装置和电子设备 - Google Patents
数据访问方法、装置和电子设备 Download PDFInfo
- Publication number
- CN115766866A CN115766866A CN202211340366.4A CN202211340366A CN115766866A CN 115766866 A CN115766866 A CN 115766866A CN 202211340366 A CN202211340366 A CN 202211340366A CN 115766866 A CN115766866 A CN 115766866A
- Authority
- CN
- China
- Prior art keywords
- data
- server
- target
- time
- cache object
- 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.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种数据访问方法、装置和电子设备,游戏进程接收目标客户端发送的数据访问请求;若游戏进程中的数据缓存对象保存有数据访问请求所需的目标数据,判断数据缓存对象中的目标数据是否有效;若目标数据无效,向服务端发送第一数据获取请求,以使服务端返回目标数据的增量数据;基于增量数据更新数据缓存对象中保存的目标数据,将更新后的目标数据发送至目标客户端。该方式中,同一游戏进程下的客户端,仅需游戏进程作为代理向服务端请求一次共享数据,即可将共享数据保存至游戏进程的数据缓存对象中,以使客户端从数据缓存对象中获取共享数据,从而减少了服务端的访问频率;且由于游戏进程的天然分布式结构,也减轻了服务端的访问压力。
Description
技术领域
本发明涉及数据处理技术领域,尤其是涉及一种数据访问方法、装置和电子设备。
背景技术
在常用的游戏架构中,玩家的游戏客户端会连接到游戏服务端的游戏进程,通常每个游戏进程会管理一定数量的玩家客户端,同时游戏进程会分布在一台服务器或者多台服务器上,且游戏中通常会提供指定服务用于管理全服共享的数据,该指定服务通常部署在特定进程中,且所有玩家都可以访问。
相关技术中,如果共享数据的访问频率较高,为了减少指定服务的访问压力,可以在玩家获取到共享数据后再自身缓存数据,也可以对指定服务进行分片处理,以将指定服务同时部署多个节点,减少每一个节点的访问压力;但是上述两种方式虽然可以降低共享数据的访问频率,但是无法避免指定服务或者单节点短时间内大量玩家同时访问的情况发生,从而可能导致服务崩溃。
发明内容
本发明的目的在于提供一种数据访问方法、装置和电子设备,以减少管理共享数据的服务的访问压力,避免服务崩溃。
第一方面,本发明提供了一种数据访问方法,该方法应用于运行有游戏进程的设备,该游戏进程分别与服务端和至少一个客户端连接;该服务端保存有游戏中的共享数据,游戏进程中设置有数据缓存对象,数据缓存对象用于缓存至少部分共享数据;该方法包括:接收目标客户端发送的数据访问请求;如果数据缓存对象中保存有数据访问请求所请求的目标数据,判断数据缓存对象保存的目标数据是否有效;如果目标数据无效,向服务端发送第一数据获取请求,以使服务端返回目标数据的增量数据;其中,增量数据包括服务端与数据缓存对象保存的目标数据中存在差异的数据;基于增量数据更新数据缓存对象中保存的目标数据,得到更新后的目标数据,将更新后的目标数据发送至目标客户端。
第二方面,本发明提供了一种数据访问装置,该装置设置于运行有游戏进程的设备,该游戏进程分别与服务端和至少一个客户端连接;该服务端保存有游戏中的共享数据,该游戏进程中设置有数据缓存对象,该数据缓存对象用于缓存至少部分共享数据;该装置包括:请求接收模块,用于接收目标客户端发送的数据访问请求;判断模块,用于如果数据缓存对象中保存有数据访问请求所请求的目标数据,判断数据缓存对象保存的目标数据是否有效;请求发送模块,用于如果目标数据无效,向服务端发送第一数据获取请求,以使服务端返回目标数据的增量数据;其中,增量数据包括服务端与数据缓存对象保存的目标数据中存在差异的数据;数据发送模块,用于基于增量数据更新数据缓存对象中保存的目标数据,得到更新后的目标数据,将更新后的目标数据发送至目标客户端。
第三方面,本发明提供了一种电子设备,该电子设备包括处理器和存储器,该存储器存储有能够被处理器执行的机器可执行指令,该处理器执行机器可执行指令以实现上述数据访问方法。
第四方面,本发明提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令在被处理器调用和执行时,该计算机可执行指令促使处理器实现上述数据访问方法。
本发明实施例带来了以下有益效果:
本发明提供的一种数据访问方法、装置和电子设备,首先通过游戏进程接收目标客户端发送的数据访问请求;如果数据缓存对象中保存有数据访问请求所请求的目标数据,判断数据缓存对象保存的目标数据是否有效;如果目标数据无效,向服务端发送第一数据获取请求,以使服务端返回目标数据的增量数据,该增量数据包括服务端与数据缓存对象保存的目标数据中存在差异的数据;然后基于增量数据更新数据缓存对象中保存的目标数据,得到更新后的目标数据,将更新后的目标数据发送至目标客户端。该方式中,同一游戏进程下的客户端,仅需游戏进程作为代理向服务端请求一次共享数据,即可将共享数据保存至游戏进程的数据缓存对象中,使得客户端能够直接从数据缓存对象中获取共享数据,从而减少了服务端的访问频率;同时,由于游戏进程的天然分布式结构,该方式需要额外消耗资源去部署更多节点来分摊服务端的访问压力,从而减轻了资源部署的消耗,也减轻了服务端的访问压力。
本发明的其他特征和优点将在随后的说明书中阐述,或者,部分特征和优点可以从说明书推知或毫无疑义地确定,或者通过实施本发明的上述技术即可得知。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施方式,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种玩家客户端直接访问指定服务的示意图;
图2为本发明实施例提供的一种玩家客户端获取数据后缓存的示意图;
图3为本发明实施例提供的一种对指定服务进行分片处理的示意图;
图4为本发明实施例提供的一种数据访问方法的流程图;
图5为本发明实施例提供的一种数据访问的结构示意图;
图6为本发明实施例提供的另一种数据访问方法的流程图;
图7为本发明实施例提供的一种数据访问装置的结构示意图;
图8为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在常用的游戏架构中,玩家的游戏客户端会连接到游戏服务端的游戏进程,通常每个游戏进程会管理一定数量的玩家客户端,同时游戏进程会分布在一台服务器或者多台服务器上,且游戏中通常会提供指定服务用于管理全服共享的数据,该指定服务通常部署在特定进程中,且所有玩家都可以访问。
相关技术中,如果共享数据的访问频率较低,则可以采用所有玩家均能直接访问指定服务,来请求共享数据,如图1所示为玩家客户端直接访问指定服务的示意图。如果共享数据的访问频率较高,玩家直接访问指定服务的话,由于服务节点所能承载的访问频率是有限的,如果所有玩家都能直接访问共享数据的服务,并且在短时间内有大量玩家同时访问,可能造成玩家访问的延迟,甚至导致服务器无法承受这么多访问请求直接崩溃,服务节点瘫痪。
为了减少服务节点的访问压力,提供了以下两种数据访问方式:
方式一,玩家客户端在获取到共享数据后,会对获取到的数据进行缓存,在缓存失效后再向指定服务请求数据,如图2所示为玩家客户端获取数据后缓存的示意图。从整体上来看,该方式可以有效降低访问数据的频率,但是无法避免在短时间内大量玩家同时访问服务节点的情况,从而可能导致服务节点崩溃。
方式二,对指定服务进行分片处理,也即是将指定服务同时部署多个节点,从而按照一定规则将访问分散到多个节点,从而分摊单节点的访问压力,如图3所示为对指定服务进行分片处理的示意图,图3中将指定服务分散到了三个服务节点上,分别是指定服务1、指定服务2和指定服务3,每一个游戏进程可访问三个服务节点中的任意一个。但是该方式一方面需要消耗更多的额外资源部署相关服务,另一方面需要针对具体问题设计合理的分流规则将访问压力尽量平均的分摊到每个节点,但是仍存在单个节点短时间内大量玩家同时访问的可能性。
基于上述问题,本发明实施例提供了一种数据访问方法、装置和电子设备,该方法可以应用于游戏中的数据访问场景中,尤其是游戏中的共享数据的访问场景中。
为了便于对本发明实施例进行理解,首先对本发明实施例公开的一种数据访问方法进行详细介绍,该方法应用于运行有游戏进程的设备,该游戏进程分别与服务端和至少一个客户端连接;该服务端保存有游戏中的共享数据,该游戏进程中设置有数据缓存对象,该数据缓存对象用于缓存至少部分共享数据;如图4所示,该方法包括如下具体步骤:
步骤S402,接收目标客户端发送的数据访问请求。
在游戏架构中,玩家的客户端会连接到游戏进程中,从而使得每个游戏进程均会管理一定数量的玩家的客户端,每个游戏进程管理的客户端的数量可根据研发需求和实际应用确定。同时,需要提前在每个游戏进程中创建一个数据缓存对象,该数据缓存对象用于管理和缓存服务端提供的共享数据。服务端用于管理和保存游戏全服共享的数据(相当于上述共享数据)。如图5所示为本发明实施例提供的一种数据访问的结构示意图,图5中包含有两个游戏进程,每个游戏进程中都设置有一个数据对象,且每个游戏进程与服务端连接的同时,还与多个玩家客户端连接。
在具体实现时,当目标客户端需要访问目标数据时,会向游戏进程发送数据访问请求,该数据访问请求中携带有该目标数据的标识。具体地,共享数据中的每个数据均携带有各自的标识,且该标识具有唯一性;目标客户端可以是与游戏进程通信连接的任意一个客户端。
需要说明的是,上述游戏进程通常也是运行服务端的,也即是运行有游戏进程的设备可以是服务端的一台服务器或者多台服务器。
步骤S404,如果数据缓存对象中保存有数据访问请求所请求的目标数据,判断数据缓存对象保存的目标数据是否有效。
当接收到目标客户端发送的数据访问请求时,游戏进程会检查数据缓存对象中是否保存有数据访问请求所请求的目标数据,如果保存有目标数据,还会判断数据缓存对象中保存的目标数据是否有效,如果有效才会将数据缓存对象保存的目标数据发送给目标客户端;如果无效,需要访问服务端,以请求目标数据的增量数据,该增量为服务端保存的目标数据中发生变化的数据部分。
如果数据缓存对象中未保存有数据访问请求所请求的目标数据,会向服务端请求目标数据的全量数据,该全量数据也即是服务端保存的共享数据中的目标数据的全部数据;当服务端将目标数据返回给游戏进程时,游戏进程会将接收到的目标数据保存至数据缓存对象中,并将目标数据发送给目标客户端。
在实际应用中,由于共享数据已经保存在服务端的数据库中了,因而数据缓存对象保存的部分共享数据不需要持久化存储,数据缓存对象只负责响应客户端发送的数据访问请求,因而数据缓存对象只需将管理的数据存在内存中即可,该内存中存储的数据丢失或者数据失效,只需要由数据缓存对象从服务端中再次取得数据即可。
步骤S406,如果目标数据无效,向服务端发送第一数据获取请求,以使服务端返回目标数据的增量数据;其中,增量数据包括服务端与数据缓存对象保存的目标数据中存在差异的数据。
上述目标数据的增量数据是指:在数据缓存对象中和服务端中保存的目标数据的差异数据;服务端中的数据无论是被修改了,还是增加或删除的数据,都会通过增量的方式更新,例如,玩家请求一篇文章的数据,那么这篇文章被修改的部分、新增的部分和删减的部分,都可以称为增量数据。
在具体实现时,如果数据缓存对象中保存的目标数据已无效,游戏进程会向服务端发送第一数据获取请求,服务端接收到第一数据获取请求后,会查询目标数据的增量数量,然后将查询到的增量数据返回给游戏进程,以使游戏进程更新数据缓存对象中缓存的目标数据。
步骤S408,基于增量数据更新数据缓存对象中保存的目标数据,得到更新后的目标数据,将更新后的目标数据发送至目标客户端。
数据缓存对象会根据接收到的目标数据的增量数据,更新自身保存的目标数据,得到更新后的目标数据。数据缓存对象中保存的更新后的目标数据,与服务端中保存的目标数据相同。
需要说明的是,游戏进程的数量往往远远少于游戏中的玩家数量,也即是游戏进程的数量远小于玩家客户端的数量,即时最坏的情况下,所有游戏进程同时向服务端发送数据获取请求,该请求量也是一定的且相对可控的。
本发明实施例提供的一种数据访问方法,首先通过游戏进程接收目标客户端发送的数据访问请求;如果数据缓存对象中保存有数据访问请求所请求的目标数据,判断数据缓存对象保存的目标数据是否有效;如果目标数据无效,向服务端发送第一数据获取请求,以使服务端返回目标数据的增量数据,该增量数据包括服务端与数据缓存对象保存的目标数据中存在差异的数据;然后基于增量数据更新数据缓存对象中保存的目标数据,得到更新后的目标数据,将更新后的目标数据发送至目标客户端。该方式中,同一游戏进程下的客户端,仅需游戏进程作为代理向服务端请求一次共享数据,即可将共享数据保存至游戏进程的数据缓存对象中,使得客户端能够直接从数据缓存对象中获取共享数据,从而减少了服务端的访问频率;同时,由于游戏进程的天然分布式结构,该方式需要额外消耗资源去部署更多节点来分摊服务端的访问压力,从而减轻了资源部署的消耗,也减轻了服务端的访问压力。
本发明实施例还提供了另一种数据访问方法,该方法在上述实施例的基础上实现,该方法重点描述判断数据缓存对象保存的目标数据是否有效的具体过程(具体通过下述步骤S606实现);如图6所示,该方法包括如下具体步骤:
步骤S602,接收目标客户端发送的数据访问请求。
步骤S604,判断数据缓存对象中是否保存有数据访问请求所请求的目标数据;如果有,执行步骤S606,否则执行步骤S614。
在具体实现时,当游戏进程接收到玩家通过目标客户端发送的数据访问请求时,首先会检查数据缓存对象中是否存在数据访问请求所请求的目标数据,如果不存在的话,会通过游戏进程向服务端请求目标数据,然后将请求的目标数据保存在数据缓存对象中,并将目标数据发送给目标客户端;如果数据缓存对象中存在目标数据且目标数据有效的话,会将目标数据直接发送给目标客户端;如果数据缓存对象中存在目标数据,但是目标数据无效的话,会从服务端中获取目标数据的增量数据,数据缓存对象会基于增量数据对自身保存的目标数据进行更新,并将更新后的目标数据发送给目标客户端。
步骤S606,判断目标数据在数据缓存对象中保存的时间是否超过预设有效时间;如果超过预设有效时间,执行步骤S608;否则,执行步骤S612。
在具体实现时,可以通过判断目标数据在数据缓存对象中保存的时间是否超过预设有效时间,判定数据缓存对象中的目标数据是否有效。其中,预设有效时间与服务端的被访问频率相匹配,通常服务端的被访问频率越高,预设有效时间越长;被访问频率越低,预设有效时间越短。这样就可以控制每一个游戏进程的最高访问频率,并且通过预设有效时间的调节,可以控制数据时效性,如果访问频率较低时,可以减少预设有效时间,从而提高数据实时性;访问频率较高时可以延长预设有效时间,从而降低服务端的访问压力。
在具体实现时,上述预设有效时间可以通过下述方式确定:统计预设时间段内服务端的被访问次数,将被访问次数与预设时间段的比值确定为服务访问频率;如果服务访问频率大于最大频率阈值,将预设有效时间确定为第一时间与第二时间的加和;如果服务访问频率小于最小频率阈值,将预设有效时间确定为第一时间与第三时间的差值;如果服务访问频率不大于最大频率阈值且不小于最小频率阈值,将预设有效时间确定为第一时间。
上述预设时间段的具体数值可以根据研发需求设定,例如,该预设时间段可以是一小时或者30分钟等。上述第一时间、第二时间和第三时间的具体数值也可以根据研发需求设定,例如,该第一时间可以是40分钟,第二时间可以是10分钟,第三时间也可以是10分钟等;上述最大频率阈值和最小频率阈值也可以根据研发需求设定。
在实际应用中,上述第二时间和第三时间可以不是固定的数据,而是可以根据预设规则变化的数据。具体地,上述第二时间可以包括:服务访问频率连续大于最大频率阈值的次数与第一数值的第一乘积;其中,如果第一乘积大于预设最大时间,将第二时间确定为预设最大时间;上述第三时间可以包括:服务访问频率连续小于最小频率阈值的次数与第二数值的第二乘积;如果第二乘积小于预设最小时间,将第三时间确定为预设最小时间。上述第一数值、第二数值、预设最大时间和预设最小时间的具体值可以根据研发需求设定。
例如,规定服务端根据过去t秒内的被访问次数去计算服务访问频率、服务端被访问的最大频率阈值为max次每秒和最小频率阈值为min次每秒。服务端会定时取统计过去t秒时间的访问频率,当过去t秒内被访问了x次时,服务端的服务访问频率为x/t次每秒。当x/t大于max时,共享数据的服务端给游戏进程的数据缓存对象发送数据时会延长这些数据的预设有效时间;比如原本数据有效时间是a秒(相当于上述第一时间),在这一次统计中发现x/t大于max,则之后数据的预设有效时间可以设置为a+b秒,下一次的统计中x/t大于max,数据的预设有效时间设置为a+2b;其中b为第二时间。同理可得,当x/t小于min时,数据的预设有效时间设置为a-c,a-2c等,其中c相当于上述第三时间。
同时,还需要设置预设最大时间为tmax和预设最小时间为tmin,防止预设有效时间过程和过短,如果需要设置的时间a+n*b大于tmax时,使用tmax,或者a-n*b小于tmin时,使用tmin;其中,n表示服务访问频率连续大于最大频率阈值的次数或者服务访问频率连续小于最小频率阈值的次数。
步骤S608,确定数据缓存对象中保存的目标数据无效,向服务端发送第一数据获取请求,以使服务端返回目标数据的增量数据;执行步骤S610。
当玩家请求的数据量比较大时,数据缓存对象通过请求增量数据来得到最新数据的方式,比请求全量数据的传输量要小的多,从而可以提高数据访问速度。在具体实现时,获取增量数据的方式有很多,例如,在服务端给每次数据修改做时间标记,游戏进程中的数据缓存对象可以根据时间标记拉取增量数据;或者在服务端中引入版本控制,游戏进程中的数据缓存对象也可以根据自身数据版本来同步增量数据。
基于上述描述,服务端中可以保存有共享数据中每个数据的更新时间;上述步骤S608可以通过下述步骤10-11实现:
步骤10,向服务端发送第一数据获取请求;其中,第一数据获取请求中包含有数据缓存对象中目标数据的最近一次的获取时间。
步骤11,通过服务端,查找目标数据中更新时间在获取时间之后的第一数据,将第一数据作为增量数据,并返回增量数据。
例如,游戏进程中的数据缓存对象第一次拿到了a时间的目标数据[1,2,3,4];但是在b时间,服务端将该目标数据扩充了数据[5],变成[1,2,3,4,5],在c时间,服务端将目标数据中的数据[2]修改为数据[6],目标数据变成[1,6,3,4,5]。这时,当数据缓存对象发现目标数据失效去拉取最新增量数据时,会去拿到自己获取的数据a时间之后的修改数据,也即是b时间增加的数据[5],c时间修改数据[2]为数据[6]。然后数据缓存对象将修改的数据和自身持有的目标数据合成,得到更新后的目标数据。
在一些实施例中,服务端中还可以保存有共享数据中每个数据的版本号;基于此,上述步骤S608还可以通过下述步骤20-21实现:
步骤20,向服务端发送第一数据获取请求;其中,第一数据获取请求中包含有数据缓存对象中保存的目标数据的版本号。
步骤21,根据服务端保存的目标数据的版本号和第一数据获取请求携带的版本号,确定目标数据的增量数据,并返回增量数据。
例如,数据缓存对象中保存的目标数据的版本号是1.0,当目标数据无效时,去服务端请求目标数据的增量数据时,目标数据在服务端中经过了版本2.0和版本3.0的修改,那么就可以通过版本号把每个版本的修改(也即是目标数据的增量数据)同步给数据缓存对象,以使数据缓存对象更新自身保存的目标数据。
步骤S610,基于增量数据更新数据缓存对象中保存的目标数据,得到更新后的目标数据,将更新后的目标数据发送至目标客户端。
步骤S612,将数据缓存对象中保存的目标数据发送至目标客户端。
在具体实现时,如果数据缓存对象中存在目标数据且目标数据有效的话,会将数据缓存对象中保存的目标数据直接发送给目标客户端。
步骤S614,向服务端发送第二数据获取请求,以使服务端返回目标数据;将接收到的目标数据保存至数据缓存对象,并将目标数据发送至目标客户端。
如果数据缓存对象中不包含有目标数据,游戏进程将向服务端发送第二数据获取请求,以通过该第二获取请求向服务端请求目标数据的全量数据,请求全量数据的传输过程可能存在一定的传输压力,但是请求全量数据的频率非常低。当游戏进程接收到服务端发送的目标数据的全量数据时,会将该目标数据保存至数据缓存对象中,并将目标数据发送至目标客户端。
需要说明的是,在服务端向游戏进程发送目标数据的全量数据和目标数据的增量数据的同时,会向游戏进程发送目标数据的预设有效时间,该预设有效时间用于指示数据缓存对象中保存的目标数据在当前时间下是否有效。另外,在目标数据的预设有效时间内,可以避免向服务端再次请求目标数据,从而可减少服务端的访问压力。
上述数据访问方法,可以解决游戏中全服共享数据的频繁访问问题,该方式利用在游戏进程中设置管理共享数据缓存的数据缓存对象,可减少服务端中共享数据的请求频率,同时游戏进程的数量也限制了对服务端的最高同时访问量,从而减少了服务端的服务压力。同时,利用缓存有效时间的调节可以更灵活的在数据请求频率和数据实时性之间进行平衡。
针对于上述方法实施例,本发明实施例还提供了一种数据访问装置,该装置设置于运行有游戏进程的设备,该游戏进程分别与服务端和至少一个客户端连接;该服务端保存有游戏中的共享数据,该游戏进程中设置有数据缓存对象,该数据缓存对象用于缓存至少部分共享数据;如图7所示,该装置包括:
请求接收模块70,用于接收目标客户端发送的数据访问请求。
判断模块71,用于如果数据缓存对象中保存有数据访问请求所请求的目标数据,判断数据缓存对象保存的目标数据是否有效。
请求发送模块72,用于如果目标数据无效,向服务端发送第一数据获取请求,以使服务端返回目标数据的增量数据;其中,增量数据包括服务端与数据缓存对象保存的目标数据中存在差异的数据。
数据发送模块73,用于基于增量数据更新数据缓存对象中保存的目标数据,得到更新后的目标数据,将更新后的目标数据发送至目标客户端。
上述数据访问装置,首先通过游戏进程接收目标客户端发送的数据访问请求;如果数据缓存对象中保存有数据访问请求所请求的目标数据,判断数据缓存对象保存的目标数据是否有效;如果目标数据无效,向服务端发送第一数据获取请求,以使服务端返回目标数据的增量数据,该增量数据包括服务端与数据缓存对象保存的目标数据中存在差异的数据;然后基于增量数据更新数据缓存对象中保存的目标数据,得到更新后的目标数据,将更新后的目标数据发送至目标客户端。该方式中,同一游戏进程下的客户端,仅需游戏进程作为代理向服务端请求一次共享数据,即可将共享数据保存至游戏进程的数据缓存对象中,使得客户端能够直接从数据缓存对象中获取共享数据,从而减少了服务端的访问频率;同时,由于游戏进程的天然分布式结构,该方式需要额外消耗资源去部署更多节点来分摊服务端的访问压力,从而减轻了资源部署的消耗,也减轻了服务端的访问压力。
进一步地,上述装置还包括数据获取模块,用于:如果数据缓存对象中未保存有数据访问请求所请求的目标数据,向服务端发送第二数据获取请求,以使服务端返回目标数据;将接收到的目标数据保存至数据缓存对象,并将目标数据发送至目标客户端。
在具体实现时,上述判断模块71,用于:判断目标数据在数据缓存对象中保存的时间是否超过预设有效时间;如果超过预设有效时间,确定目标数据无效;其中,预设有效时间与服务端的被访问频率相匹配。
具体地,上述装置还包括有效时间确定模块,用于:统计预设时间段内服务端的被访问次数,将被访问次数与预设时间段的比值确定为服务访问频率;如果服务访问频率大于最大频率阈值,将预设有效时间确定为第一时间与第二时间的加和;如果服务访问频率小于最小频率阈值,将预设有效时间确定为第一时间与第三时间的差值;如果服务访问频率不大于最大频率阈值且不小于最小频率阈值,将预设有效时间确定为第一时间。
在实际应用中,上述第二时间包括:服务访问频率连续大于最大频率阈值的次数与第一数值的第一乘积;其中,如果第一乘积大于预设最大时间,将第二时间确定为预设最大时间;第三时间包括:服务访问频率连续小于最小频率阈值的次数与第二数值的第二乘积;如果第二乘积小于预设最小时间,将第三时间确定为预设最小时间。
进一步地,上述服务端中保存有共享数据中每个数据的更新时间;上述请求发送模块72,用于:向服务端发送第一数据获取请求;其中,第一数据获取请求中包含有数据缓存对象中目标数据的最近一次的获取时间;通过服务端,查找目标数据中更新时间在获取时间之后的第一数据,将第一数据作为增量数据,并返回增量数据。
进一步地,上述服务端中保存有共享数据中每个数据的版本号;上述请求发送模块72,还用于:向服务端发送第一数据获取请求;其中,第一数据获取请求中包含有数据缓存对象中保存的目标数据的版本号;根据服务端保存的目标数据的版本号和第一数据获取请求携带的版本号,确定目标数据的增量数据,并返回增量数据。
在具体实现时,上述装置还包括数据传输模块,用于:如果目标数据有效,将数据缓存对象中保存的目标数据发送至目标客户端。
本发明实施例所提供的数据访问装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。
本发明实施例还提供了一种电子设备,如图8所示,该电子设备包括处理器和存储器,该存储器存储有能够被处理器执行的机器可执行指令,该处理器执行机器可执行指令以实现上述数据访问方法。
具体地,上述数据访问方法应用于运行有游戏进程的设备,该游戏进程分别与服务端和至少一个客户端连接;该服务端保存有游戏中的共享数据,该游戏进程中设置有数据缓存对象,该数据缓存对象用于缓存至少部分共享数据;该方法包括:接收目标客户端发送的数据访问请求;如果数据缓存对象中保存有数据访问请求所请求的目标数据,判断数据缓存对象保存的目标数据是否有效;如果目标数据无效,向服务端发送第一数据获取请求,以使服务端返回目标数据的增量数据;其中,增量数据包括服务端与数据缓存对象保存的目标数据中存在差异的数据;基于增量数据更新数据缓存对象中保存的目标数据,得到更新后的目标数据,将更新后的目标数据发送至目标客户端。
上述数据访问方法中,同一游戏进程下的客户端,仅需游戏进程作为代理向服务端请求一次共享数据,即可将共享数据保存至游戏进程的数据缓存对象中,使得客户端能够直接从数据缓存对象中获取共享数据,从而减少了服务端的访问频率;同时,由于游戏进程的天然分布式结构,该方式需要额外消耗资源去部署更多节点来分摊服务端的访问压力,从而减轻了资源部署的消耗,也减轻了服务端的访问压力。
在可选实施例中,上述方法还包括:如果数据缓存对象中未保存有数据访问请求所请求的目标数据,向服务端发送第二数据获取请求,以使服务端返回目标数据;将接收到的目标数据保存至数据缓存对象,并将目标数据发送至目标客户端。
在可选实施例中,上述判断数据缓存对象保存的目标数据是否有效的步骤,包括:判断目标数据在数据缓存对象中保存的时间是否超过预设有效时间;如果超过预设有效时间,确定目标数据无效;其中,预设有效时间与服务端的被访问频率相匹配。
在可选实施例中,上述预设有效时间通过下述方式确定:统计预设时间段内服务端的被访问次数,将被访问次数与预设时间段的比值确定为服务访问频率;如果服务访问频率大于最大频率阈值,将预设有效时间确定为第一时间与第二时间的加和;如果服务访问频率小于最小频率阈值,将预设有效时间确定为第一时间与第三时间的差值;如果服务访问频率不大于最大频率阈值且不小于最小频率阈值,将预设有效时间确定为第一时间。
在可选实施例中,上述第二时间包括:服务访问频率连续大于最大频率阈值的次数与第一数值的第一乘积;其中,如果第一乘积大于预设最大时间,将第二时间确定为预设最大时间;第三时间包括:服务访问频率连续小于最小频率阈值的次数与第二数值的第二乘积;如果第二乘积小于预设最小时间,将第三时间确定为预设最小时间。
在可选实施例中,上述服务端中保存有共享数据中每个数据的更新时间;上述向服务端发送第一数据获取请求,以使服务端返回目标数据的增量数据的步骤,包括:向服务端发送第一数据获取请求;其中,第一数据获取请求中包含有数据缓存对象中目标数据的最近一次的获取时间;通过服务端,查找目标数据中更新时间在获取时间之后的第一数据,将第一数据作为增量数据,并返回增量数据。
在可选实施例中,上述服务端中保存有共享数据中每个数据的版本号;上述向服务端发送第一数据获取请求,以使服务端返回目标数据的增量数据的步骤,包括:向服务端发送第一数据获取请求;其中,第一数据获取请求中包含有数据缓存对象中保存的目标数据的版本号;根据服务端保存的目标数据的版本号和第一数据获取请求携带的版本号,确定目标数据的增量数据,并返回增量数据。
在可选实施例中,上述方法还包括:如果目标数据有效,将数据缓存对象中保存的目标数据发送至目标客户端。
进一步地,图8所示的电子设备还包括总线102和通信接口103,处理器101、通信接口103和存储器100通过总线102连接。
其中,存储器100可能包含高速随机存取存储器(RAM,RandomAccessMemory),也可能还包括非不稳定的存储器(non-volatilememory),例如至少一个磁盘存储器。通过至少一个通信接口103(可以是有线或者无线)实现该***网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。总线102可以是ISA总线、PCI总线或EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图8中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
处理器101可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器101中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器101可以是通用处理器,包括中央处理器(CentralProcessingUnit,简称CPU)、网络处理器(NetworkProcessor,简称NP)等;还可以是数字信号处理器(Digital SignalProcessing,简称DSP)、专用集成电路(Application Specific Integrated Circuit,简称ASIC)、现成可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器100,处理器101读取存储器100中的信息,结合其硬件完成前述实施例的方法的步骤。
本发明实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令在被处理器调用和执行时,该计算机可执行指令促使处理器实现上述数据访问方法,具体实现可参见方法实施例,在此不再赘述。
具体地,上述数据访问方法应用于运行有游戏进程的设备,该游戏进程分别与服务端和至少一个客户端连接;该服务端保存有游戏中的共享数据,该游戏进程中设置有数据缓存对象,该数据缓存对象用于缓存至少部分共享数据;该方法包括:接收目标客户端发送的数据访问请求;如果数据缓存对象中保存有数据访问请求所请求的目标数据,判断数据缓存对象保存的目标数据是否有效;如果目标数据无效,向服务端发送第一数据获取请求,以使服务端返回目标数据的增量数据;其中,增量数据包括服务端与数据缓存对象保存的目标数据中存在差异的数据;基于增量数据更新数据缓存对象中保存的目标数据,得到更新后的目标数据,将更新后的目标数据发送至目标客户端。
上述数据访问方法中,同一游戏进程下的客户端,仅需游戏进程作为代理向服务端请求一次共享数据,即可将共享数据保存至游戏进程的数据缓存对象中,使得客户端能够直接从数据缓存对象中获取共享数据,从而减少了服务端的访问频率;同时,由于游戏进程的天然分布式结构,该方式需要额外消耗资源去部署更多节点来分摊服务端的访问压力,从而减轻了资源部署的消耗,也减轻了服务端的访问压力。
在可选实施例中,上述方法还包括:如果数据缓存对象中未保存有数据访问请求所请求的目标数据,向服务端发送第二数据获取请求,以使服务端返回目标数据;将接收到的目标数据保存至数据缓存对象,并将目标数据发送至目标客户端。
在可选实施例中,上述判断数据缓存对象保存的目标数据是否有效的步骤,包括:判断目标数据在数据缓存对象中保存的时间是否超过预设有效时间;如果超过预设有效时间,确定目标数据无效;其中,预设有效时间与服务端的被访问频率相匹配。
在可选实施例中,上述预设有效时间通过下述方式确定:统计预设时间段内服务端的被访问次数,将被访问次数与预设时间段的比值确定为服务访问频率;如果服务访问频率大于最大频率阈值,将预设有效时间确定为第一时间与第二时间的加和;如果服务访问频率小于最小频率阈值,将预设有效时间确定为第一时间与第三时间的差值;如果服务访问频率不大于最大频率阈值且不小于最小频率阈值,将预设有效时间确定为第一时间。
在可选实施例中,上述第二时间包括:服务访问频率连续大于最大频率阈值的次数与第一数值的第一乘积;其中,如果第一乘积大于预设最大时间,将第二时间确定为预设最大时间;第三时间包括:服务访问频率连续小于最小频率阈值的次数与第二数值的第二乘积;如果第二乘积小于预设最小时间,将第三时间确定为预设最小时间。
在可选实施例中,上述服务端中保存有共享数据中每个数据的更新时间;上述向服务端发送第一数据获取请求,以使服务端返回目标数据的增量数据的步骤,包括:向服务端发送第一数据获取请求;其中,第一数据获取请求中包含有数据缓存对象中目标数据的最近一次的获取时间;通过服务端,查找目标数据中更新时间在获取时间之后的第一数据,将第一数据作为增量数据,并返回增量数据。
在可选实施例中,上述服务端中保存有共享数据中每个数据的版本号;上述向服务端发送第一数据获取请求,以使服务端返回目标数据的增量数据的步骤,包括:向服务端发送第一数据获取请求;其中,第一数据获取请求中包含有数据缓存对象中保存的目标数据的版本号;根据服务端保存的目标数据的版本号和第一数据获取请求携带的版本号,确定目标数据的增量数据,并返回增量数据。
在可选实施例中,上述方法还包括:如果目标数据有效,将数据缓存对象中保存的目标数据发送至目标客户端。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,终端设备,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (11)
1.一种数据访问方法,其特征在于,所述方法应用于运行有游戏进程的设备,所述游戏进程分别与服务端和至少一个客户端连接;所述服务端保存有游戏中的共享数据,所述游戏进程中设置有数据缓存对象,所述数据缓存对象用于缓存至少部分共享数据;所述方法包括:
接收目标客户端发送的数据访问请求;
如果所述数据缓存对象中保存有所述数据访问请求所请求的目标数据,判断所述数据缓存对象保存的所述目标数据是否有效;
如果所述目标数据无效,向所述服务端发送第一数据获取请求,以使所述服务端返回所述目标数据的增量数据;其中,所述增量数据包括所述服务端与所述数据缓存对象保存的目标数据中存在差异的数据;
基于所述增量数据更新所述数据缓存对象中保存的目标数据,得到更新后的目标数据,将所述更新后的目标数据发送至所述目标客户端。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
如果所述数据缓存对象中未保存有所述数据访问请求所请求的目标数据,向所述服务端发送第二数据获取请求,以使所述服务端返回所述目标数据;
将接收到的目标数据保存至所述数据缓存对象,并将所述目标数据发送至所述目标客户端。
3.根据权利要求1所述的方法,其特征在于,所述判断所述数据缓存对象保存的所述目标数据是否有效的步骤,包括:
判断所述目标数据在所述数据缓存对象中保存的时间是否超过预设有效时间;如果超过所述预设有效时间,确定所述目标数据无效;
其中,所述预设有效时间与所述服务端的被访问频率相匹配。
4.根据权利要求3所述的方法,其特征在于,所述预设有效时间通过下述方式确定:
统计预设时间段内所述服务端的被访问次数,将所述被访问次数与所述预设时间段的比值确定为服务访问频率;
如果所述服务访问频率大于最大频率阈值,将所述预设有效时间确定为第一时间与第二时间的加和;
如果所述服务访问频率小于最小频率阈值,将所述预设有效时间确定为所述第一时间与第三时间的差值;
如果所述服务访问频率不大于所述最大频率阈值且不小于所述最小频率阈值,将所述预设有效时间确定为所述第一时间。
5.根据权利要求4所述的方法,其特征在于,所述第二时间包括:所述服务访问频率连续大于所述最大频率阈值的次数与第一数值的第一乘积;其中,如果所述第一乘积大于预设最大时间,将所述第二时间确定为所述预设最大时间;
所述第三时间包括:所述服务访问频率连续小于所述最小频率阈值的次数与第二数值的第二乘积;如果所述第二乘积小于预设最小时间,将所述第三时间确定为预设最小时间。
6.根据权利要求1所述的方法,其特征在于,所述服务端中保存有所述共享数据中每个数据的更新时间;
所述向所述服务端发送第一数据获取请求,以使所述服务端返回所述目标数据的增量数据的步骤,包括:
向所述服务端发送第一数据获取请求;其中,所述第一数据获取请求中包含有所述数据缓存对象中所述目标数据的最近一次的获取时间;
通过所述服务端,查找所述目标数据中所述更新时间在所述获取时间之后的第一数据,将所述第一数据作为增量数据,并返回所述增量数据。
7.根据权利要求1所述的方法,其特征在于,所述服务端中保存有所述共享数据中每个数据的版本号;
所述向所述服务端发送第一数据获取请求,以使所述服务端返回所述目标数据的增量数据的步骤,包括:
向所述服务端发送第一数据获取请求;其中,所述第一数据获取请求中包含有所述数据缓存对象中保存的所述目标数据的版本号;
根据所述服务端保存的所述目标数据的版本号和所述第一数据获取请求携带的版本号,确定所述目标数据的增量数据,并返回所述增量数据。
8.根据权利要求1所述的方法,其特征在于,所述方法还包括:
如果所述目标数据有效,将所述数据缓存对象中保存的所述目标数据发送至所述目标客户端。
9.一种数据访问装置,其特征在于,所述装置设置于运行有游戏进程的设备,所述游戏进程分别与服务端和至少一个客户端连接;所述服务端保存有游戏中的共享数据,所述游戏进程中设置有数据缓存对象,所述数据缓存对象用于缓存至少部分共享数据;所述装置包括:
请求接收模块,用于接收目标客户端发送的数据访问请求;
判断模块,用于如果所述数据缓存对象中保存有所述数据访问请求所请求的目标数据,判断所述数据缓存对象保存的所述目标数据是否有效;
请求发送模块,用于如果所述目标数据无效,向所述服务端发送第一数据获取请求,以使所述服务端返回所述目标数据的增量数据;其中,所述增量数据包括所述服务端与所述数据缓存对象保存的目标数据中存在差异的数据;
数据发送模块,用于基于所述增量数据更新所述数据缓存对象中保存的目标数据,得到更新后的目标数据,将所述更新后的目标数据发送至所述目标客户端。
10.一种电子设备,其特征在于,包括处理器和存储器,所述存储器存储有能够被所述处理器执行的机器可执行指令,所述处理器执行所述机器可执行指令以实现权利要求1至8任一项所述的数据访问方法。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令在被处理器调用和执行时,所述计算机可执行指令促使所述处理器实现权利要求1至8任一项所述的数据访问方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211340366.4A CN115766866A (zh) | 2022-10-28 | 2022-10-28 | 数据访问方法、装置和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211340366.4A CN115766866A (zh) | 2022-10-28 | 2022-10-28 | 数据访问方法、装置和电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115766866A true CN115766866A (zh) | 2023-03-07 |
Family
ID=85354229
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211340366.4A Pending CN115766866A (zh) | 2022-10-28 | 2022-10-28 | 数据访问方法、装置和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115766866A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117112268A (zh) * | 2023-10-23 | 2023-11-24 | 深圳市七彩虹禹贡科技发展有限公司 | 一种内存共享管理方法及*** |
-
2022
- 2022-10-28 CN CN202211340366.4A patent/CN115766866A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117112268A (zh) * | 2023-10-23 | 2023-11-24 | 深圳市七彩虹禹贡科技发展有限公司 | 一种内存共享管理方法及*** |
CN117112268B (zh) * | 2023-10-23 | 2024-02-13 | 深圳市七彩虹禹贡科技发展有限公司 | 一种内存共享管理方法及*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108696895B (zh) | 资源获取方法、装置及*** | |
EP3668063A1 (en) | Domain name resolution method, server and system | |
CN109040190B (zh) | 一种调度方法、装置及计算机可读存储介质 | |
CN114827145B (zh) | 服务器集群***、元数据的访问方法及装置 | |
CN108429777B (zh) | 一种基于缓存的数据更新方法及服务器 | |
CN111294390B (zh) | 一种区块数据快速同步方法、装置、设备及存储介质 | |
CN115766866A (zh) | 数据访问方法、装置和电子设备 | |
CN112751847A (zh) | 接口调用请求的处理方法、装置、电子设备及存储介质 | |
CN109871498B (zh) | 后端接口响应方法、装置、电子设备及存储介质 | |
CN111597213A (zh) | 一种缓存方法、软件服务器及存储介质 | |
CN111597259B (zh) | 数据存储***、方法、装置、电子设备及存储介质 | |
CN106878030B (zh) | 一种计费方法和装置 | |
CN112751912A (zh) | 配置调整方法、装置及电子设备 | |
CN111654379B (zh) | 多服务器的统一令牌生成方法及认证方法 | |
CN110555040A (zh) | 一种数据缓存方法、装置及服务器 | |
CN110460486B (zh) | 服务节点的监控方法及*** | |
CN115208766B (zh) | 一种cdn带宽调度方法及相关装置 | |
CN108540569B (zh) | 一种软件安装包替换方法、装置及计算机存储介质 | |
CN113835905B (zh) | 一种消息队列负载均衡方法、装置、电子设备及介质 | |
CN111565195A (zh) | 分布式***的挑战黑洞攻击防御方法和分布式*** | |
CN110839166A (zh) | 一种数据共享方法及装置 | |
CN113918776B (zh) | 数据缓存方法、装置及电子设备及数据查询方法 | |
CN113268327A (zh) | 事务请求的处理方法、装置和电子设备 | |
CN115203255A (zh) | 数据查询方法、装置、电子设备及存储介质 | |
CN112839070B (zh) | 数据处理方法、装置和cdn网络中的节点设备 |
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 |