数据请求的处理方法及装置、存储介质及电子装置转让专利

申请号 : CN201910586036.5

文献号 : CN110290217A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 周罗武

申请人 : 腾讯科技(深圳)有限公司

摘要 :

本申请公开了一种数据请求的处理方法及装置、存储介质及电子装置。其中,该方法包括:接收目标数据请求;将目标数据请求写入第一消息队列,其中,第一消息队列中包括待发送给数据源服务器的数据请求,第一消息队列中的数据请求被设置为按照发送周期从第一消息队列中取出并发送给数据源服务器,每个发送周期从第一消息队列中取出的数据请求的数量相同;在到达目标发送周期时从第一消息队列中取出包括目标数据请求在内的多个数据请求,并将包括目标数据请求在内的多个数据请求发送给数据源服务器,以通知数据源服务器获取多个数据请求所请求的目标数据。

权利要求 :

1.一种数据请求的处理方法,其特征在于,包括:

接收目标数据请求;

将所述目标数据请求写入第一消息队列,其中,所述第一消息队列中包括待发送给所述数据源服务器的数据请求,所述第一消息队列中的数据请求被设置为按照发送周期从所述第一消息队列中取出并发送给所述数据源服务器,每个所述发送周期从所述第一消息队列中取出的数据请求的数量相同;

在到达目标发送周期时从所述第一消息队列中取出包括所述目标数据请求在内的多个数据请求,并将包括所述目标数据请求在内的多个数据请求发送给所述数据源服务器,以通知所述数据源服务器获取所述多个数据请求所请求的目标数据。

2.根据权利要求1所述的方法,其特征在于,将所述目标数据请求写入第一消息队列之后,所述方法还包括:获取第一数据请求,其中,所述第一数据请求用于向所述数据源服务器请求第一数据;

在所述第一消息队列中包括的待发送给所述数据源服务器的数据请求的数量大于预定阈值的情况下,将所述第一数据请求丢弃,或者,将所述第一数据请求写入第二消息队列,其中,所述第二消息队列中包括的数据请求被设置为在所述第一消息队列中包括的数据请求的数量小于所述预定阈值和/或所述第一消息队列处于空闲状态的情况下写回到所述第一消息队列中。

3.根据权利要求2所述的方法,其特征在于,将所述第一数据请求丢弃之后,所述方法还包括:将被丢弃的所述第一数据请求储存在缓存服务器上,并保留指定时间;

在所述第一消息队列中包括的数据请求的数量小于所述预定阈值和/或所述第一消息队列处于空闲状态的情况下,将被丢弃的所述第一数据请求写回到所述第一消息队列中。

4.根据权利要求1所述的方法,其特征在于,在将所述目标数据请求写入第一消息队列包括:在所述目标数据请求的优先级高于预定阈值的情况下,将所述目标数据请求写入在所述第一消息队列中的队首位置,在所述目标数据请求的优先级低于所述预定阈值的情况下,将所述目标数据请求写入在所述第一消息队列中的队尾位置;或者在所述目标数据请求的优先级高于所述第一消息队列中位于队首位置的数据请求的优先级的情况下,将所述目标数据请求写入在所述第一消息队列中的所述队首位置,在所述目标数据请求的优先级低于所述第一消息队列中位于队尾位置的数据请求的优先级的情况下,将所述目标数据请求写入在所述第一消息队列中的队尾位置。

5.根据权利要求1所述的方法,其特征在于,将所述目标数据请求写入第一消息队列之前,所述方法还包括:获取第二数据请求,其中,所述第二数据请求用于向所述数据源服务器请求所述目标数据;

将所述第二数据请求丢弃。

6.根据权利要求1所述的方法,其特征在于,在将所述目标数据请求发送给数据源服务器之后,所述方法还包括:在将所述目标数据请求发送给所述数据源服务器之后、且在所述数据源服务器获取到所述目标数据请求所请求的目标数据之后,将所述目标数据请求通过代理服务器发送给所述数据源服务器;

获取所述代理服务器从所述数据源服务器接收到的所述目标数据。

7.根据权利要求6所述的方法,其特征在于,在将所述目标数据请求发送给所述数据源服务器之后、且在所述数据源服务器获取到所述目标数据请求所请求的目标数据之后,将所述目标数据请求通过代理服务器发送给所述数据源服务器包括:在将所述目标数据请求发送给所述数据源服务器之后,接收到通知消息,其中,所述通知消息用于表示所述数据源服务器已获取到所述目标数据请求所请求的目标数据;

响应所述通知消息将所述目标数据请求通过所述代理服务器发送给所述数据源服务器。

8.一种数据请求的处理装置,其特征在于,包括:

接收模块,配置为接收目标数据请求;

第一写入模块,配置为将所述目标数据请求写入第一消息队列,其中,所述第一消息队列中包括待发送给所述数据源服务器的数据请求,所述第一消息队列中的数据请求被设置为按照发送周期从所述第一消息队列中取出并发送给所述数据源服务器,每个所述发送周期从所述第一消息队列中取出的数据请求的数量相同;

取出模块,配置为在到达目标发送周期时从所述第一消息队列中取出包括所述目标数据请求在内的多个数据请求;

