云游戏服务的排队调度方法、装置、设备和存储介质与流程
本申请涉及计算机技术领域,具体而言,本申请涉及一种云游戏服务的排队调度方法、装置、设备和存储介质。
背景技术:
云游戏是将原本运行在用户端的游戏实例移到云端服务器上运行,用户端只是通过网络将用户端的操作实时传输到云端服务器,使得云端服务器的游戏实例响应于上述操作,并将游戏的运行结果实时传输至用户端,在用户端上呈现出画面和声音。在云游戏的实现中,首先需要完成云端服务器的服务资源调度。由于游戏实例实际上是通过云端服务器上运行的游戏服务组件((gameservice,gs),也称为游戏服务端)来向用户端提供云游戏服务的,所以服务资源调度就是为用户调度一个可用的gs。
云端服务器的服务资源调度方式主要有:一、云端服务器根据各gs的负载情况,挑选出一个可用gs调度给用户端;二、在用户端的显示界面上列出各gs的负载情况和网络质量,让用户自行挑选其中一个gs进行连接。无论是哪种服务资源调度方式,都可能出现云端服务器处于满负载状态,而无法为用户端调度到可用gs的情况。
目前,针对无法为用户端调度到可用gs的情况的处理方式为:提示用户服务资源调度失败或直接结束云游戏,用户体验较差。
技术实现要素:
本申请的目的旨在至少能解决上述的技术缺陷之一,特提出以下技术方案:
第一方面,提供了一种云游戏服务的排队调度方法,该方法应用于用户端,所述用户端向中心服务端发送云游戏请求后,所述中心服务端选择的各区域服务端均未调度到游戏服务端,该方法包括:
接收所述中心服务端发送的云游戏响应,所述云游戏响应中包括用于排队的至少一个区域服务端信息和所述云游戏请求的请求标识;
基于所述至少一个区域服务端信息,与对应的至少一个区域服务端建立连接,并将排队调度请求发送给建立连接的各区域服务端,所述排队调度请求中包括所述请求标识;
接收建立连接的各区域服务端发送的排队调度信息,所述排队调度信息包括位置更新信息或游戏服务端信息;
确定各所述排队调度信息为位置更新信息后,更新对应的排队位置;或者,确定各所述排队调度信息中包含游戏服务端信息后,选择一个游戏服务端信息,并与选择的游戏服务端信息对应的游戏服务端建立连接。
在一些实施例中,所述与对应的至少一个区域服务端建立连接后,与建立连接的各区域服务端保持连接状态,接收建立连接的各所述区域服务端发送的所述排队调度信息。
在一些实施例中,定时与对应的至少一个区域服务端建立连接,且在接收到对应的区域服务端的排队调度信息后断开连接。
在一些实施例中,所述选择一个游戏服务端信息后,所述方法还包括:
向建立连接的各区域服务端发送退出排队请求,所述退出排队请求用于指示区域服务端将所述请求标识移出对应的排队队列。
第二方面,提供了一种云游戏服务调度的交互方法,该方法应用于中心服务端,所述中心服务端接收用户端发送的云游戏请求后,所述中心服务端选择的各区域服务端均未调度到游戏服务端,其中,所述云游戏请求包括渠道标识,该方法包括:
生成所述云游戏请求的请求标识;
基于所述云游戏请求中的渠道标识选择用于排队的至少一个区域服务端;
获取所述至少一个区域服务端的区域服务端信息;
向所述用户端发送云游戏响应,所述云游戏响应中包括用于排队的至少一个区域服务端信息和所述请求标识。
在一些实施例中,所述基于所述云游戏请求中的渠道标识选择用于排队的至少一个区域服务端包括:
选择至少一个区域服务端,所述至少一个区域服务端具有排队功能,且所述至少一个区域服务端的渠道标识均与所述云游戏请求中的渠道标识相同。
在一些实施例中,所述基于所述云游戏请求中包含的渠道标识选择用于排队的至少一个区域服务端包括:
对满足预设条件的区域服务端进行第一选择,所述预设条件为区域服务端具有排队功能,且所述区域服务端的渠道标识与所述云游戏请求中的渠道标识相同;
基于所述用户端的地域信息和运营商信息,对所述第一选择的结果进行优先级排序;
基于所述优先级排序进行第二选择,得到至少一个区域服务端。
第三方面,提供了一种云游戏服务调度的交互方法,该方法应用于区域服务端,所述区域服务端被中心服务端选择而进行游戏服务端的调度,且所述区域服务端未调度到游戏服务端,且所述区域服务端具有排队功能且维护一个排队队列,该方法包括:
与所述用户端建立连接,并接收所述用户端发送的排队调度请求,所述排队调度请求中包括云游戏请求的请求标识;
基于所述请求标识和所述排队队列,确定所述用户端的排队位置,其中,所述排队队列是不同请求标识排成的序列;
基于所述请求标识和所述排队位置,调度一个游戏服务端,并基于调度结果生成排队调度信息,所述排队调度信息包括所述请求标识在所述排队队列中的位置更新信息或调度到的游戏服务端的游戏服务端信息;
发送所述排队调度信息至所述用户端。
在一些实施例中,所述方法还包括:
对所述排队队列进行循环调度。
在一些实施例中,所述方法还包括:
针对所述排队队列中的任一请求标识,若调度到游戏服务端,则将对应的请求标识从所述排队队列中删除。
在一些实施例中,所述方法还包括:
接收所述用户端发送的退出排队请求后,将所述用户端对应的请求标识从所述排队队列中删除。
第四方面,提供了一种云游戏服务调度的交互装置,该装置配置于用户端,所述用户端向中心服务端发送云游戏请求后,所述中心服务端选择的各区域服务端均未调度到游戏服务端,该装置包括:
云游戏响应接收模块,用于接收所述中心服务端发送的云游戏响应,所述云游戏响应中包括用于排队的至少一个区域服务端信息和所述云游戏请求的请求标识;
区域服务端连接模块,用于基于所述至少一个区域服务端信息,与对应的至少一个区域服务端建立连接,并将排队调度请求发送给建立连接的各区域服务端,所述排队调度请求中包括所述请求标识;
排队调度信息接收模块,用于接收建立连接的各区域服务端发送的排队调度信息,所述排队调度信息包括位置更新信息或游戏服务端信息;
排队位置更新模块,用于确定各所述排队调度信息为位置更新信息后,更新对应的排队位置;
游戏服务端连接模块,用于确定各所述排队调度信息中包含游戏服务端信息后,选择一个游戏服务端信息,并与选择的游戏服务端信息对应的游戏服务端建立连接。
在一些实施例中,区域服务端连接模块还用于:
所述与对应的至少一个区域服务端建立连接后,与建立连接的各区域服务端保持连接状态。
在一些实施例中,区域服务端连接模块还用于:
定时与对应的至少一个区域服务端建立连接;
相应地,该装置还包括连接断开模块,用于:
在接收到对应的区域服务端的排队调度信息后断开连接。
在一些实施例中,该装置还包括退出排队请求发送模块,用于:
所述选择一个游戏服务端信息后,向建立连接的各区域服务端发送退出排队请求,所述退出排队请求用于指示区域服务端将所述请求标识移出对应的排队队列。
第五方面,提供了一种云游戏服务调度的交互装置,该装置配置于中心服务端,所述中心服务端接收用户端发送的云游戏请求后,所述中心服务端选择的各区域服务端均未调度到游戏服务端,其中,所述云游戏请求包括渠道标识,该装置包括:
请求标识生成模块,用于生成所述云游戏请求的请求标识;
区域服务端选择模块,用于基于所述云游戏请求中的渠道标识选择用于排队的至少一个区域服务端;
区域服务端信息获取模块,用于获取所述至少一个区域服务端的区域服务端信息;
云游戏响应发送模块,用于向所述用户端发送云游戏响应,所述云游戏响应中包括用于排队的至少一个区域服务端信息和所述请求标识。
在一些实施例中,区域服务端选择模块具体用于:
选择至少一个区域服务端,所述至少一个区域服务端具有排队功能,且所述至少一个区域服务端的渠道标识均与所述云游戏请求中的渠道标识相同。
在一些实施例中,区域服务端选择模块具体用于:
对满足预设条件的区域服务端进行第一选择,所述预设条件为区域服务端具有排队功能,且所述区域服务端的渠道标识与所述云游戏请求中的渠道标识相同;
基于所述用户端的地域信息和运营商信息,对所述第一选择的结果进行优先级排序;
基于所述优先级排序进行第二选择,得到至少一个区域服务端。
第六方面,提供了一种云游戏服务调度的交互装置,该装置配置于区域服务端,所述区域服务端被中心服务端选择而进行游戏服务端的调度,且所述区域服务端未调度到游戏服务端,且所述区域服务端具有排队功能且维护一个排队队列,该装置包括:
排队调度请求接收模块,用于与所述用户端建立连接,并接收所述用户端发送的排队调度请求,所述排队调度请求中包括云游戏请求的请求标识;
排队位置确定模块,用于基于所述请求标识和所述排队队列,确定所述用户端的排队位置,其中,所述排队队列是不同请求标识排成的序列;
排队调度信息生成模块,用于基于所述请求标识和所述排队位置,调度一个游戏服务端,并基于调度结果生成排队调度信息,所述排队调度信息包括所述请求标识在所述排队队列中的位置更新信息或调度到的游戏服务端的游戏服务端信息;
排队调度信息发送模块,用于发送所述排队调度信息至所述用户端。
在一些实施例中,该装置还包括循环调度模块,用于:
对所述排队队列进行循环调度。
在一些实施例中,该装置还包括请求标识删除模块,用于:
针对所述排队队列中的任一请求标识,若调度到游戏服务端,则将对应的请求标识从所述排队队列中删除。
在一些实施例中,请求标识删除模块还用于:
接收所述用户端发送的退出排队请求后,将所述用户端对应的请求标识从所述排队队列中删除。
第七方面,提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,该处理器执行计算机程序时实现上述的云游戏服务的排队调度方法中的任一实施例。
第八方面,提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述的云游戏服务的排队调度方法中的任一实施例。
本申请实施例提供的云游戏服务的排队调度方法,在中心服务端选择的各区域服务端均未调度到游戏服务端的情况下,用户端接收中心服务端发送的云游戏响应,该云游戏响应包含具有排队功能的至少一个区域服务端信息和云游戏请求的请求标识;然后,与各区域服务端信息对应的区域服务端建立连接,并发送包含上述请求标识的排队调度请求至各连接的区域服务端;之后,接收各区域服务端发送的排队调度信息,并基于该排队调度信息更新用户端的排队位置,或者基于该排队调度信息选择一个游戏服务端信息,且与选择的游戏服务端信息对应的游戏服务端建立连接。实现了在云游戏的服务调度过程中,以排队调度的方式持续为用户端调度游戏服务端,不仅能够避免直接提示用户调度失败或者退出云游戏而导致的用户频繁操作云游戏连接的过程,而且能够使用户及时获知其服务调度的排队进度,提升用户体验。
本申请附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本申请的实践了解到。
附图说明
本申请上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为本申请实施例提供的一种云游戏网络架构示意图;
图2为本申请实施例提供的一种云端服务器的框图;
图3为本申请实施例提供的一种配置于用户端的云游戏服务的排队调度装置的框图;
图4为本申请实施例提供的一种配置于中心服务端的云游戏服务的排队调度装置的框图;
图5为本申请实施例提供的一种配置于区域服务端的云游戏服务的排队调度装置的框图;
图6为本申请实施例提供的一种云游戏服务的排队调度的交互流程图;
图7为本申请实施例提供的一种电子设备的框图;
图8为本申请实施例提供的一种应用于用户端的云游戏服务的排队调度方法流程图;
图9为本申请实施例提供的一种应用于中心服务端的云游戏服务的排队调度方法流程图;
图10为本申请实施例提供的一种应用于区域服务端的云游戏服务的排队调度方法流程图。
具体实施方式
下面详细描述本申请的实施例,实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本申请,而不能解释为对本申请的限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“”和“该”也可包括复数形式。应该进一步理解的是,本申请的说明书中使用的措辞“包括”是指存在特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。这里使用的诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。为使本申请的目的、技术方案和优点更加清楚,下面将结合附图,对本申请的实施例进行描述。
下面的各实施例中将涉及到如下所说明的主要名词:
中心服务端:即业务服务组件(businessservice,bs),可以理解为云端服务器的服务资源调度过程中的全局调度服务端,其对应于云游戏的整体云端服务资源,至少用于提供云端服务器的外部访问入口,以及管理云端服务器内部的各区域服务端。
区域服务端:即区域服务组件(domainservice,ds),可以理解为服务资源调度过程中的局部调度服务端,其对应于云游戏的局部区域的云端服务资源,至少用于管理该区域服务端对应的区域或游戏渠道下辖的一个或多个游戏服务端。这里的游戏渠道是用以区分用户获取和使用云游戏的不同途径,例如用户端设备所属出厂商(如不同手机品牌商等)就可以是/属于某一渠道。全网可以有多个区域服务端ds。
游戏服务端:即游戏服务组件(gameservice,gs),其用于控制游戏实例,为用户端提供云游戏服务。游戏服务端由其所属的区域服务端管理。
目前用户请求调度云游戏的游戏服务端gs时,若没有可用的gs能够调度,那么用户端只能向用户反馈调度失败或退出云游戏的结果,用户只能频繁发送调度请求,用户体验差。针对该问题,本申请实施例提供一种云游戏服务的排队调度方案,实现在云端服务器为用户端调度游戏服务端gs的过程中,以排队调度的方式持续为用户端调度游戏服务端,避免用户频繁操作云游戏连接的过程,并且能够使用户及时获知服务调度的排队进度,提升用户体验。
在一些实施例中,本申请实施例提供的云游戏服务的排队调度方案,可应用于云游戏网络中。图1为本申请实施例提供的一种云游戏网络架构。如图1所示,云游戏网络架构可包括:多个用户端、一个或多个云端服务器100以及其他云游戏服务所涉及的设备。在一些实施例中,用户端和云端服务器100之间通过网络进行数据交互,网络可以为4g网络、5g网络及其他用于数据交互的网络。
其中,用户端(useragent,ua)可以是能够访问云端服务器100的任意设备,例如可以是安装有用于访问云端服务器100的软件的任意设备,其中,用于访问云端服务器100的软件也可以理解为用户端的软件实现。在一些实施例中,用户端可包括但不限于:瘦客户端、通用计算机、专用计算机、游戏控制台、个人计算机、膝上型计算机、平板计算设备、移动计算设备、便携式游戏设备、蜂窝电话、智能手机、头戴式显示器、智能可穿戴设备、机顶盒、流媒体接口/设备、智能电视或联网显示器等。在一些实施例中,用户端至少用于访问云端服务器100的云游戏,接收用户输入的游戏操作,并生成相应的操作指令,进而将操作指令上传到云端服务器100。用户可通过用户端访问云端服务器100的云游戏列表,选择需要调度服务资源的云游戏。在一些实施例中,当有多个云端服务器100时,该多个云端服务器100分布于不同地区,用户通过用户端访问用户所在地区对应的云端服务器100。
其中,云端服务器100可以是能够运行云游戏程序的任意设备,例如可以是安装有云游戏程序以及提供云游戏服务的软件的任意设备,这里的提供云游戏服务的软件也可以理解为云端服务器100的软件实现。在一些实例中,云端服务器100可以是单个服务器,也可以是服务器集群。在一些实施例中,云端服务器100可以是远程服务器、虚拟计算机、云游戏服务器、云应用服务器、远程应用服务器、数字媒体服务器、用于提供游戏开发者/游戏赞助商店面(storefront)的服务器、网站服务器、终端服务器、控制台服务器等。
在一些实施例中,云游戏服务商可以将云游戏部署在云游戏服务集群中,云游戏服务集群的节点服务器上可以运行有云游戏程序,图1中所示的多个云端服务器100属于云游戏服务器集群。本实施例中,用户可以通过用户端访问云端服务器100,并由其为用户端调度用户所在地区对应的节点服务器登录云游戏,以及用户在用户端上进行游戏操作,从而用户端可以将相应的操作指令上传到节点服务器。之后,节点服务器可以基于云游戏程序的执行逻辑,结合操作指令计算并生成游戏画面,然后将游戏画面反馈给用户端进行显示。
在一些实施例中,用户端通过网络向云端服务器100发送云游戏请求。云端服务器100接收到云游戏请求后,可以根据云游戏请求来为用户端调度合适的游戏服务端gs,并将调度的游戏服务端gs的信息通过网络反馈至用户端,以便用户端与该游戏服务端gs建立连接。在一些实施例中,调度到的游戏服务端gs至少用于操控云游戏、编码云游戏的视频帧和音频帧、以及将编码的视频帧和音频帧流式传输到用户端以用于渲染和用户交互。
图2为本申请实施例提供的一种云端服务器200的框图。在一些实施例中,云端服务器200可以实现为图1中的云端服务器100或者云端服务器100的一部分,用于提供云游戏服务,例如运行云游戏程序。
如图2所示,云端服务器200可以划分为多个具有不同功能的服务端,例如可包括:中心服务端201、区域服务端202、游戏服务端203以及其他云游戏服务所涉及的服务端。其中,云端服务器200中有一个或多个中心服务端201,每个中心服务端201管理一个或多个区域服务端202,每个区域服务端202管理一个或多个游戏服务端203。
中心服务端201用于接收用户端发送至云端服务器200的云游戏请求;并且,用于管理云端服务器200内部的各区域服务端202。在一些实施例中,中心服务端201中维护其管理的各区域服务端202的服务端信息和状态信息。在一些实施例中,中心服务端201可以是多个。本实施例中,可以在多个中心服务端201与用户端之间添加一级负载均衡lbs服务器,lbs是现有成熟的技术方案,它能很好的完成从多个中心服务端201中选择一个合适的,最终为用户端提供调度服务。并且,所有区域服务端202的服务端信息和状态信息都可以即时地被同步和保存至云端的同一数据库,从而多个中心服务端201均可同时从此数据库中获取这些区域服务端202的服务端信息和状态信息,以达到多个中心服务器端201对这些区域服务端202的并行调度和管理。在一些实施例中,中心服务端201维护的区域服务端202的服务端信息包括但不限于该区域服务端支持的游戏渠道的渠道标识、游戏标识、以及该区域服务端对应的区域信息和运营商信息。这里的渠道标识是能够唯一表征一个渠道的信息;游戏标识是一个云游戏的唯一表征。在一些实施例中,中心服务端201可以为软件装置、硬件装置或者软硬件结合的装置。
在一些实施例中,区域服务端202可以对应一个区域或多个游戏渠道,而一个游戏渠道也可以对应多个区域服务端202。在一些实施例中,区域服务端202会在启动前(通过运维系统或人员)配置其支持的游戏渠道的渠道标识、其所属区域的区域信息和其对应的运营商信息、以及其支持的云游戏的游戏标识列表,并在(被运维系统或人员)启动时注册及上报上述ds信息和状态信息到中心服务端201。在一些实施例中,区域服务端202中维护其管理的各游戏服务端203的服务端信息和状态信息,从而可以为用户端调度游戏服务端203。在一些实施例中,区域服务端202维护的游戏服务端203的服务端信息包括但不限于:该游戏服务端支持的游戏渠道的渠道标识、其所支持的云游戏的游戏标识列表、其所属区域的区域信息和其对应的运营商信息;状态信息包括该游戏服务端是空闲还是占用。在一些实施例中,区域服务端202可以为软件装置、硬件装置或者软硬件结合的装置。
游戏服务端203用于控制游戏实例,为用户端提供云端服务资源来操控云游戏、编码云游戏的视频帧和音频帧、以及将编码的视频帧和音频帧流式传输到云游戏客户端以用于渲染和用户交互。在一些实施例中,游戏服务端203至少用于获取云游戏客户端上传的操作指令,并基于云游戏程序的执行逻辑,结合操作指令计算并生成游戏画面,然后将游戏画面反馈给云游戏客户端进行显示。在一些实施例中,游戏服务端203会在启动前(通过运维系统或人员)配置其所属的区域服务端202、其支持的游戏渠道的渠道标识、其所属区域的区域信息和其对应的运营商信息、以及其支持的云游戏的游戏标识列表,并在(被运维系统或人员)启动时注册及上报上述gs信息和状态信息到所属的区域服务端202。在一些实施例中,游戏服务端203可以为软件装置、硬件装置或者软硬件结合的装置。
图3为本申请实施例提供的一种配置于用户端的云游戏服务的排队调度装置300的框图。在一些实施例中,配置于用户端的云游戏服务的排队调度装置300可以实现为图1中的用户端或者用户端的一部分。
如图3所示,配置于用户端的云游戏服务的排队调度装置300可包括但不限于以下模块:云游戏响应接收模块301、区域服务端连接模块302、排队调度信息接收模块303、排队位置更新模块304和游戏服务端连接模块305。各模块具体描述如下:
云游戏响应接收模块301,用于接收中心服务端发送的云游戏响应,该云游戏响应中包括用于排队的至少一个区域服务端信息和云游戏请求的请求标识。具体地,用户端ua向中心服务端bs发送云游戏请求后,bs基于该云游戏请求未找到可用的游戏服务端gs的情况下,启动排队调度策略,则云游戏响应接收模块301接收到bs返回的云游戏响应中便包括但不限于:用于为ua排队调度gs的至少一个区域服务端ds信息,以及该ua的该次云游戏请求的请求标识。可以理解的是,该至少一个ds信息对应的各ds具有排队功能。其中,ds信息是描述相应ds的相关信息,例如可以是ds标识、ds所支持的渠道列表、ds对应的排队队列等。云游戏请求的请求标识是bs为云游戏请求而生成的、全局唯一的请求标识。在一些实施例中,任一ua的任一次云游戏请求的相关信息均以其请求标识为关键字来存储至数据库,这里云游戏请求的相关信息包括但不限于:该请求标识、与各端连接的会话标识、ua标识、ua的ip地址、ua选择的云游戏的渠道标识、游戏标识、以及ua的地域信息和运营商信息等。后续过程中,ds针对ua的某一请求标识来为该ua进行排队调度。
在一些实施例中,如果云游戏请求中指定了要连接的gs,而bs确定该gs的状态为非空闲或异常,那么bs确定未找到可用的gs。在一些实施例中,云游戏请求中未指定gs,而是请求bs调度任一可用的gs,那么在bs选择的各ds均未调度到可用的gs时,bs确定未找到可用的gs。
在一些实施例中,若云游戏响应接收模块301接收到的云游戏响应中包含的是空信息,说明bs未选择到用于排队的ds,此时ua需要退出云游戏服务的排队调度流程,并给予用户无法进行排队调度的提示信息。
区域服务端连接模块302,用于基于至少一个区域服务端信息,与对应的至少一个区域服务端建立连接,并将排队调度请求发送给建立连接的各区域服务端。具体地,区域服务端连接模块302依据云游戏响应中的至少一个ds信息来确定各ds;然后,ua与各确定的ds建立连接;之后,区域服务端连接模块302将排队调度请求发送给每个建立连接的ds,以使相应ds为该ua进行排队调度gs。其中,排队调度请求是触发ds基于上述请求标识进行排队调度gs的请求,其至少包含上述请求标识。在一些实施例中,发送排队调度请求的方式可以是调用预先设置的ds调度接口,也可以是将获取最新的排队位置的请求作为排队调度请求来向ds发送。
在一些实施例中,区域服务端连接模块302在ua与各确定的ds建立连接后,确保ua与建立连接的各ds保持连接状态。本实施例中,ua与各ds之间建立长连接,ua与相应ds实时通信。本实施例中,区域服务端连接模块302只需要在长连接建立后发送一次排队调度请求,各ds可以根据该排队调度请求主动进行定时调度。
在一些实施例中,区域服务端连接模块302中监测定时周期,如果定时周期到达,则ua与对应的至少一个ds建立连接。本实施例中,ua与各ds之间建立短连接,ua与相应ds只有在短连接建立后才能通信。那么,区域服务端连接模块302在每次短连接建立后,均需要发送排队调度请求至相应ds,而各ds只能在每次短连接建立后向ua反馈排队调度信息。本实施例中,配置于用户端的云游戏服务的排队调度装置300还包括连接断开模块,该连接断开模块在确定排队调度信息接收模块303接收到对应的ds的排队调度信息后,断开ua与相应ds之间的连接。
排队调度信息接收模块303,用于接收建立连接的各区域服务端发送的排队调度信息,该排队调度信息包括位置更新信息或游戏服务端信息。具体地,各排队调度的ds接收到区域服务端连接模块302发送的排队调度请求后,便会为该ua排队调度gs,并在满足一定的条件时向ua发送排队调度信息,则排队调度信息接收模块303可以接收到各ds返回的排队调度信息。如果ds为ua调度到gs,那么排队调度信息便为gs信息。如果ds没有为ua调度到gs,那么排队调度信息便为位置更新信息,位置更新信息为所述请求标识的位置更新信息。
排队位置更新模块304,用于确定各排队调度信息为位置更新信息后,更新对应的排队位置。具体地,排队位置更新模块304在检测到接收的各排队调度信息中均没有gs信息时,只要接收到位置更新信息(一个或多个),便利用该位置更新信息来更新该ua在相应ds中的排队位置。在一些实施例中,ua可以显示排队位置,例如显示排队位置最靠前的ds信息及其排队位置,又如显示所有ds信息及在相应ds中的排队位置。
游戏服务端连接模块305,用于确定各排队调度信息中包含游戏服务端信息后,选择一个游戏服务端信息,并与选择的游戏服务端信息对应的游戏服务端建立连接。具体地,游戏服务端连接模块305若检测到排队调度信息接收模块303接收到的各排队调度信息中包含有至少一个gs信息,那么选择出一个gs信息;然后,ua与该选择的gs信息对应的gs建立连接来运行云游戏。在一些实施例中,游戏服务端连接模块305可以随机选择一个gs信息。在一些实施例中,游戏服务端连接模块305可以根据ua发送的云游戏请求中的相关信息来选择gs信息。例如,选择gs信息中的渠道标识和云游戏请求中的渠道标识相同的gs信息。又如,在选择渠道标识相同的gs信息的基础上,再根据ua的地域信息和gs信息中的地域信息是否相同、和/或ua的运营商信息和gs信息中的运营商信息是否相同,确定选择的gs信息的优先级及其排序,最后选择优先级最高的gs信息,以确保调度到网络质量最优的gs。
在一些实施例中,针对gs信息与云游戏请求,如果两者的地域信息和运营商信息均相同,则优先级为最高的第一优先级;如果两者中只有地域信息或运营商信息相同,则优先级为中等的第二优先级;如果两者的地域信息和运营商信息均不同,则优先级为最低的第三优先级。在另一些实施例中,针对地域信息和运营商信息只有一个相同的情况,进一步将运营商信息相同的优先级确定为相对较高的第四优先级,而将地域信息相同的优先级确定为相对较低的第五优先级。可以理解的是,第一优先级、第四优先级、第五优先级和第三优先级依次降低。
在一些实施例中,配置于用户端的云游戏服务的排队调度装置300还包括退出排队请求发送模块,用于在确定游戏服务端连接模块305选择了一个gs信息后,向建立连接的各ds发送退出排队请求。具体地,如果ua已经确定了要与某一gs建立连接(即选择了gs信息),那么为了节约资源和避免调度错误,各ds便无需再为该ua排队调度,此时退出排队请求发送模块便向上述各个建立(过)连接的ds发送退出排队请求,该退出排队请求用于指示相应ds将该ua对应的上述云游戏请求的请求标识移出对应的排队队列。需要说明的是,每个用于排队的ds中均维护有一个排队队列,该排队队列是由不同的请求标识排成的序列。具体实施时,某一ds中的排队队列是按该ds接收到各ua发送的排队调度请求的先后顺序,将与该排队队列中原有的各请求标识不重复的请求标识添加到队尾形成的一个列表。
在一些实施例中,退出排队请求发送模块还用于在任一时刻向任一建立连接的ds发出退出排队请求。例如,用户不想等待而触发了主动退出排队操作,那么退出排队请求发送模块便向所有建立连接的ds(或用户选定的ds)发送退出排队请求。又如,退出排队请求发送模块检测到某些ds排队进度过慢时,也可以向相应ds发送退出排队请求。
图4为本申请实施例提供的一种配置于中心服务端的云游戏服务的排队调度装置400的框图。在一些实施例中,配置于中心服务端的云游戏服务的排队调度装置400可以实现为图2中的中心服务端201或者中心服务端201的一部分。
如图4所示,配置于中心服务端的云游戏服务的排队调度装置400可包括但不限于以下模块:请求标识生成模块401、区域服务端选择模块402、区域服务端信息获取模块403和云游戏响应发送模块404。各模块具体描述如下:
请求标识生成模块401,用于在接收到ua发送的云游戏请求后,生成该云游戏请求的请求标识。该云游戏请求中至少包含ua选择的云游戏的渠道标识。
区域服务端选择模块402,用于基于云游戏请求中的渠道标识选择用于排队的至少一个区域服务端。具体地,在bs初次为云游戏请求确定调度的gs,但未找到可用gs的情况下,bs要执行排队调度策略。那么,区域服务端选择模块402就要从bs管辖的各ds中选择至少一个ds,这些选择的ds用于为ua进行排队调度gs,并且这些ds的ds信息中的渠道标识与云游戏请求中的渠道标识相同。其中,配置于中心服务端的云游戏服务的排队调度装置400中维护有其管辖的各ds的ds信息,该ds信息中至少包含相应ds支持的各渠道标识。
在一些实施例中,区域服务端选择模块402选择至少一个ds时,首先需要从所有的ds中筛选出具有排队功能的ds。然后,从具有排队功能的各ds中选择ds信息中渠道标识与云游戏请求中的渠道标识相同的一个或多个ds。对于ds是否具有排队功能的确定方式,在一些实施例中,可以是bs管理的各ds信息中包含是否具有排队功能的属性,区域服务端选择模块402通过查询该属性的值来确定相应ds是否具有排队功能;在另一些实施例中,可以是ds启动后向bs上报其是否具有排队功能,区域服务端选择模块402根据上报结果来确定相应ds是否具有排队功能。
在一些实施例中,区域服务端选择模块402选择ds的过程可以是:对满足预设条件的ds进行第一选择,该预设条件为ds具有排队功能,且ds的渠道标识与云游戏请求中的渠道标识相同;基于ua的地域信息和运营商信息,对第一选择的结果进行优先级排序;基于优先级排序进行第二选择,得到至少一个ds。具体地,区域服务端选择模块402首先以具有排队功能、且ds信息中的渠道标识与云游戏请求中的渠道标识相同为目标,从各ds中选择(即第一选择)一个或多个ds。然后,根据ua的地域信息和ds信息中的地域信息是否相同、和/或ua的运营商信息和ds信息中的运营商信息是否相同,确定每个ds的优先级,并按照优先级对各选择的ds排序。该过程可参见游戏服务端连接模块305中的优先级确定过程。最后,按照服务调度的业务需求(如需求的最低优先级、需求的最少ds数量等),从上述选择的各ds中再次选择(即第二选择)ds,得到所需的至少一个ds。这样能够选择与ua的地域和运营商匹配的ds,提升调度的ds的适配性。
在一些实施例中,如果区域服务端选择模块402根据上述任一过程无法选择到ds,那么就将空信息作为bs对ua发送的云游戏请求的云游戏响应。
区域服务端信息获取模块403,用于获取至少一个区域服务端的区域服务端信息。具体地,在区域服务端选择模块402选择了至少一个ds后,区域服务端信息获取模块403需要从bs管理ds的相关数据库中获取这些选择的ds的ds信息。这些获取的ds信息便作为bs对ua发送的云游戏请求的云游戏响应。
云游戏响应发送模块404,用于将上述确定的云游戏响应发送至ua。在一些实施例中,该云游戏响应中包含的是空信息,该空信息用于指示ua结束排队调度流程。在一些实施例中,该云游戏响应中包含用于排队的至少一个ds信息和请求标识。该ds信息用于指示ua与相应ds建连,该请求标识将作为ua发送排队调度请求时携带的信息,以便ds根据该请求标识来查询云游戏请求的相关信息。
图5为本申请实施例提供的一种配置于区域服务端的云游戏服务的排队调度装置500的框图。在一些实施例中,配置于区域服务端的云游戏服务的排队调度装置500可以实现为图2中的区域服务端202或者区域服务端202的一部分。本申请实施例中的ds被bs选择而进行gs的调度,但该ds未调度到gs,并且该ds具有排队功能,其内部维护有一个排队队列。这里的排队队列是不同请求标识排成的序列。
如图5所示,配置于区域服务端的云游戏服务的排队调度装置500可包括但不限于以下模块:排队调度请求接收模块501、排队位置确定模块502、排队调度信息生成模块503和排队调度信息发送模块504。各模块具体描述如下:
排队调度请求接收模块501,用于在ds与ua建立连接后,接收ua发送的排队调度请求,该排队调度请求中包括云游戏请求的请求标识。
排队位置确定模块502,用于基于请求标识和排队队列,确定ua的排队位置。具体地,排队位置确定模块502先判断该请求标识与排队队列中已有的请求标识是否重复。如果重复,则将排队队列中相同的请求标识所在的位置确定为该ua的排队位置。如果排队队列中没有相同的请求标识,那么就将该请求标识添加到排队队列的队尾,该队尾位置便为该ua的排队位置。
排队调度信息生成模块503,用于基于请求标识和排队位置,调度一个gs,并基于调度结果生成排队调度信息。具体地,排队调度信息生成模块503若判断该请求标识的排队位置为排队队列的第一个,那么就为该ua调度一个gs。若调度到gs,则将该gs的gs信息作为排队调度信息。若没有调度到gs,则将该请求标识在排队队列中的位置更新信息作为排队调度信息。在一些实施例中,排队调度信息生成模块503若判断该请求标识的排队位置不为排队队列的第一个,那么即便为其调度到gs,也不会将该gs的gs信息作为排队调度信息,而是将位置更新信息作为排队调度信息。其中,上述gs信息是从ds管辖的各gs的gs信息中确定。位置更新信息包括但不限于:请求标识在排队队列中当前的排队位置、还需等待的时长估值、已等待的时长、队列长度等。
在一些实施例中,排队调度信息生成模块503为ua调度一个gs的过程为:根据该请求标识来查找上述云游戏请求中的渠道标识、游戏标识、ua的地域信息和运营商信息等相关信息。然后,按照查询到的信息和ds管辖的各gs的gs信息,从各gs中选择一个gs。例如,选择gs信息中的渠道标识与云游戏请求中的渠道标识相同、并且gs信息中的游戏标识列表中包含有云游戏请求中的游戏标识的gs,确保选择的gs能够运行用户选择的云游戏。然后,从选择出的各gs中再次选择gs信息中的状态信息为空闲的gs,确保有可用负载。最后,从选择出的多个gs中随机选择一个gs。又如,在上述按照渠道标识、游戏标识和空闲的状态信息选择的结果的基础上,可以进一步根据ua的地域信息和运营商信息、以及每个gs的地域信息和运营商信息,确定每个选择出的gs的优先级及其排序。该过程可参见游戏服务端连接模块305中的优先级确定过程。最后,选择优先级最高的一个gs。这样ds能够为ua调度最优的gs。
在一些实施例中,配置于区域服务端的云游戏服务的排队调度装置500还包括循环调度模块,用于:对排队队列进行循环调度。本实施例中,只要排队队列中还有未调度到gs的请求标识,循环调度模块就会触发ds定时、循环式地为排队队列中的每个请求标识来调度gs。只要请求标识处于排队队列中,ds就会为其循环调度gs。该循环调度的过程与是否接收到排队队列中的请求标识对应的ua发送的排队调度请求无关,与该排队队列中的某一请求标识是否已经调度到gs无关,也与ds和ua之间的长连接、短连接等通信方式无关。
排队调度信息发送模块504,用于发送排队调度信息至ua。
在一些实施例中,ds与ua之间建立的是短连接。本实施例中,虽然ds会为每个请求标识循环调度,但是在ua未与ds建连时,排队调度信息发送模块504无法将调度到的gs的gs信息或者位置更新信息及时发送至ua。如果gs信息无法发送至ua,则该可用gs会继续参与后续请求标识的调度,直至排队队列首位的请求标识对应的ua与ds建连,且ds为其调度到gs,则完成一个请求标识的排队调度,并更新排队列表。虽然短连接的排队调度方式会增加一些不必要的通讯开销和ds资源的浪费,但是其仍然能够自动地、持续地为ua排队调度gs。
在一些实施例中,ds与ua之间建立的是长连接。本实施例中,在ds为排队队列循环调度的过程中,只要为相应ua调度到gs,排队调度信息发送模块504就可以及时地将包含该gs的gs信息的排队调度信息发送至该ua,使ua能及时与gs建连;或者,只要ua对应的请求标识在排队队列中的位置有更新,排队调度信息发送模块504就可以及时地将包含该ua对应的最新的位置更新信息的排队调度信息发送至ua,使ua及时更新排队位置,提升用户体验。本实施例中,排队调度信息发送模块504还可以控制向ua发送排队调度信息的频率,从而优化整个排队队列连接的网络和系统资源的消耗。
在一些实施例中,配置于区域服务端的云游戏服务的排队调度装置500还包括请求标识删除模块,用于:针对排队队列中的任一请求标识,若调度到gs,则将对应的请求标识从排队队列中删除。具体地,请求标识删除模块在检测到排队调度信息生成模块503为某一请求标识调度到gs时,便将该请求标识从排队列表中删除,避免重复排队造成的云端资源浪费。
在一些实施例中,请求标识删除模块还用于:接收ua发送的退出排队请求后,将ua对应的请求标识从排队队列中删除。具体地,请求标识删除模块除了主动删除请求标识之外,还可以被动接收ua发送的退出排队请求,进而将该ua对应的请求标识从排队队列中删除。
在一些实施例中,ds与ua之间建立长连接的情况下,ds可以通过长连接即时检测ua的活跃状态。如果某一ua在排队调度过程中退出,那么请求标识删除模块可以将该ua对应的请求标识从排队队列中删除,避免无效的排队调度过程,减少云端资源的浪费。
在一些实施例中,无论请求标识删除模块是因何种原因而从排队队列中删除某一请求标识,该删除操作都会引起排队队列中其他请求标识的排队位置有更新,那么排队调度信息生成模块503需要为其他请求标识来生成包含位置更新信息(即其他请求标识的位置更新信息)的排队调度信息,且排队调度信息发送模块504则将该排队调度信息发送至相应ua。
图6为本申请实施例提供的一种云游戏服务的排队调度的交互流程图。在一些实施例中,云游戏服务的排队调度的交互流程可以基于图1中的云游戏网络架构和图2中的云游戏服务端200来实现。该交互流程中的执行主体至少包括用户端ua、中心服务端201和区域服务端202,该交互流程包括以下步骤601至610:
601、用户端向中心服务端201发送云游戏请求。该云游戏请求中至少包含ua选择的云游戏的渠道标识、游戏标识、以及ua的地域信息和运营商信息。
602、中心服务端201生成云游戏请求的请求标识,并且在未找到可用的游戏服务端时,基于云游戏请求中的渠道标识选择用于排队的至少一个区域服务端202。
603、中心服务端201获取至少一个区域服务端202的区域服务端信息。
604、中心服务端201向用户端发送云游戏响应。该云游戏响应中包括用于排队的至少一个区域服务端信息和请求标识。
605、用户端基于至少一个区域服务端信息,与对应的至少一个区域服务端202建立连接,并将排队调度请求发送给建立连接的各区域服务端202,该排队调度请求中包括请求标识。这里用户端与区域服务端202之间建立的连接可以是长连接(保持连接)或短连接(一次通讯后需断开连接)。
606、区域服务端202基于请求标识和其内维护的排队队列,确定用户端的排队位置,并基于请求标识和排队位置,调度一个游戏服务端203,且基于调度结果生成排队调度信息。该排队调度信息包括上述请求标识在排队队列中的位置更新信息或调度到的游戏服务端203的游戏服务端信息。
607、区域服务端202发送排队调度信息至用户端。
608、若步骤605中用户端与区域服务端202之间建立的是短连接,则断开上述连接。
609、用户端确定各排队调度信息为位置更新信息后,更新对应的排队位置。
610、用户端确定各排队调度信息中包含游戏服务端信息后,选择一个游戏服务端信息,并与选择的游戏服务端信息对应的游戏服务端203建立连接。
本申请实施例提供了一种电子设备,如图7所示,图7所示的电子设备700包括:处理器701和存储器703。其中,处理器701和存储器703相连,如通过总线702相连。进一步地,电子设备700还可以包括收发器704。需要说明的是,实际应用中收发器704不限于一个,该电子设备700的结构并不构成对本申请实施例的限定。
其中,处理器701应用于本申请实施例中,用于实现图3所示的配置于用户端的云游戏服务的排队调度装置的功能,或用于实现图4所示的配置于中心服务端的云游戏服务的排队调度装置的功能,或用于实现图5所示的配置于区域服务端的云游戏服务的排队调度装置的功能。
处理器701可以是cpu,通用处理器,dsp,asic,fpga或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器701也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,dsp和微处理器的组合等。
总线702可包括一通路,在上述组件之间传送信息。总线702可以是pci总线或eisa总线等。总线702可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器703可以是rom或可存储静态信息和指令的其他类型的静态存储设备,ram或者可存储信息和指令的其他类型的动态存储设备,也可以是eeprom、cd-rom或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。
存储器703用于存储执行本申请方案的应用程序代码,并由处理器701来控制执行。处理器701用于执行存储器703中存储的应用程序代码,以实现图3所示的配置于用户端的云游戏服务的排队调度装置的动作,或实现图4所示的配置于中心服务端的云游戏服务的排队调度装置的动作,或实现图5所示的配置于区域服务端的云游戏服务的排队调度装置的动作。
本申请实施例提供的电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时,与现有技术相比,可实现:在中心服务端选择的各区域服务端均未调度到游戏服务端的情况下,用户端接收中心服务端发送的云游戏响应,该云游戏响应包含具有排队功能的至少一个区域服务端信息和云游戏请求的请求标识;然后,与各区域服务端信息对应的区域服务端建立连接,并发送包含上述请求标识的排队调度请求至各连接的区域服务端;之后,接收各区域服务端发送的排队调度信息,并基于该排队调度信息更新用户端的排队位置,或者基于该排队调度信息选择一个游戏服务端信息,且与选择的游戏服务端信息对应的游戏服务端建立连接。实现了在云游戏的服务调度过程中,以排队调度的方式持续为用户端调度游戏服务端,不仅能够避免直接提示用户调度失败或者退出云游戏而导致的用户频繁操作云游戏连接的过程,而且能够使用户及时获知其服务调度的排队进度,提升用户体验。
本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该程序被处理器执行时实现云游戏服务的排队调度方法各实施例的步骤。与现有技术相比,在中心服务端选择的各区域服务端均未调度到游戏服务端的情况下,用户端接收中心服务端发送的云游戏响应,该云游戏响应包含具有排队功能的至少一个区域服务端信息和云游戏请求的请求标识;然后,与各区域服务端信息对应的区域服务端建立连接,并发送包含上述请求标识的排队调度请求至各连接的区域服务端;之后,接收各区域服务端发送的排队调度信息,并基于该排队调度信息更新用户端的排队位置,或者基于该排队调度信息选择一个游戏服务端信息,且与选择的游戏服务端信息对应的游戏服务端建立连接。实现了在云游戏的服务调度过程中,以排队调度的方式持续为用户端调度游戏服务端,不仅能够避免直接提示用户调度失败或者退出云游戏而导致的用户频繁操作云游戏连接的过程,而且能够使用户及时获知其服务调度的排队进度,提升用户体验。
图8为本申请实施例提供的一种应用于用户端的云游戏服务的排队调度方法的流程图。该方法的执行主体为用户端ua,ua向中心服务端bs发送云游戏请求后,该bs选择的各区域服务端ds均未调度到游戏服务端gs,该方法包括以下步骤801至805:
801、接收中心服务端发送的云游戏响应,该云游戏响应中包括用于排队的至少一个区域服务端信息和云游戏请求的请求标识。
具体地,ua向bs发送云游戏请求后,bs基于该云游戏请求未找到可用的gs的情况下,启动排队调度策略,则ua接收到bs返回的云游戏响应中便包括但不限于:用于为ua排队调度gs的至少一个区域服务端ds信息,以及该ua的该次云游戏请求的请求标识。可以理解的是,该至少一个ds信息对应的各ds具有排队功能。其中,ds信息是描述相应ds的相关信息,例如可以是ds标识、ds所支持的渠道列表、ds对应的排队队列等。云游戏请求的请求标识是bs为云游戏请求而生成的、全局唯一的请求标识。在一些实施例中,任一ua的任一次云游戏请求的相关信息均以其请求标识为关键字来存储至数据库,这里云游戏请求的相关信息包括但不限于:该请求标识、与各端连接的会话标识、ua标识、ua的ip地址、ua选择的云游戏的渠道标识、游戏标识、以及ua的地域信息和运营商信息等。后续过程中,ds针对ua的某一请求标识来为该ua进行排队调度。
在一些实施例中,如果云游戏请求中指定了要连接的gs,而bs确定该gs的状态为非空闲或异常,那么bs确定未找到可用的gs。在一些实施例中,云游戏请求中未指定gs,而是请求bs调度任一可用的gs,那么在bs选择的各ds均未调度到可用的gs时,bs确定未找到可用的gs。
在一些实施例中,若接收到的云游戏响应中包含的是空信息,说明bs未选择到用于排队的ds,此时ua需要退出云游戏服务的排队调度流程,并给予用户无法进行排队调度的提示信息。
802、基于至少一个区域服务端信息,与对应的至少一个区域服务端建立连接,并将排队调度请求发送给建立连接的各区域服务端,该排队调度请求中包括请求标识。
具体地,ua依据云游戏响应中的至少一个ds信息来确定各ds;然后,ua与各确定的ds建立连接;之后,ua将排队调度请求发送给每个建立连接的ds,以使相应ds为该ua进行排队调度gs。其中,排队调度请求是触发ds基于上述请求标识进行排队调度gs的请求,其至少包含上述请求标识。在一些实施例中,发送排队调度请求的方式可以是调用预先设置的ds调度接口,也可以是将获取最新的排队位置的请求作为排队调度请求来向ds发送。
在一些实施例中,在ua与各确定的ds建立连接后,ua与建立连接的各ds保持连接状态。本实施例中,ua与各ds之间建立长连接,ua与相应ds实时通信。本实施例中,ua只需要在长连接建立后发送一次排队调度请求,各ds可以根据该排队调度请求主动进行定时调度。
在一些实施例中,ua监测定时周期,如果定时周期到达,则ua与对应的至少一个ds建立连接。本实施例中,ua与各ds之间建立短连接,ua与相应ds只有在短连接建立后才能通信。那么,在每次短连接建立后,ua均需要发送排队调度请求至相应ds,而各ds只能在每次短连接建立后向ua反馈排队调度信息。相应地,在接收到对应的ds的排队调度信息后,ua断开其与相应ds之间的连接。
803、接收建立连接的各区域服务端发送的排队调度信息,该排队调度信息包括位置更新信息或游戏服务端信息。
具体地,各排队调度的ds接收到ua发送的排队调度请求后,便会为该ua排队调度gs,并在满足一定的条件时向ua发送排队调度信息,则ua可以接收到各ds返回的排队调度信息。如果ds为ua调度到gs,那么排队调度信息便为gs信息。如果ds没有为ua调度到gs,那么排队调度信息便为位置更新信息。
804、确定各排队调度信息为位置更新信息后,更新对应的排队位置。
具体地,ua在检测到接收的各排队调度信息中均没有gs信息时,只要接收到位置更新信息(一个或多个),便利用该位置更新信息来更新该ua在相应ds中的排队位置。在一些实施例中,ua可以显示排队位置,例如显示排队位置最靠前的ds信息及其排队位置,又如显示所有ds信息及在相应ds中的排队位置。
805、确定各排队调度信息中包含游戏服务端信息后,选择一个游戏服务端信息,并与选择的游戏服务端信息对应的游戏服务端建立连接。
具体地,若ua检测到接收到的各排队调度信息中包含有至少一个gs信息,那么选择出一个gs信息;然后,ua与该选择的gs信息对应的gs建立连接来运行云游戏。
在一些实施例中,ua可以随机选择一个gs信息。在一些实施例中,ua可以根据ua发送的云游戏请求中的相关信息来选择gs信息。例如,选择gs信息中的渠道标识和云游戏请求中的渠道标识相同的gs信息。又如,在选择渠道标识相同的gs信息的基础上,再根据ua的地域信息和gs信息中的地域信息是否相同、和/或ua的运营商信息和gs信息中的运营商信息是否相同,确定选择的gs信息的优先级及其排序,最后选择优先级最高的gs信息,以确保调度到网络质量最优的gs。
在一些实施例中,针对gs信息与云游戏请求,如果两者的地域信息和运营商信息均相同,则优先级为最高的第一优先级;如果两者中只有地域信息或运营商信息相同,则优先级为中等的第二优先级;如果两者的地域信息和运营商信息均不同,则优先级为最低的第三优先级。在另一些实施例中,针对地域信息和运营商信息只有一个相同的情况,进一步将运营商信息相同的优先级确定为相对较高的第四优先级,而将地域信息相同的优先级确定为相对较低的第五优先级。可以理解的是,第一优先级、第四优先级、第五优先级和第三优先级依次降低。
在一些实施例中,上述方法还包括:在选择一个游戏服务端信息后,向建立连接的各ds发送退出排队请求。具体地,如果ua已经确定了要与某一gs建立连接(即选择了gs信息),那么为了节约资源和避免调度错误,各ds便无需再为该ua排队调度,此时ua向上述各个建立(过)连接的ds发送退出排队请求,该退出排队请求用于指示相应ds将该ua对应的上述云游戏请求的请求标识移出对应的排队队列。需要说明的是,每个用于排队的ds中均维护有一个排队队列,该排队队列是由不同的请求标识排成的序列。具体实施时,某一ds中的排队队列是按该ds接收到各ua发送的排队调度请求的先后顺序,将与该排队队列中原有的各请求标识不重复的请求标识添加到队尾形成的一个列表。
在一些实施例中,ua可以在任一时刻向任一建立连接的ds发出退出排队请求。例如,用户不想等待而触发了主动退出排队操作,那么ua便向所有建立连接的ds(或用户选定的ds)发送退出排队请求。又如,ua检测到某些ds排队进度过慢时,也可以向相应ds发送退出排队请求。
图9为本申请实施例提供的一种应用于中心服务端的云游戏服务的排队调度方法的流程图。该方法的执行主体为中心服务端bs,该bs接收用户端ua发送的云游戏请求后,其选择的各区域服务端ds均未调度到游戏服务端gs,该方法包括以下步骤901至904:
901、生成云游戏请求的请求标识。
具体地,bs在接收到ua发送的云游戏请求后,生成该云游戏请求的请求标识。该云游戏请求中至少包含ua选择的云游戏的渠道标识。
902、基于云游戏请求中的渠道标识选择用于排队的至少一个区域服务端。
具体地,在bs初次为云游戏请求确定调度的gs,但未找到可用gs的情况下,bs要执行排队调度策略。那么,bs从其管辖的各ds中选择至少一个ds,这些选择的ds用于为ua进行排队调度gs,并且这些ds的ds信息中的渠道标识与云游戏请求中的渠道标识相同。其中,bs中维护有其管辖的各ds的ds信息,该ds信息中至少包含相应ds支持的各渠道标识。
在一些实施例中,bs选择至少一个ds时,首先需要从所有的ds中筛选出具有排队功能的ds。然后,从具有排队功能的各ds中选择ds信息中渠道标识与云游戏请求中的渠道标识相同的一个或多个ds。对于ds是否具有排队功能的确定方式,在一些实施例中,可以是bs管理的各ds信息中包含是否具有排队功能的属性,bs通过查询该属性的值来确定相应ds是否具有排队功能;在另一些实施例中,可以是ds启动后向bs上报其是否具有排队功能,bs根据上报结果来确定相应ds是否具有排队功能。
在一些实施例中,bs选择ds的过程可以是:对满足预设条件的ds进行第一选择,该预设条件为ds具有排队功能,且ds的渠道标识与云游戏请求中的渠道标识相同;基于ua的地域信息和运营商信息,对第一选择的结果进行优先级排序;基于优先级排序进行第二选择,得到至少一个ds。具体地,bs首先以具有排队功能、且ds信息中的渠道标识与云游戏请求中的渠道标识相同为目标,从各ds中选择(即第一选择)一个或多个ds。然后,根据ua的地域信息和ds信息中的地域信息是否相同、和/或ua的运营商信息和ds信息中的运营商信息是否相同,确定每个ds的优先级,并按照优先级对各选择的ds排序。该过程可参见上述各实施例中的优先级确定过程。最后,按照服务调度的业务需求(如需求的最低优先级、需求的最少ds数量等),从上述选择的各ds中再次选择(即第二选择)ds,得到所需的至少一个ds。这样能够选择与ua的地域和运营商匹配的ds,提升调度的ds的适配性。
在一些实施例中,如果bs根据上述任一过程无法选择到ds,那么就将空信息作为对ua发送的云游戏请求的云游戏响应。
903、获取至少一个区域服务端的区域服务端信息。
具体地,在选择了至少一个ds后,bs需要从其管理ds的相关数据库中获取这些选择的ds的ds信息。这些获取的ds信息便作为对ua发送的云游戏请求的云游戏响应。
904、向用户端发送云游戏响应,该云游戏响应中包括用于排队的至少一个区域服务端信息和请求标识。
在一些实施例中,该云游戏响应中包含的是空信息,该空信息用于指示ua结束排队调度流程。在一些实施例中,该云游戏响应中包含用于排队的至少一个ds信息和请求标识。该ds信息用于指示ua与相应ds建连,该请求标识将作为ua发送排队调度请求时携带的信息,以便ds根据该请求标识来查询云游戏请求的相关信息。
图10为本申请实施例提供的一种应用于区域服务端的云游戏服务的排队调度方法的流程图。该方法的执行主体为区域服务端ds,该ds被bs选择而进行gs的调度,但该ds未调度到gs,并且该ds具有排队功能,其内部维护有一个排队队列。这里的排队队列是不同请求标识排成的序列。该方法包括以下步骤1001至1004:
1001、与用户端建立连接,并接收用户端发送的排队调度请求,该排队调度请求中包括云游戏请求的请求标识。
1002、基于请求标识和排队队列,确定用户端的排队位置,该排队队列是不同请求标识排成的序列。
具体地,ds先判断该请求标识与排队队列中已有的请求标识是否重复。如果重复,则将排队队列中相同的请求标识所在的位置确定为该ua的排队位置。如果排队队列中没有相同的请求标识,那么就将该请求标识添加到排队队列的队尾,该队尾位置便为该ua的排队位置。
1003、基于请求标识和排队位置,调度一个游戏服务端,并基于调度结果生成排队调度信息,该排队调度信息包括请求标识在排队队列中的位置更新信息或调度到的游戏服务端的游戏服务端信息。
具体地,若ds判断该请求标识的排队位置为排队队列的第一个,那么就为该ua调度一个gs。若调度到gs,则将该gs的gs信息作为排队调度信息。若没有调度到gs,则将该请求标识在排队队列中的位置更新信息作为排队调度信息。在一些实施例中,若ds判断该请求标识的排队位置不为排队队列的第一个,那么即便为其调度到gs,也不会将该gs的gs信息作为排队调度信息,而是将位置更新信息作为排队调度信息。其中,上述gs信息是从ds管辖的各gs的gs信息中确定。位置更新信息包括但不限于:请求标识在排队队列中当前的排队位置、还需等待的时长估值、已等待的时长、队列长度等。
在一些实施例中,ds为ua调度一个gs的过程为:根据该请求标识来查找上述云游戏请求中的渠道标识、游戏标识、ua的地域信息和运营商信息等相关信息。然后,按照查询到的信息和ds管辖的各gs的gs信息,从各gs中选择一个gs。例如,选择gs信息中的渠道标识与云游戏请求中的渠道标识相同、并且gs信息中的游戏标识列表中包含有云游戏请求中的游戏标识的gs,确保选择的gs能够运行用户选择的云游戏。然后,从选择出的各gs中再次选择gs信息中的状态信息为空闲的gs,确保有可用负载。最后,从选择出的多个gs中随机选择一个gs。又如,在上述按照渠道标识、游戏标识和空闲的状态信息选择的结果的基础上,可以进一步根据ua的地域信息和运营商信息、以及每个gs的地域信息和运营商信息,确定每个选择出的gs的优先级及其排序。该过程可参见上述各实施例中的优先级确定过程。最后,选择优先级最高的一个gs。这样ds能够为ua调度最优的gs。
在一些实施例中,上述方法还包括:对排队队列进行循环调度。本实施例中,只要排队队列中还有未调度到gs的请求标识,ds便会定时、循环式地为排队队列中的每个请求标识来调度gs。只要请求标识处于排队队列中,ds就会为其循环调度gs。该循环调度的过程与是否接收到排队队列中的请求标识对应的ua发送的排队调度请求无关,与该排队队列中的某一请求标识是否已经调度到gs无关,也与ds和ua之间的长连接、短连接等通信方式无关。
1004、发送排队调度信息至用户端。
在一些实施例中,ds与ua之间建立的是短连接。本实施例中,虽然ds会为每个请求标识循环调度,但是在ua未与ds建连时,ds无法将调度到的gs的gs信息或者位置更新信息及时发送至ua。如果gs信息无法发送至ua,则该可用gs会继续参与后续请求标识的调度,直至排队队列首位的请求标识对应的ua与ds建连,且ds为其调度到gs,则完成一个请求标识的排队调度,并更新排队列表。虽然短连接的排队调度方式会增加一些不必要的通讯开销和ds资源的浪费,但是其仍然能够自动地、持续地为ua排队调度gs。
在一些实施例中,ds与ua之间建立的是长连接。本实施例中,在ds为排队队列循环调度的过程中,只要为相应ua调度到gs,ds就可以及时地将包含该gs的gs信息的排队调度信息发送至该ua,使ua能及时与gs建连;或者,只要ua对应的请求标识在排队队列中的位置有更新,ds就可以及时地将包含该ua对应的最新的位置更新信息的排队调度信息发送至ua,使ua及时更新排队位置,提升用户体验。本实施例中,ds还可以控制向ua发送排队调度信息的频率,从而优化整个排队队列连接的网络和系统资源的消耗。
在一些实施例中,上述方法还包括:针对排队队列中的任一请求标识,若调度到gs,则将对应的请求标识从排队队列中删除。具体地,ds在为某一请求标识调度到gs时,便将该请求标识从排队列表中删除,避免重复排队造成的云端资源浪费。
在一些实施例中,上述方法还包括:接收ua发送的退出排队请求后,将ua对应的请求标识从排队队列中删除。具体地,ds除了主动删除请求标识之外,还可以被动接收ua发送的退出排队请求,进而将该ua对应的请求标识从排队队列中删除。
在一些实施例中,ds与ua之间建立长连接的情况下,ds可以通过长连接即时检测ua的活跃状态。如果某一ua在排队调度过程中退出,那么ds可以将该ua对应的请求标识从排队队列中删除,避免无效的排队调度过程,减少云端资源的浪费。
在一些实施例中,无论ds是因何种原因而从排队队列中删除某一请求标识,该删除操作都会引起排队队列中其他请求标识的排队位置有更新,那么ds需要为其他请求标识来生成包含位置更新信息的排队调度信息,且将该排队调度信息发送至相应ua,以便各ua可以及时更新其排队位置。
应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。例如,图6中的步骤608视情况可以不执行,也可以在步骤609或步骤610之后执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
以上所述仅是本申请的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
起点商标作为专业知识产权交易平台,可以帮助大家解决很多问题,如果大家想要了解更多知产交易信息请点击 【在线咨询】或添加微信 【19522093243】与客服一对一沟通,为大家解决相关问题。
此文章来源于网络,如有侵权,请联系删除