第一发送模块,配置为将包括所述目标数据请求在内的多个数据请求发送给所述数据源服务器,以通知所述数据源服务器获取所述多个数据请求所请求的目标数据。

9.根据权利要求8所述的装置,其特征在于,所述装置还包括:

第一获取模块,配置为获取第一数据请求,其中,所述第一数据请求用于向所述数据源服务器请求第一数据;

第一丢弃模块,配置为在所述第一消息队列中包括的待发送给所述数据源服务器的数据请求的数量大于预定阈值的情况下,将所述第一数据请求丢弃;

第二写入模块,配置为将所述第一数据请求写入第二消息队列,其中,所述第二消息队列中包括的数据请求被设置为在所述第一消息队列中包括的数据请求的数量小于所述预定阈值和/或所述第一消息队列处于空闲状态的情况下写回到所述第一消息队列中。

10.根据权利要求9所述的装置,其特征在于,所述装置还包括:

缓存模块,配置为将被丢弃的所述第一数据请求储存在缓存服务器上,并保留指定时间;

写回模块,配置为在所述第一消息队列中包括的数据请求的数量小于所述预定阈值和/或所述第一消息队列处于空闲状态的情况下,将被丢弃的所述第一数据请求写回到所述第一消息队列中。

11.根据权利要求8所述的装置,其特征在于,所述第一写入模块包括:第一写入单元,配置为在所述目标数据请求的优先级高于预定阈值的情况下,将所述目标数据请求写入在所述第一消息队列中的队首位置,在所述目标数据请求的优先级低于所述预定阈值的情况下,将所述目标数据请求写入在所述第一消息队列中的队尾位置;

第二写入单元,配置为在所述目标数据请求的优先级高于所述第一消息队列中位于队首位置的数据请求的优先级的情况下,将所述目标数据请求写入在所述第一消息队列中的所述队首位置,在所述目标数据请求的优先级低于所述第一消息队列中位于队尾位置的数据请求的优先级的情况下,将所述目标数据请求写入在所述第一消息队列中的队尾位置。

12.根据权利要求8所述的装置,其特征在于,所述装置还包括:

第二获取模块,配置为获取第二数据请求,其中,所述第二数据请求用于向所述数据源服务器请求所述目标数据;

第二丢弃模块,配置为将所述第二数据请求丢弃。

13.根据权利要求8所述的装置,其特征在于,所述装置还包括:

第二发送模块,配置为在将所述目标数据请求发送给所述数据源服务器之后、且在所述数据源服务器获取到所述目标数据请求所请求的目标数据之后,将所述目标数据请求通过代理服务器发送给所述数据源服务器;

第三获取模块,配置为获取所述代理服务器从所述数据源服务器接收到的所述目标数据。

14.一种存储介质,所述存储介质包括存储的程序,其中,所述程序运行时执行上述权利要求1至7任一项中所述的方法。

15.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为通过所述计算机程序执行所述权利要求1至7任一项中所述的方法。

说明书 :

数据请求的处理方法及装置、存储介质及电子装置

技术领域

[0001] 本申请涉及数据处理技术领域,具体而言,涉及一种数据请求的处理方法及装置、存储介质及电子装置。

背景技术

[0002] 有些场景下的服务器数据获取困难,有限频要求,如每秒只能查一个指定阀值以内的查询交互,但应用方请求量非常大,远远超过查询的频率限制,那么当用户量增加,或者业务高峰期的时候,会出现查询数据失败,调用数据超时,甚至是把数据提供方服务拖垮的问题。这将严重影响用户体验和业务增长,也将影响数据提供方服务的可靠性与稳定性。
[0003] 现有技术中的解决方案是通过加设缓存服务器来缓解数据服务器的压力,但是缓存服务器中的数据无法保证数据的实时性,而且,当缓存服务器中不存在请求的数据时,还是会有大量的请求涌入数据服务器,并没有解决根本问题。
[0004] 针对上述问题,目前尚未提出有效的解决方案。

发明内容

[0005] 本申请实施例提供了一种数据请求的处理方法及装置、存储介质及电子装置,以降低在业务高峰期对数据服务器造成的流量压力。
[0006] 根据本申请实施例的一个方面,提供了一种数据请求的处理方法,包括:接收目标数据请求;将所述目标数据请求写入第一消息队列,其中,所述第一消息队列中包括待发送给所述数据源服务器的数据请求,所述第一消息队列中的数据请求被设置为按照发送周期从所述第一消息队列中取出并发送给所述数据源服务器,每个所述发送周期从所述第一消息队列中取出的数据请求的数量相同;在到达目标发送周期时从所述第一消息队列中取出包括所述目标数据请求在内的多个数据请求,并将包括所述目标数据请求在内的多个数据请求发送给所述数据源服务器,以通知所述数据源服务器获取所述多个数据请求所请求的目标数据。
[0007] 根据本申请实施例的另一方面,还提供了一种数据请求的处理装置,包括:接收模块,配置为接收目标数据请求;写入模块,配置为将所述目标数据请求写入第一消息队列,其中,所述第一消息队列中包括待发送给所述数据源服务器的数据请求,所述第一消息队列中的数据请求被设置为按照发送周期从所述第一消息队列中取出并发送给所述数据源服务器,每个所述发送周期从所述第一消息队列中取出的数据请求的数量相同;取出模块,配置为在到达目标发送周期时从所述第一消息队列中取出包括所述目标数据请求在内的多个数据请求;发送模块,配置为将包括所述目标数据请求在内的多个数据请求发送给所述数据源服务器,以通知所述数据源服务器获取所述多个数据请求所请求的目标数据。
[0008] 可选地,所述装置还包括:第一获取模块,配置为获取第一数据请求,其中,所述第一数据请求用于向所述数据源服务器请求第一数据;第一丢弃模块,配置为在所述第一消息队列中包括的待发送给所述数据源服务器的数据请求的数量大于预定阈值的情况下,将所述第一数据请求丢弃;第二写入模块,配置为将所述第一数据请求写入第二消息队列,其中,所述第二消息队列中包括的数据请求被设置为在所述第一消息队列中包括的数据请求的数量小于所述预定阈值和/或所述第一消息队列处于空闲状态的情况下写回到所述第一消息队列中。
[0009] 可选地,所述装置还包括:缓存模块,配置为将被丢弃的所述第一数据请求储存在缓存服务器上,并保留指定时间;写回模块,配置为在所述第一消息队列中包括的数据请求的数量小于所述预定阈值和/或所述第一消息队列处于空闲状态的情况下,将被丢弃的所述第一数据请求写回到所述第一消息队列中。
[0010] 可选地,所述第一写入模块包括:第一写入单元,配置为在所述目标数据请求的优先级高于预定阈值的情况下,将所述目标数据请求写入在所述第一消息队列中的队首位置,在所述目标数据请求的优先级低于所述预定阈值的情况下,在所述中间服务器上将所述目标数据请求写入在所述第一消息队列中的队尾位置;第二写入单元,配置为在所述目标数据请求的优先级高于所述第一消息队列中位于队首位置的数据请求的优先级的情况下,将所述目标数据请求写入在所述第一消息队列中的所述队首位置,在所述目标数据请求的优先级低于所述第一消息队列中位于队尾位置的数据请求的优先级的情况下,将所述目标数据请求写入在所述第一消息队列中的队尾位置。
[0011] 可选地,所述装置还包括:第二获取模块,配置为获取第二数据请求,其中,所述第二数据请求用于向所述数据源服务器请求所述目标数据;第二丢弃模块,配置为将所述第二数据请求丢弃。
[0012] 可选地,所述装置还包括:第二发送模块,配置为在将所述目标数据请求发送给所述数据源服务器之后、且在所述数据源服务器获取到所述目标数据请求所请求的目标数据之后,将所述目标数据请求通过代理服务器发送给所述数据源服务器;第三获取模块,配置为获取所述代理服务器从所述数据源服务器接收到的所述目标数据。
[0013] 根据本申请实施例的又一方面,还提供了一种存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述数据请求的处理方法。
[0014] 根据本申请实施例的又一方面,还提供了一种电子装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,上述处理器通过计算机程序执行上述的数据请求的处理方法。
[0015] 在本申请实施例中,通过在中间服务器上接收目标数据请求;然后上将目标数据请求写入第一消息队列,其中,第一消息队列中包括待发送给数据源服务器的数据请求,第一消息队列中的数据请求被设置为按照发送周期从第一消息队列中取出并发送给数据源服务器,每个发送周期从第一消息队列中取出的数据请求的数量相同;这种定时定量发送数据请求的方式可以对请求的流量进行一定的控制,保证发送到数据源服务器的请求数量不会太少浪费资源,也不会太高造成服务器压力过大;在到达目标发送周期时从第一消息队列中取出包括目标数据请求在内的多个数据请求,并将包括目标数据请求在内的多个数据请求发送给数据源服务器,以通知数据源服务器获取多个数据请求所请求的目标数据,数据源服务器根据接收到的数据请求提前去获取数据,既保证了数据的有效性和实时性,也起到一个缓存的作用,进而降低了在业务高峰期对数据服务器造成的流量压力。

附图说明

[0016] 此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
[0017] 图1是根据本申请实施例一种可选的数据请求的处理方法的硬件环境示意图;
[0018] 图2是根据本申请实施例的一种可选的数据请求的处理方法的流程图;
[0019] 图3是根据本申请实施例一种可选的数据请求的处理方法的应用环境示意图;
[0020] 图4是根据本申请实施例一种可选的某社区用户战绩信息查询界面示意图;
[0021] 图5是根据本申请实施例一种可选的数据请求的处理装置的结构框图;
[0022] 图6是根据本申请实施例一种可选的数据请求的处理系统的结构框图;
[0023] 图7是根据本申请实施例一种可选的数据请求处理方法的交互流程图;
[0024] 图8是根据本申请实施例图7的一种可选的中间服务器内部的流程交互图;
[0025] 图9是根据本申请实施例一种可选的电子装置的示意图。

具体实施方式

[0026] 为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
[0027] 需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0028] 目前的相关技术中,有些场景下的游戏数据获取困难,有限频要求,如每秒只能查一个指定阀值以内的查询交互,但应用方请求量非常大,远远超过查询的频率限制,那么当用户量增加,或者业务高峰期的时候,会出现查询数据失败,调用游戏数据超时,甚至是把游戏数据提供方服务拖垮的问题。这将严重影响用户体验和业务增长,也将影响数据提供方的服务的可靠性与稳定性。
[0029] 目前业界普遍使用增加数据库缓存数据,减少与数据源交互的方式,一般是在逻辑服务器和数据源服务器之间设置有“频率限制”模块,用作缓存数据库。主要流程为:用户在客户端发起查询请求;逻辑服务器收到请求后,先去数据服务器查询是否有数据;有数据直接返回客户端,如果无数据则转发查询请求转发给数据源服务器;数据源服务器返回结果给频率限制服务器,频率限制服务器将结果返回给逻辑服务器,然后逻辑服务器将结果返回客户端。
[0030] 上述架构存在以下缺陷:没有对客户端的请求数量进行控制,当客户端请求增加时,会使逻辑服务器和数据源服务器压力过大,从而导致数据服务器拉取数据失败。虽然加了缓存,能在一定程度上减少与数据源服务器的交互,但数据的实时性会有影响,不精准。
[0031] 为了解决上述技术问题,本申请实施例提供了一种数据请求的处理方法。图1是根据本申请实施例一种可选的数据请求的处理方法的硬件环境示意图,如图1所示,数据请求的处理方法主要包括以下步骤:
[0032] 步骤S102,用户设备102将目标数据请求发送到网络端110;
[0033] 步骤S104,网络端110将目标数据请求转发给服务器112;
[0034] 步骤S106,服务器112根据目标数据请求获取数据结果;
[0035] 步骤S108,服务器112将目标数据结果返回给网络端110;
[0036] 步骤S110,网络端110将目标数据结果反馈给用户设备102。
[0037] 用户设备102内部可以包括但不限于存储器104、处理器106和显示器108,服务器112内部可以包括但不限于数据库114和处理引擎116。
[0038] 图2是本申请实施例的一种可选的数据请求的处理方法的流程图。如图2所示,该方法包括:
[0039] 步骤S201,接收目标数据请求;
[0040] 步骤S203,将目标数据请求写入第一消息队列,其中,第一消息队列中包括待发送给数据源服务器的数据请求,第一消息队列中的数据请求被设置为按照发送周期从第一消息队列中取出并发送给数据源服务器,每个发送周期从第一消息队列中取出的数据请求的数量相同;
[0041] 步骤S205,在到达目标发送周期时从第一消息队列中取出包括目标数据请求在内的多个数据请求,并将包括目标数据请求在内的多个数据请求发送给数据源服务器,以通知数据源服务器获取多个数据请求所请求的目标数据。
[0042] 可选地,在本实施例中,上述数据请求的处理方法可以应用于如图3所示的客户端302、中间服务器304、数据源服务器306所构成的硬件环境中,图2所示的各个步骤的执行主体可以但不限于是中间服务器304,可选地,中间服务器可以包括多个服务器,第一消息队列可以是中间服务器中的其中一个服务器。中间服务器可以设置在逻辑服务器和数据源服务器之间,也可以设置在客户端与数据源服务器之间。如图3所示,中间服务器304接收到客户端302发送的目标数据请求,将目标数据请求写入第一消息队列,其中,第一消息队列中包括待发送给数据源服务器的数据请求,第一消息队列中的数据请求被设置为按照发送周期从第一消息队列中取出并发送给数据源服务器,每个发送周期从第一消息队列中取出的数据请求的数量相同;在到达目标发送周期时从第一消息队列中取出包括目标数据请求在内的多个数据请求,并将包括目标数据请求在内的多个数据请求发送给数据源服务器306,以通知数据源服务器获取多个数据请求所请求的目标数据,然后客户端302再向数据源服务器306去请求目标数据。
[0043] 可选地,上述数据处理的方法不限于应用于游戏数据获取的场景中,可以但不限于应用于其他任何在业务高峰期请求量并发的服务器应用场景,例如购物类、游戏类、即时通信类场景等。
[0044] 可选地,上述目标数据请求可以但不限于在游戏过程中涉及的数据,例如账号登陆、游戏战绩查询、英雄角色的查询、游戏背景的获取、角色皮肤的查询、游戏论坛资讯、聊天内容、赛事记录、游戏画面中显示的击杀、助攻、死亡次数的数据,一局游戏的得分数据,游戏过程中对操作进行播报的数据等。如图4所示,是本申请实施例的某社区用户战绩信息查询界面示意图。
[0045] 可选地,上述第一消息队列可以是由数据请求组成的消息队列,消息队列中的数据请求按照预设的发送周期从消息队列中取出,每次取出的数据请求的数量是预先设置好的数量M,M可以是固定的数字,也可以根据发送周期改变,例如在第一个发送周期,M是100,在第二个发送周期M是200,在第三个发送周期M是100,这样交叉进行,当然,此处的数字仅仅用于举例说明,实际应用中可以根据服务器的承载能力和应用场景进行具体设置。
[0046] 可选地,本申请实施例中将包含目标数据请求的多个数据请求发送给数据源服务器,数据源服务器就可以根据收到的数据请求去游戏服务器请求数据,然后将获取到的数据储存在数据源服务器的本地数据库中,此处获取到的数据中包含目标数据。后续客户端可以直接将目标数据请求发送给数据源服务器来获取对应的目标数据,这样就避免了游戏服务器与前端的多次交互,减小了游戏服务器的压力。而且由于数据源服务器中获取的数据是根据目标数据请求来实时获取的,可以保证数据的有效性和实时性,避免数据已经更新,但是数据源服务器中储存的数据有延迟。
[0047] 作为一种可选的方案,将目标数据请求写入第一消息队列之后,上述方法还包括:
[0048] S1,获取第一数据请求,其中,第一数据请求用于向数据源服务器请求第一数据;
[0049] S2,在第一消息队列中包括的待发送给数据源服务器的数据请求的数量大于预定阈值的情况下,将第一数据请求丢弃,或者,将第一数据请求写入第二消息队列,其中,第二消息队列中包括的数据请求被设置为在第一消息队列中包括的数据请求的数量小于预定阈值和/或第一消息队列处于空闲状态的情况下写回到第一消息队列中。
[0050] 可选地,获取的第一数据请求可以但不限于在游戏过程中涉及的数据,例如账号登陆、游戏战绩查询、英雄角色的查询、游戏背景的获取、角色皮肤的查询、游戏论坛资讯、聊天内容、赛事记录、游戏画面中显示的击杀、助攻、死亡次数的数据,一局游戏的得分数据,游戏过程中对操作进行播报的数据(三杀、超神、精彩等播报)等。
[0051] 可选地,第一消息队列中设定的数据请求的最大数量,也就是预定阈值是固定的,超过这一预定阈值,后续的数据请求不能再写入第一消息队列,这也是对请求流量的控制,在从第一消息队列中定时定量取出数据请求之前,对第一消息队列中的请求数量进行控制,减小了第一消息队列的压力。
[0052] 可选地,当第一消息队列中的请求数量大于预设阈值时,后续的数据请求可以通过两种方式处理,一是直接丢弃,二是写入第二消息队列,其中,第二消息队列也可以设置一个最大承载数量,当第二消息队列也写满后,后续的数据请求被丢弃。例如,第一消息队列的预设阈值可以但不限于为100,当第一消息队列中写满100条数据请求后,第101条请求消息可以直接被丢弃,也可以写入第二消息队列。第二消息队列的最大阈值为100,当第二消息队列中也写满数据请求时,第201条消息被丢弃。
[0053] 可选地,在第一消息队列正常工作时,第二消息队列作为备用队列存在,不直接与其他服务器进行交互。当第一消息队列中的数据请求的数量小于一个预定阈值(例如50)时,可以将第二消息队列中的部分数据请求写回到第一消息队列中,或者,当第一消息队列中处于空闲状态时,也可以将第二消息队列中的部分数据请求写回到第一消息队列中。
[0054] 可选地,当第一消息队列出现故障时,第二消息队列可以替代第一消息队列进行工作。第一消息队列中的数据请求可以写入到第二消息队列,或者,第一消息队列中的数据请求因故障被丢弃,直接从第二消息队列中取出指定数量的数据请求发送到数据源服务器。
[0055] 作为一种可选的方案,将第一数据请求丢弃之后,所述方法还包括:
[0056] S1,将被丢弃的第一数据请求储存在缓存服务器上,并保留指定时间;
[0057] S2,在第一消息队列中包括的数据请求的数量小于预定阈值和/或第一消息队列处于空闲状态的情况下,将被丢弃的第一数据请求写回到第一消息队列中。
[0058] 可选的,缓存服务器可以是中间服务器的其中一个服务器,也可以是独立于中间服务器存在的。在第一消息队列或第二消息队列上丢弃的数据请求,可以暂时储存在缓存服务器上,并保留指定时间,避免直接将重要的请求丢弃造成用户体验较差的问题。当第一消息队列包括的数据请求的数量小于预定阈值和/或第一消息队列处于空闲状态的情况下,位于缓存服务器上的数据请求可以被写回到第一消息队列中,当第一消息队列出故障时,也可以写回到备用消息队列,例如第二消息队列,本申请实施例对此不作限定。
[0059] 作为一种可选的方案,将目标数据请求写入第一消息队列可以通过以下方式实现:
[0060] S1,在目标数据请求的优先级高于预定阈值的情况下,将目标数据请求写入在第一消息队列中的队首位置,在目标数据请求的优先级低于预定阈值的情况下,将目标数据请求写入在第一消息队列中的队尾位置;或者
[0061] S2,在目标数据请求的优先级高于第一消息队列中位于队首位置的数据请求的优先级的情况下,将目标数据请求写入在第一消息队列中的队首位置,在目标数据请求的优先级低于第一消息队列中位于队尾位置的数据请求的优先级的情况下,将目标数据请求写入在第一消息队列中的队尾位置。
[0062] 需要说明的是,上述将目标数据请求写入第一消息队列的方式,主要是利用对数据请求进行优先级排列,确定不同数据请求的优先级等级,进而确定对不同数据请求处理时间的先后。通过优先级的确定,可以将相对更重要的数据请求优先处理,防止被丢弃或延误。优先级的设定方法,可以根据不同的应用场景设定不同的优先级规则。例如,在游戏应用场景中,用户A请求登录游戏,用户B请求获取上一场战绩排名,用户C请求查看对话框的聊天记录。一种可选的优先级设定方式为,用户A的优先级最高,设置为5,用户B的优先级最低,设置为1,用户C的优先级位于中间,设置为3。
[0063] 可选地,可以设置优先级的阈值,例如,分别设置上限阈值和下限阈值。在目标数据请求的优先级高于预定的上限阈值的情况下,将目标数据请求写入在第一消息队列中的队首位置,在目标数据请求的优先级低于预定的下限阈值的情况下,将目标数据请求写入在第一消息队列中的队尾位置。例如用户A的请求的优先级高于上限阈值4,那么将用户A的数据请求写入第一消息队列的队首位置,用户B的数据请求的优先级低于下限阈值2,将用户B的数据请求写入第一消息队列的队尾。也可以只设定一个预定阈值3,用户A的请求的优先级高于该预定阈值3,那么将用户A的数据请求写入第一消息队列的队首位置,用户B的数据请求的优先级低于该预定阈值3,将用户B的数据请求写入第一消息队列的队尾。用户C的请求可以按照正常的顺序写入,例如写入当前第一消息队列的最后一位,也可以按照优先级的高低,写入第一消息队列的中间位置,或队首和队尾之间的任一位置,本申请实施例对此不做限定。
[0064] 可选地,若接收到一个优先级为1的数据请求,而当前第一消息队列中队尾的数据请求的优先级为2,即,新接收到的数据请求的优先级小于当前消息队列队尾的数据请求的优先级,那么,可以将新接收到的优先级为1的数据请求写入队尾。反之亦然,若接收到一个优先级为5的数据请求,而当前第一消息队列中队首的数据请求的优先级为4,即,新接收到的数据请求的优先级大于当前消息队列队首的数据请求的优先级,那么,可以将新接收到的优先级为5的数据请求写入队首。
[0065] 后续按照预设周期从消息队列中取出数据请求时,每次都从队首开始取,取到指定数量后就将取出的多个数据请求发送到数据源服务器,保证了优先级高的数据请求被优先处理。
[0066] 可选的一个方案中,将目标数据请求写入第一消息队列之前,上述方法还包括:
[0067] S1,获取第二数据请求,其中,第二数据请求用于向数据源服务器请求目标数据;
[0068] S2,将第二数据请求丢弃。
[0069] 需要说明的是,此处的第二数据请求,请求的数据和目标数据请求请求的数据一致,都是请求目标数据。为了节省资源,在将请求写入第一消息队列之前,对接收到的数据请求进行过滤,即合并去重,将重复的数据请求合并为一条,即,当后续接收到与目标数据请求重复的数据请求时,直接丢弃,不必写入第一消息队列。有效减少了大量重复的数据请求对服务器资源的占用。
[0070] 例如在对抗赛过程中,用户A请求获取当前的游戏战绩,从数据源服务器获取到对应的数据后,在比赛结束之前,用户A再次请求获取当前的游戏战绩,再次接收到用户A的数据请求后,中间服务器判断出之前已经有过相同的请求,而且这一请求对应的数据并没有更新,中间服务器可以直接将再次收到的请求丢弃。此时逻辑服务器上线,需要说明的是,在用户A第一次请求游戏战绩数据时,逻辑服务器将对应的数据储存在了本地,用户再次请求相同的数据时,逻辑服务器可以直接将保存的数据返回给用户A,不必再将重复的请求经过中间服务器和数据源服务器重新请求一遍。
[0071] 可选地,上述合并去重可以由缩量服务器来完成,缩量服务器可以是中间服务器的其中一个服务器,本申请实施例对此不做限定。
[0072] 可选的一个方案中,在将目标数据请求发送给数据源服务器之后,上述方法还包括:
[0073] S1,在将目标数据请求发送给数据源服务器之后、且在数据源服务器获取到目标数据请求所请求的目标数据之后,将目标数据请求通过代理服务器发送给数据源服务器;
[0074] S2,获取代理服务器从数据源服务器接收到的目标数据。
[0075] 在可选的一个方案中,客户端不直接与中间服务器进行交互,也不直接与数据源服务器进行交互。客户端与中间服务器之间设置逻辑服务器,客户端与数据源服务器之间设置逻辑服务器和代理服务器。
[0076] 用户的客户端将目标数据请求发送到逻辑服务器,逻辑服务器再将数据请求转发到中间服务器,经过中间服务器发送到数据源服务器,以使得数据源服务器去获取对应的目标数据。那么在数据源服务器获取到目标数据之后,逻辑服务器经过代理服务器向数据源服务器查询目标数据,然后代理服务器将获取的目标数据返回给逻辑服务器,逻辑服务器将目标数据返回给客户端。
[0077] 通过这种方式,在数据源服务器已经获取到目标数据之后,再将目标数据请求发送给代理服务器,代理服务器根据目标数据请求去数据源服务器获取数据,可以保证目标数据是实时更新的。
[0078] 在可选的一个方案中,可以通过以下方式让逻辑服务器知晓何时向代理服务器发送目标数据请求:
[0079] S1,在将所目标数据请求发送给数据源服务器之后,接收到通知消息,其中,通知消息用于表示数据源服务器已获取到目标数据请求所请求的目标数据;
[0080] S2,响应通知消息将目标数据请求通过代理服务器发送给数据源服务器。
[0081] 可选地,上述通知消息可以承载在服务器之间的任意通信消息上。逻辑服务器在接收到中间服务器发送的通知消息,知晓数据源服务器已经获取到目标数据之后,逻辑服务器向代理服务器发送目标数据请求。也可以是中间服务器将数据请求发送到数据源服务器之后,不能数据源服务器的反馈,直接给逻辑服务器发送通知消息,通知逻辑服务器可以向代理服务器发送数据请求了。
[0082] 也可以是在逻辑服务器上设定时钟信号,当目标数据请求发送到中间服务器预定时间之后,再将目标数据请求发送到代理服务器。例如,逻辑服务器将目标数据请求发送到中间服务器1s后,逻辑服务器将目标数据请求发送到代理服务器。
[0083] 需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
[0084] 通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
[0085] 根据本申请实施例的另一个方面,还提供了一种用于实施上述数据请求的处理方法的数据请求的处理装置,如图5所示,该装置包括:
[0086] 接收模块50,配置为接收目标数据请求;
[0087] 第一写入模块52,配置为将目标数据请求写入第一消息队列,其中,第一消息队列中包括待发送给数据源服务器的数据请求,第一消息队列中的数据请求被设置为按照发送周期从第一消息队列中取出并发送给数据源服务器,每个发送周期从第一消息队列中取出的数据请求的数量相同;
[0088] 取出模块54,配置为在到达目标发送周期时从第一消息队列中取出包括目标数据请求在内的多个数据请求;
[0089] 第一发送模块56,配置为将包括目标数据请求在内的多个数据请求发送给数据源服务器,以通知数据源服务器获取多个数据请求所请求的目标数据。
[0090] 可选地,上述装置还包括:第一获取模块,配置为获取第一数据请求,其中,第一数据请求用于向数据源服务器请求第一数据;第一丢弃模块,配置为在第一消息队列中包括的待发送给数据源服务器的数据请求的数量大于预定阈值的情况下,将第一数据请求丢弃;第二写入模块,配置为将第一数据请求写入第二消息队列,其中,第二消息队列中包括的数据请求被设置为在第一消息队列中包括的数据请求的数量小于预定阈值和/或第一消息队列处于空闲状态的情况下写回到第一消息队列中。
[0091] 可选地,上述装置还包括:缓存模块,配置为将被丢弃的第一数据请求储存在缓存服务器上,并保留指定时间;写回模块,配置为在第一消息队列中包括的数据请求的数量小于预定阈值和/或第一消息队列处于空闲状态的情况下,将被丢弃的第一数据请求写回到第一消息队列中。
[0092] 可选地,第一写入模块52包括:第一写入单元,配置为在目标数据请求的优先级高于预定阈值的情况下,将目标数据请求写入在第一消息队列中的队首位置,在目标数据请求的优先级低于预定阈值的情况下,在中间服务器上将目标数据请求写入在第一消息队列中的队尾位置;第二写入单元,配置为在目标数据请求的优先级高于第一消息队列中位于队首位置的数据请求的优先级的情况下,将目标数据请求写入在第一消息队列中的队首位置,在目标数据请求的优先级低于第一消息队列中位于队尾位置的数据请求的优先级的情况下,将目标数据请求写入在第一消息队列中的队尾位置。
[0093] 可选地,上述装置还包括:第二获取模块,配置为获取第二数据请求,其中,第二数据请求用于向数据源服务器请求目标数据;第二丢弃模块,配置为将第二数据请求丢弃。
[0094] 可选地,上述装置还包括:第二发送模块,配置为在将目标数据请求发送给数据源服务器之后、且在数据源服务器获取到目标数据请求所请求的目标数据之后,将目标数据请求通过代理服务器发送给数据源服务器;第三获取模块,配置为获取代理服务器从数据源服务器接收到的目标数据。
[0095] 可选地,第二发送模块包括:接收单元,配置为在将目标数据请求发送给数据源服务器之后,接收到通知消息,其中,通知消息用于表示数据源服务器已获取到目标数据请求所请求的目标数据;发送单元,配置为响应通知消息将目标数据请求通过代理服务器发送给数据源服务器。
[0096] 根据本申请的另一个实施例,还提供了一种数据请求的处理系统,用于执行上述任一方法实施例。图6是本申请实施例的一种可选的数据请求的处理系统的结构框图,图7是本申请实施例的数据请求处理方法的交互流程图,如图6和图7所示,该系统包括:
[0097] 逻辑服务器62,配置为获取客户端60发送的目标数据请求,并将目标数据请求发送给中间服务器64;
[0098] 中间服务器64,配置为将目标数据请求发送给数据源服务器66,其中,中间服务器64包括缩量服务器640、消息队列642和流控服务器644,缩量服务器640将接收到的数据请求进行合并去重后发送给消息队列642,消息队列642按照优先级顺序对数据请求进行优先级排列,并丢弃超过预设阈值数量的数据请求,流控服务器644按照时间周期从消息队列的队首取出指定数量的数据请求,发送给数据源服务器66;
[0099] 数据源服务器66,配置为从游戏数据服务器68获取目标数据请求所请求的目标数据;
[0100] 逻辑服务器62还配置为,在中间服务器64将目标数据发送给数据源服务器66之后,向代理服务器70发送目标数据请求;
[0101] 代理服务器70,配置为将目标数据请求发送给数据源服务器66,接收从数据源服务器66返回的目标数据,将接收到的目标数据发送给逻辑服务器62;
[0102] 逻辑服务器62还配置为,向客户端60发送目标数据。
[0103] 图8是根据本申请实施例图7的中间服务器内部的流程交互图,如图8所示,中间服务器64包括缩量服务器640、消息队列642和流控服务器644,缩量服务器640将接收到的数据请求进行合并去重后发送给消息队列642,消息队列642按照优先级顺序对数据请求进行优先级排列,并丢弃超过预设阈值数量的数据请求,流控服务器644按照时间周期从消息队列的队首取出指定数量的数据请求,发送给数据源服务器66。
[0104] 通过缩量服务器、消息队列和流控服务器对数据请求的层层处理,保证了数据源服务器接收到的数据请求不会因业务量暴增而导致服务器崩溃,避免了数据源服务器发送到游戏数据服务器的数据请求给游戏数据服务器造成过大的压力,有效解决了用户量增加或业务高峰期时,调用游戏数据过于频繁导致对游戏数据服务器造成过大压力的问题。
[0105] 根据本发明实施例的又一个方面,还提供了一种用于实施上述媒体文件查找方法的电子装置,上述电子装置可以但不限于应用于上述图1所示的服务器112中。如图9所示,该电子装置包括存储器902和处理器904,该存储器902中存储有计算机程序,该处理器904被设置为通过计算机程序执行上述任一项方法实施例中的步骤。
[0106] 可选地,在本实施例中,上述电子装置可以位于计算机网络的多个网络设备中的至少一个网络设备。
[0107] 可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
[0108] S1,在中间服务器上接收目标数据请求;
[0109] S2,在中间服务器上将目标数据请求写入第一消息队列,其中,第一消息队列中包括待发送给数据源服务器的数据请求,第一消息队列中的数据请求被设置为按照发送周期从第一消息队列中取出并发送给数据源服务器,每个发送周期从第一消息队列中取出的数据请求的数量相同;
[0110] S3,在到达目标发送周期时从第一消息队列中取出包括目标数据请求在内的多个数据请求,并将包括目标数据请求在内的多个数据请求发送给数据源服务器,以通知数据源服务器获取多个数据请求所请求的目标数据。
[0111] 可选地,本领域普通技术人员可以理解,图9所示的结构仅为示意,电子装置也可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌上电脑以及移动互联网设备(Mobile Internet Devices,MID)、PAD等终端设备。图9其并不对上述电子装置的结构造成限定。例如,电子装置还可包括比图9中所示更多或者更少的组件(如网络接口等),或者具有与图9所示不同的配置。
[0112] 其中,存储器902可用于存储软件程序以及模块,如本发明实施例中的数据请求的处理方法和装置对应的程序指令/模块,处理器904通过运行存储在存储器902内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的数据请求的处理方法。存储器902可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器902可进一步包括相对于处理器904远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。其中,存储器902具体可以但不限于用于储存目标数据请求所请求的数据。作为一种示例,如图9所示,上述存储器902中可以但不限于包括上述数据请求的处理装置中的接收模块50、第一写入模块52、取出模块54及第一发送模块56。此外,还可以包括但不限于上述数据请求的处理装置中的其他模块单元,本示例中不再赘述。
[0113] 可选地,上述的传输装置906用于经由一个网络接收或者发送数据。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输装置906包括一个网络适配器(Network Interface Controller,NIC),其可通过网线与其他网络设备与路由器相连从而可与互联网或局域网进行通讯。在一个实例中,传输装置906为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
[0114] 此外,上述电子装置还包括:显示器908,用于显示各个媒体文件;和连接总线910,用于连接上述电子装置中的各个模块部件。
[0115] 本发明的实施例还提供了一种存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
[0116] 可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的计算机程序:
[0117] S1,在中间服务器上接收目标数据请求;
[0118] S2,在中间服务器上将目标数据请求写入第一消息队列,其中,第一消息队列中包括待发送给数据源服务器的数据请求,第一消息队列中的数据请求被设置为按照发送周期从第一消息队列中取出并发送给数据源服务器,每个发送周期从第一消息队列中取出的数据请求的数量相同;
[0119] S3,在到达目标发送周期时从第一消息队列中取出包括目标数据请求在内的多个数据请求,并将包括目标数据请求在内的多个数据请求发送给数据源服务器,以通知数据源服务器获取多个数据请求所请求的目标数据。
[0120] 可选地,存储介质还被设置为存储用于执行上述实施例中的方法中所包括的步骤的计算机程序,本实施例中对此不再赘述。
[0121] 可选地,在本实施例中,本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(Random Access Memory,RAM)、磁盘或光盘等。
[0122] 上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
[0123] 上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。
[0124] 在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
[0125] 在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
[0126] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0127] 另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0128] 以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。