CN106953756B - 一种业务数据的模拟延时方法以及服务器 - Google Patents
一种业务数据的模拟延时方法以及服务器 Download PDFInfo
- Publication number
- CN106953756B CN106953756B CN201710161474.8A CN201710161474A CN106953756B CN 106953756 B CN106953756 B CN 106953756B CN 201710161474 A CN201710161474 A CN 201710161474A CN 106953756 B CN106953756 B CN 106953756B
- Authority
- CN
- China
- Prior art keywords
- service
- delay
- processing
- client
- packet
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/14—Network analysis or design
- H04L41/145—Network analysis or design involving simulating, designing, planning or modelling of a network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0803—Configuration setting
Abstract
本发明实施例公开了一种业务数据的模拟延时方法,包括:接收客户端发送的业务处理请求;若所述业务处理请求中包含业务模拟参数,则根据所述业务模拟参数确定为所述客户端配置的目标处理时延;若接收到所述客户端发送的业务数据包,则根据所述目标处理时延对所述业务数据包进行延时处理。本发明实施例还提供一种服务器。本发明实施例无需考虑客户端的数量以及操作系统,在服务器侧就能实现模拟网络波动,从而解决了第三方软件与客户端操作系统无法兼容的问题,并且不再依赖于第三方软件的部署,以此提升了方案的实用性。
Description
技术领域
本发明涉及互联网技术领域,尤其涉及一种业务数据的模拟延时方法以及服务器。
背景技术
在业务开发的过程中,经常面对的一个难题是,开发环境是低延迟、低波动并且网络条件非常好的内网,但是实际运营环境下,面临的是高延迟、高波动且复杂的网络情况。很多功能在内网调试中通过,但是在不稳定的外网中问题才会暴露出来。
目前,通常在客户端采用第三方软件模拟网络波动,以达到不稳定外网的网络条件,请参阅图1,图1为现有方案中通过第三方软件模拟网络波动的拓扑图,通过在客户端上安装第三方软件引入虚拟驱动技术,调整客户端上网卡的行为,以实现网络延迟及波动的效果。
然而,采用第三方软件模拟网络波动,客户端的数量及操作系统会影响第三方软件的部署难度,如果客户端数量较多,则需要同时在各个客户端上分别部署第三方软件,且需要考虑第三方软件与客户端操作系统的兼容问题,这将导致第三方软件的部署难度加大,从而降低了方案的实用性。
发明内容
本发明实施例提供了一种业务数据的模拟延时方法以及服务器,无需考虑客户端的数量以及操作系统,在服务器侧就能实现模拟网络波动,从而解决了第三方软件与客户端操作系统无法兼容的问题,并且不再依赖于第三方软件的部署,以此提升了方案的实用性。
有鉴于此,本发明第一方面提供了业务数据的模拟延时方法,包括:
接收客户端发送的业务处理请求;
若所述业务处理请求中包含业务模拟参数,则根据所述业务模拟参数确定为所述客户端配置的目标处理时延;
若接收到所述客户端发送的业务数据包,则根据所述目标处理时延对所述业务数据包进行延时处理。
本发明第二方面提供了一种服务器,包括:
接收模块,用于接收客户端发送的业务处理请求;
确定模块,用于若所述接收模块接收的所述业务处理请求中包含业务模拟参数,则根据所述业务模拟参数确定为所述客户端配置的目标处理时延;
延时模块,用于若接收到所述客户端发送的业务数据包,则根据所述确定模块确定的所述目标处理时延对所述业务数据包进行延时处理。
从以上技术方案可以看出,本发明实施例具有以下优点:
本发明实施例中,提供了一种业务数据的模拟延时方法,具体为服务器接收客户端发送的业务处理请求,若业务处理请求中包含业务模拟参数,则服务器根据业务模拟参数确定为客户端配置的目标处理时延,若服务器接收到客户端发送的业务数据包,则根据目标处理时延对业务数据包进行延时处理。通过上述方式,无需考虑客户端的数量以及操作系统,在服务器侧就能实现模拟网络波动,从而解决了第三方软件与客户端操作系统无法兼容的问题,并且不再依赖于第三方软件的部署,以此提升了方案的实用性。
附图说明
图1为现有方案中通过第三方软件模拟网络波动的拓扑图;
图2为本发明实施例中业务数据的模拟延时系统架构图;
图3为本发明实施例中业务数据的模拟延时方法一个交互实施例示意图;
图4为本发明实施例中业务数据的模拟延时方法一个实施例示意图;
图5为本发明应用场景中业务数据的模拟延时流程示意图;
图6为本发明实施例中服务器一个实施例示意图;
图7为本发明实施例中服务器另一个实施例示意图;
图8为本发明实施例中服务器另一个实施例示意图;
图9为本发明实施例中服务器另一个实施例示意图;
图10为本发明实施例中服务器另一个实施例示意图;
图11为本发明实施例中服务器另一个实施例示意图;
图12为本发明实施例中服务器另一个实施例示意图;
图13为本发明实施例中服务器一个结构示意图。
具体实施方式
本发明实施例提供了一种业务数据的模拟延时方法以及服务器,无需考虑客户端的数量以及操作系统,在服务器侧就能实现模拟网络波动,从而解决了第三方软件与客户端操作系统无法兼容的问题,并且不再依赖于第三方软件的部署,以此提升了方案的实用性。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
应理解,本发明主要应用于一种业务数据的模拟延时系统,请参阅图2,图2为本发明实施例中业务数据的模拟延时系统架构图,如图所示,本方案中在应用服务器的内部增加了一个网络模拟模块,也就构成了本发明所介绍的可以用于制造延时以及网络波动的服务器。需要说明的是,图2中的两个客户端仅为一个示意,在实际应用中,还可以是其他数量的客户端,此处不应理解为是对本发明的限定。
在客户端的操作系统中安装有应用客户端,其中,该应用具体可以为网络游戏(英文全称:Online Game),也就是指在线游戏,一般有多名玩家通过网络进行互动娱乐。更具体地,该Online Game还可以包括动作游戏(英文全称:Action Game)以及角色扮演游戏(英文全称:Role-Playing Game,英文缩写:RPG),Action Game是电子游戏中的一种,它强调玩家的反应能力和手眼配合,往往存在多个技能连续配合释放,形成连击形式的玩法,而RPG是另一种游戏类型,在游戏中,玩家扮演虚拟世界中的一个或者几个队员角色在特定场景下进行游戏。通常这类游戏都是由玩家扮演冒险者在游戏世界中漫游,而一路上的各种遭遇(例如战斗、交谈、会见重要人物等)则是玩家人物成长以及游戏进行的关键所在。
于是,应用客户端具体可以是网络游戏客户端,与网络游戏服务器相对应,网络游戏客户端是为玩家提供本地服务的程序,一般安装在普通的用户机上,需要与服务器互相配合运行,
应用服务器具体可以为网络游戏服务器,即与网络游戏客户端相对应,安装在互联网数据中心(英文全称:Internet Data Center,英文缩写:IDC)中,为网络游戏客户端提供数据转发与逻辑处理服务的软件程序。由于安装在玩家机器上的客户端容易被破解而被利用作弊,所以在网络游戏中,复杂与关键的逻辑都需要在网络游戏服务器上进行计算。
需要说明的是,在实际应用中,应用客户端与应用服务器也可以是其他类型的客户端以及服务器,此处仅为一个示意,并不构成对本发明方案的限定。
客户端通过网卡与服务器建立通信连接,其中,网卡是工作在链路层的网络组件,是局域网中连接计算机和传输介质的接口,不仅能实现与局域网传输介质之间的物理连接和电信号匹配,还涉及帧的发送与接收、帧的封装与拆封、介质访问控制、数据的编码与解码以及数据缓存的功能等。
应用服务器内部的网络模拟模块则是用于制造网络时延和网络波动的,能够模仿在外网条件下产生的网络波动。
应理解,本方案还可以应用于多种不同的操作系统中,例如视窗操作系统(英文全称:Windows)、苹果公司的移动操作系统(英文全称:iphone Operation System,英文缩写:iOS)以及安卓操作系统等,此处不做限定。
为了便于理解,请参阅图3,图3为本发明实施例中业务数据的模拟延时方法一个交互实施例示意图,如图所示,服务器和客户端将执行如下步骤:
步骤101,首先由客户端向服务器发送业务处理请求,该业务处理请求中可以包含业务模拟参数;
步骤102,服务器在收到业务处理请求后,解析得到业务模拟参数,然后根据业务模拟参数确定为该客户端所配置的目标处理时延;
步骤103,客户端下服务器发送业务数据包,其中,业务数据包是用于客户端向服务器传输业务数据的;
步骤104,服务器可以根据已经计算得到的目标处理延时对业务数据包进行延时处理,从而完成业务数据的模拟延时。
下面将从服务器的角度,对本发明中业务数据的模拟延时方法进行介绍,请参阅图4,本发明实施例中业务数据的模拟延时方法一个实施例包括:
201、接收客户端发送的业务处理请求;
本实施例中,首先,服务器接收到客户端发送的业务处理请求,其中,该业务处理请求用于触发服务器开始为客户端提供相应的业务。
具体地,业务处理请求可以为游戏管理员(英文全称:Game Master,英文缩写:GM)命令,GM命令是游戏中的内置特殊指令,通过这种指令可以实现正常途径无法访问的服务器功能。一般GM命令会限定只有在特殊环境下或者特殊权限的用户才能使用。
202、若业务处理请求中包含业务模拟参数,则根据业务模拟参数确定为客户端配置的目标处理时延;
本实施例中,在业务处理请求中还可以携带一些业务模拟参数,业务模拟参数可以包含但不仅限于基础延迟时间以及网络波动率。基础延迟时间是预先定义的一个基本时延值,在这个基本时延值的基础上还应考虑到网络波动的情况,网络波动一般在广域网会提到,是由于线路的不稳定,而导致出现时通时断或瞬断的现象。
网络波动会造成路由协议频繁进行计算,而这种变化要达到整个网络的路由统一,即达到路由收敛是需要一定时间的,在此期间路由选择是不准确的,造成网络传输受到影响,如果这种变化比较频繁,造成整个网络的较长时间的不稳定,就叫做网络波动。这个问题对整个网络的稳定是非常有害的,严重的时候会造成整个网络的瘫痪,尤其是在大型广域网络中,网络波动是会经常出现、不可避免的,这就需要路由协议对这种现象较好地处理,网络设计和调试人员,在设计和设备配置时,也可以采用多种技术,避免这种现象出现,提高网络的容错能力。
于是,服务器需要根据业务模拟参数来确定为客户端所配置的目标处理时延。
203、若接收到客户端发送的业务数据包,则根据目标处理时延对业务数据包进行延时处理。
本实施例中,当服务器接收到客户端发送的业务数据包时,可以根据在步骤202中计算得到的目标处理时延对业务数据包进行延时处理。以此完成对业务数据进行模拟延时的过程。
本发明实施例中,提供了一种业务数据的模拟延时方法,具体为服务器接收客户端发送的业务处理请求,若业务处理请求中包含业务模拟参数,则服务器根据业务模拟参数确定为客户端配置的目标处理时延,若服务器接收到客户端发送的业务数据包,则根据目标处理时延对业务数据包进行延时处理。通过上述方式,无需考虑客户端的数量以及操作系统,在服务器侧就能实现模拟网络波动,从而解决了第三方软件与客户端操作系统无法兼容的问题,并且不再依赖于第三方软件的部署,以此提升了方案的实用性。
可选地,在上述图4对应的实施例的基础上,本发明实施例提供的业务数据的模拟延时方法第一个可选实施例中,接收客户端发送的业务处理请求之后,还可以包括:
若业务处理请求中不包含业务模拟参数,则对业务数据包进行业务处理,业务处理不包含延时处理。
本实施例中,服务器在接收到客户端发送的业务处理请求之后,如果未解析得到业务模拟参数,说明本次的业务处理请求仅为指示客户端先服务器发送普通的业务数据包,而并不携带用于服务器进行模拟延时的业务模拟参数,于是服务器根据接收到的业务数据包进行普通处理。
具体地,业务处理有个过程,这个过程叫做业务处理周期,它包括五个步骤,分别为数据输入;业务处理;文件和数据库处理;文件和报告产生;查询处理活动。
第一步为数据输入,然后对输入的数据进行记录、编码和编辑,从而转换成实用的形式。数据输入的过程总是数据处理的一个瓶颈。如何快速准确的输入数据,仍然是一个很重要的问题。数据输入的方法有两种,一种是传统手工方法,一种是源数据自动化的方法。传统的数据输入方法依赖于计算机的终端用户由源文件获得数据,这些数据周期地送进计算机系统。
第二步为业务处理,业务处理可以分为批处理和实时处理,批处理是定期的周期性的收集源文件,然后进行成批处理。实时处理在处理业务时及时的处理完这笔业务,然后主文件已经进行了更新,因而这时的统计数据就反映现时的真实情况。实时处理也叫做联机处理(英文全称:Online Transaction Processing,英文缩写:OLTP)。
第三步为文件和数据库处理,业务处理程序中应包含维护数据库的程序,维护数据库需要保证它能准确反映业务现状,所以尽管数据库维护的技术已很发达,但它还要有一套很好的运行制度和良好的人员素质,才能保证数据库的真正合用。
第四步为文件和报告产生,这最后一个处理阶段是产生信息产品,也就是报告和文件。数据处理系统所产生的文件叫业务文件,业务文件有以下几种:行动文件(英文全称:Action Documents)用来启动接受行动的文件,信息文件(英文全称:InformationDocuments)用来确认业务已发生等。
第五步为查询处理活动,无论批处理和实时处理均可提供查询功能。由于信息技术(英文全称:Information Technology,英文缩写:IT)的技术的发达,现在越来越多的应用可以继续实时查询和远距离查询。
其次,本发明实施例中,在服务器接收到客户端发送的业务处理请求之后,如果检测请求中并不包含业务模拟参数,则直接对业务数据包进行处理,也就不需要对其进行延时操作。通过上述方式,可以对业务数据包进行常规处理,并非针对所有的业务数据包都进行延时处理,从而保证了方案在实现方式上的多样性,同时增强方案的实用性和灵活性。
可选地,在上述图4对应的实施例的基础上,本发明实施例提供的业务数据的模拟延时方法第二个可选实施例中,根据业务模拟参数确定为客户端配置的目标处理时延之后,还可以包括:
若未接收到客户端发送的业务数据包,则处于业务等待状态。
本实施例中,如果服务器业务模拟参数确定为客户端配置的目标处理时延之后,如果发现还未收到客户端发送的业务数据包时,则会继续处于等待的状态。
其次,本发明实施例中,服务器根据业务模拟参数确定为客户端配置的目标处理时延之后,如果暂时未接收到客户端发送的业务数据包,则会自动进入等待业务的状态。通过上述方式,即便服务器端已经计算得到了目标处理时延,也可以暂时搁置不进行处理,等待客户端发送的业务数据包之后才进行延时处理,从而提升了方案的实用性和可操作性。
可选地,在上述图4对应的实施例的基础上,本发明实施例提供的业务数据的模拟延时方法第三个可选实施例中,根据目标处理时延对业务数据包进行延时处理,可以包括:
将业务数据包中的至少一个业务子数据包加入至客户端所对应的延时队列;
根据目标处理时延,对延时队列中的每个业务子数据包依次进行延时处理。
本实施例中,服务器根据目标处理时延对业务数据包进行处理的具体步骤可以是,首先服务器将业务数据包中的至少一个业务子数据包加入至客户端所对应的延时队列,其中,业务数据包相当于是一个较大的概念,包括了多个业务子数据包,其每个业务子数据包对应于延时队列中的一个队列元素,也就是说,一个业务子数据包进入一个队列元素。
服务器再根据目标处理时延,对延时队列中的队列元素所对应的业务子数据包依次进行延时处理。
其次,本发明实施例中,在服务器根据目标处理时延对业务数据包进行延时处理的步骤中,首先服务器将业务数据包中的至少一个业务子数据包加入至客户端所对应的延时队列,然后根据目标处理时延,对延时队列中的每个业务子数据包依次进行延时处理。通过上述方式,实现对业务数据包进行延时处理的目的,采用目标处理时延对每个业务子数据包分别进行延时处理,以使得延时后的每个业务子数据包都能模拟网络延迟或网络波动的特点,从而提升方案的实用性。
可选地,在上述图4对应的第三个实施例的基础上,本发明实施例提供的业务数据的模拟延时方法第四个可选实施例中,根据目标处理时延,对延时队列中的每个业务子数据包依次进行延时处理,可以包括:
获取延时队列中的第一业务子数据包,第一业务子数据包为延时队列中第一个业务子数据包;
根据目标处理时延,对第一业务子数据包进行延时处理;
获取延时队列中的第二业务子数据包,其中,第二业务子数据包为第一业务子数据包之后相邻的一个业务子数据包;
根据目标处理时延,对第二业务子数据包进行延时处理。
本实施例中,将接收服务器如何根据目标处理时延对延时队列中的每个业务子数据包依次进行延时处理。
具体为,首先服务器从延时队列中获取队首的第一个业务子数据包,然后先利用计算得到的目标处理时延对第一个业务子数据包进行延时处理。接下来在获取延时队列中的第二个业务子数据包之前,仍利用业务模拟参数来计算第二个业务子数据包所对应的目标处理时延,于是采用目标处理时延对延时队列中的第二个业务子数据包进行延时处理。
以此类推,服务器对延时队列中的各个业务子数据包依次进行目标处理时延的计算,并且根据计算得到的目标处理时延各个业务子数据包依次进行延时处理。
再次,本发明实施例中,服务器在对延时队列中的每个业务子数据包依次进行延时处理的过程中,首先获取延时队列中的第一业务子数据包,然后对该第一业务子数据包进行延时处理,接着获取在紧跟在第一业务子数据包之后的第二业务子数据包,再对第二业务子数据包进行延迟处理。通过上述方式,可以了解到服务器在对延时队列中的各个业务子数据包进行处理时,是按照一定的次序进行的,而不是随机获取某个业务子数据包就对其进行处理,从而避免的延时处理中出现的时序混乱的情况,增强方案的实用性和可靠性。
可选地,在上述图4对应的第三个实施例的基础上,本发明实施例提供的业务数据的模拟延时方法第五个可选实施例中,将业务数据包中的至少一个业务子数据包加入至客户端所对应的延时队列之前,还可以包括:
若延时队列处于已写满状态,则获取延时队列中的第一业务子数据包,所述第一业务子数据包为延时队列中第一个业务子数据包;
对第一业务子数据包进行业务处理,业务处理不包含延时处理。
本实施例中,在服务器将业务数据包中的至少一个业务子数据包加入至客户端所对应的延时队列之前,可以先判断当期的延时队列是否被写满,如果已经写满,则服务器从延时队列中强制取得该延时队列中的第一个业务子数据包。
具体地,如果客户端发送的业务数据包速度猛然增快,而且设置的延时时间较长,这就会导致延时队列瞬间被写满,假设延时队列中仅能容纳十个业务子数据包,且分别对这十个业务子数据包进行标号,延时队列被写满后得到如下表1所示的结果:
表1
业务子数据包编号 | 在延时队列中的位置 |
业务子数据包1 | 第一个(队首) |
业务子数据包2 | 第二个 |
业务子数据包3 | 第三个 |
业务子数据包4 | 第四个 |
业务子数据包5 | 第五个 |
业务子数据包6 | 第六个 |
业务子数据包7 | 第七个 |
业务子数据包8 | 第八个 |
业务子数据包9 | 第九个 |
业务子数据包10 | 第十个(队尾) |
根据表1所示的内容可知,当前的延时队列已处于写满状态,这时候,服务器将直接强制按照顺序弹出延时队列中的第一个业务子数据包,即业务子数据包1,然后再插入一个新的业务子数据包到队尾,即业务子数据包11,于是延时队列如下表2所示:
表2
业务子数据包编号 | 在延时队列中的位置 |
业务子数据包2 | 第一个(队首) |
业务子数据包3 | 第二个 |
业务子数据包4 | 第三个 |
业务子数据包5 | 第四个 |
业务子数据包6 | 第五个 |
业务子数据包7 | 第六个 |
业务子数据包8 | 第七个 |
业务子数据包9 | 第八个 |
业务子数据包10 | 第九个 |
业务子数据包11 | 第十个(队尾) |
再次,本发明实施例中,将业务数据包中的至少一个业务子数据包加入至客户端所对应的延时队列之前,如果发现当前延时队列中已经塞不下更多的业务子数据包,则直接按照次序直接弹出延时队列头部的一个业务子数据包。并且不对该第一业务子数据包进行延时处理,而是直接进行相应的业务处理。通过上述方式,可以应用于一种边界情况,也就是当客户端上行的业务数据包发送速度猛然增快,而延时时间较长时,会导致延时队列很快被塞满,为了不废弃这些业务数据包,就可以不再对延时队列中的业务子数据包分别进行延时处理,从而保证了业务通信的合理性。
可选地,在上述图4对应的实施例的基础上,本发明实施例提供的业务数据的模拟延时方法第六个可选实施例中,根据业务模拟参数确定对业务数据包的目标处理时延,可以包括:
按照如下方式计算目标处理时延:
Tdelay=α+α×RAND(-β,β);
其中,Tdelay表示目标处理时延,α表示基础延迟时间,β表示网络波动率,RAND()表示区间内随机取值。
本实施例中,若业务处理请求中携带了业务模拟参数,那么还可以利用具体的公式来计算相应的目标处理时延。
具体为,若业务处理请求为GM命令,且GM命令定义为“/gm netsimu DELAY_MSCHURN_RATIO”,其中,DELAY_MS为基础延迟时间α,CHURN_RATIO为网络波动率β,执行GM命令后,即服务器接收到客户端发出的业务处理请求之后,即可知道目标处理时延Tdelay在如下范围内波动:Tdelay=DELAY_MS+DELAY_MS×RAND(-CHURN_RATIO,CHURN_RATIO)。
假设执行如下GM命令:
/gm netsimu 200 0.5
则最终网络延迟Tdelay=200+200×RAND(-0.5,0.5),即在100毫秒到300毫秒之间波动。
GM命令执行后,相关参数记录在对应连接的用户数据中,实现对每个客户端独立的网络波动模拟,这样可以做到在同一个服务器上进行测试的同时相互不影响。
其次,本发明实施例中,服务器在计算目标处理时延的过程中,将采用具体的计算公式来对其进行计算,从而有利于保证计算结果的可靠性,同时,也为方案的具体实现提供了合理的依据,以此提升方案的可行性。
为便于理解,下面可以以一个具体应用场景对本发明中对业务数据的模拟延时流程进行详细描述,具体为:
假设进行业务数据模拟延时的服务器为游戏服务器,而进行业务数据模拟延时的客户端为游戏客户端,则游戏客户端与游戏服务器之间进行业务数据模拟延时的方法如图5所示,请参阅图5,图5为本发明应用场景中业务数据的模拟延时流程示意图。
首先,游戏客户端向游戏服务器发送上行数据包,即为业务数据包,该上行数据包通过网络发送至游戏服务器侧,游戏服务器通过网络包接收模块接收该游戏客户端发送的上行数据包。如果此时GM命令开启,则将业务数据包发送至波动模拟前端模块,如果未开启,则直接发送至游戏服务器业务处理模块。
由波动模拟前端模块将上行数据包放入先进先出的数据包队列Q的尾部,而波动模拟后端模块根据GM命令设置的参数,计算出随机延迟时间,并根据此随机延迟时间进行不定期唤醒,从数据包队列Q的头部取出最早插入的数据,转发给游戏服务器业务处理模块。
如果客户端上行数据包速度猛然增快,而设置的延迟时间较长,会导致数据队列Q瞬间被塞满,此时,网络模拟前端模块尝试插入队列Q时会失败,此时的处理应当为,服务器直接强制按顺序弹出一个队列Q头部的上行数据包,再插入新的上行数据包到尾部。
下面对本发明中的服务器进行详细描述,请参阅图6,本发明实施例中的服务器为应用于业务数据的模拟延时中的服务器,服务器30包括:
接收模块301,用于接收客户端发送的业务处理请求;
确定模块302,用于若所述接收模块301接收的所述业务处理请求中包含业务模拟参数,则根据所述业务模拟参数确定为所述客户端配置的目标处理时延;
延时模块303,用于若接收到所述客户端发送的业务数据包,则根据所述确定模块302确定的所述目标处理时延对所述业务数据包进行延时处理。
本实施例中,接收模块301接收客户端发送的业务处理请求,若所述接收模块301接收的所述业务处理请求中包含业务模拟参数,则确定模块302根据所述业务模拟参数确定为所述客户端配置的目标处理时延,若接收到所述客户端发送的业务数据包,则延时模块303根据所述确定模块302确定的所述目标处理时延对所述业务数据包进行延时处理。
本发明实施例中,提供了一种应用于业务数据的模拟延时方法的服务器,具体为服务器接收客户端发送的业务处理请求,若业务处理请求中包含业务模拟参数,则服务器根据业务模拟参数确定为客户端配置的目标处理时延,若服务器接收到客户端发送的业务数据包,则根据目标处理时延对业务数据包进行延时处理。通过上述方式,无需考虑客户端的数量以及操作系统,在服务器侧就能实现模拟网络波动,从而解决了第三方软件与客户端操作系统无法兼容的问题,并且不再依赖于第三方软件的部署,以此提升了方案的实用性。
可选地,在上述图6所对应的实施例的基础上,请参阅图7,本发明实施例提供的服务器的另一实施例中,
所述服务器30还包括:
处理模块304,用于所述接收模块301接收客户端发送的业务处理请求之后,若所述业务处理请求中不包含业务模拟参数,则对所述业务数据包进行业务处理,所述业务处理不包含延时处理。
其次,本发明实施例中,在服务器接收到客户端发送的业务处理请求之后,如果检测请求中并不包含业务模拟参数,则直接对业务数据包进行处理,也就不需要对其进行延时操作。通过上述方式,可以对业务数据包进行常规处理,并非针对所有的业务数据包都进行延时处理,从而保证了方案在实现方式上的多样性,同时增强方案的实用性和灵活性。
可选地,在上述图6所对应的实施例的基础上,请参阅图8,本发明实施例提供的服务器的另一实施例中,
所述服务器30还包括:
等待模块305,用于所述确定模块302根据所述业务模拟参数确定为所述客户端配置的目标处理时延之后,若未接收到所述客户端发送的所述业务数据包,则处于业务等待状态。
其次,本发明实施例中,服务器根据业务模拟参数确定为客户端配置的目标处理时延之后,如果暂时未接收到客户端发送的业务数据包,则会自动进入等待业务的状态。通过上述方式,即便服务器端已经计算得到了目标处理时延,也可以暂时搁置不进行处理,等待客户端发送的业务数据包之后才进行延时处理,从而提升了方案的实用性和可操作性。
可选地,在上述图6所对应的实施例的基础上,请参阅图9,本发明实施例提供的服务器的另一实施例中,
所述延时模块303包括:
加入单元3031,用于将所述业务数据包中的至少一个业务子数据包加入至所述客户端所对应的延时队列;
延时单元3032,用于根据所述目标处理时延,对所述延时队列中的所述加入单元3031加入的每个所述业务子数据包依次进行延时处理。
其次,本发明实施例中,在服务器根据目标处理时延对业务数据包进行延时处理的步骤中,首先服务器将业务数据包中的至少一个业务子数据包加入至客户端所对应的延时队列,然后根据目标处理时延,对延时队列中的每个业务子数据包依次进行延时处理。通过上述方式,实现对业务数据包进行延时处理的目的,采用目标处理时延对每个业务子数据包分别进行延时处理,以使得延时后的每个业务子数据包都能模拟网络延迟或网络波动的特点,从而提升方案的实用性。
可选地,在上述图9所对应的实施例的基础上,请参阅图10,本发明实施例提供的服务器的另一实施例中,
所述延时单元3032包括:
第一获取子单元30321,用于获取所述延时队列中的第一业务子数据包,所述第一业务子数据包为所述延时队列中第一个所述业务子数据包;
第一延时子单元30322,用于根据所述目标处理时延,对所述第一获取子单元30321获取的所述第一业务子数据包进行延时处理;
第二获取子单元30323,用于获取所述延时队列中的第二业务子数据包,其中,所述第二业务子数据包为所述第一获取子单元30321获取的所述第一业务子数据包之后相邻的一个业务子数据包;
第二延时子单元30324,用于根据所述目标处理时延,对所述第二获取子单元30323获取的所述第二业务子数据包进行延时处理。
再次,本发明实施例中,服务器在对延时队列中的每个业务子数据包依次进行延时处理的过程中,首先获取延时队列中的第一业务子数据包,然后对该第一业务子数据包进行延时处理,接着获取在紧跟在第一业务子数据包之后的第二业务子数据包,再对第二业务子数据包进行延迟处理。通过上述方式,可以了解到服务器在对延时队列中的各个业务子数据包进行处理时,是按照一定的次序进行的,而不是随机获取某个业务子数据包就对其进行处理,从而避免的延时处理中出现的时序混乱的情况,增强方案的实用性和可靠性。
可选地,在上述图9所对应的实施例的基础上,请参阅图11,本发明实施例提供的服务器的另一实施例中,
所述延时模块303还包括:
获取单元3033,用于所述加入单元3031将所述业务数据包中的至少一个业务子数据包加入至所述客户端所对应的延时队列之前,若所述延时队列处于已写满状态,则获取所述延时队列中的第一业务子数据包,所述第一业务子数据包为所述延时队列中第一个所述业务子数据包;
处理单元3034,用于对所述获取单元3033获取的所述第一业务子数据包进行业务处理,所述业务处理不包含延时处理。
再次,本发明实施例中,将业务数据包中的至少一个业务子数据包加入至客户端所对应的延时队列之前,如果发现当前延时队列中已经塞不下更多的业务子数据包,则直接按照次序直接弹出延时队列头部的一个业务子数据包。并且不对该第一业务子数据包进行延时处理,而是直接进行相应的业务处理。通过上述方式,可以应用于一种边界情况,也就是当客户端上行的业务数据包发送速度猛然增快,而延时时间较长时,会导致延时队列很快被塞满,为了不废弃这些业务数据包,就可以不再对延时队列中的业务子数据包分别进行延时处理,从而保证了业务通信的合理性。
可选地,在上述图6所对应的实施例的基础上,请参阅图12,本发明实施例提供的服务器的另一实施例中,
所述确定模块302包括:
计算单元3021,用于按照如下方式计算所述目标处理时延:
Tdelay=α+α×RAND(-β,β);
其中,所述Tdelay表示所述目标处理时延,所述α表示基础延迟时间,所述β表示网络波动率,所述RAND()表示区间内随机取值。
其次,本发明实施例中,服务器在计算目标处理时延的过程中,将采用具体的计算公式来对其进行计算,从而有利于保证计算结果的可靠性,同时,也为方案的具体实现提供了合理的依据,以此提升方案的可行性。
图13是本发明实施例提供的一种服务器结构示意图,该服务器400可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(central processingunits,CPU)422(例如,一个或一个以上处理器)和存储器432,一个或一个以上存储应用程序442或数据444的存储介质430(例如一个或一个以上海量存储设备)。其中,存储器432和存储介质430可以是短暂存储或持久存储。存储在存储介质430的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器422可以设置为与存储介质430通信,在服务器400上执行存储介质430中的一系列指令操作。
服务器400还可以包括一个或一个以上电源426,一个或一个以上有线或无线网络接口450,一个或一个以上输入输出接口458,和/或,一个或一个以上操作系统441,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
其中,CPU 422用于执行如下步骤:
接收客户端发送的业务处理请求;
若所述业务处理请求中包含业务模拟参数,则根据所述业务模拟参数确定为所述客户端配置的目标处理时延;
若接收到所述客户端发送的业务数据包,则根据所述目标处理时延对所述业务数据包进行延时处理。
可选地,CPU 422还用于执行如下步骤:
若所述业务处理请求中不包含业务模拟参数,则对所述业务数据包进行业务处理,所述业务处理不包含延时处理。
可选地,CPU 422还用于执行如下步骤:
若未接收到所述客户端发送的所述业务数据包,则处于业务等待状态。
可选地,CPU 422还用于执行如下步骤:
将所述业务数据包中的至少一个业务子数据包加入至所述客户端所对应的延时队列;
根据所述目标处理时延,对所述延时队列中的每个所述业务子数据包依次进行延时处理。
可选地,CPU 422还用于执行如下步骤:
获取所述延时队列中的第一业务子数据包,所述第一业务子数据包为所述延时队列中第一个所述业务子数据包;
根据所述目标处理时延,对所述第一业务子数据包进行延时处理;
获取所述延时队列中的第二业务子数据包,其中,所述第二业务子数据包为所述第一业务子数据包之后相邻的一个业务子数据包;
根据所述目标处理时延,对所述第二业务子数据包进行延时处理。
可选地,CPU 422还用于执行如下步骤:
若所述延时队列处于已写满状态,则获取所述延时队列中的第一业务子数据包,所述第一业务子数据包为所述延时队列中第一个所述业务子数据包;
对所述第一业务子数据包进行业务处理,所述业务处理不包含延时处理。
可选地,CPU 422还用于执行如下步骤:
按照如下方式计算所述目标处理时延:
Tdelay=α+α×RAND(-β,β);
其中,所述Tdelay表示所述目标处理时延,所述α表示基础延迟时间,所述β表示网络波动率,所述RAND()表示区间内随机取值。
上述实施例中由服务器所执行的步骤可以基于该图13所示的服务器结构。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(英文全称:Read-OnlyMemory,英文缩写:ROM)、随机存取存储器(英文全称:Random Access Memory,英文缩写:RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (13)
1.一种业务数据的模拟延时方法,其特征在于,包括:
接收客户端发送的业务处理请求;
若所述业务处理请求中不包含业务模拟参数,则对所述客户端发送的业务数据包进行业务处理,所述业务处理不包含延时处理;
若所述业务处理请求中包含业务模拟参数,则根据所述业务模拟参数确定为所述客户端配置的目标处理时延;
在所述根据所述业务模拟参数确定为所述客户端配置的目标处理时延之后,若接收到所述客户端发送的业务数据包,则根据所述目标处理时延对所述业务数据包进行延时处理。
2.根据权利要求1所述的方法,其特征在于,所述根据所述业务模拟参数确定为所述客户端配置的目标处理时延之后,所述方法还包括:
若未接收到所述客户端发送的所述业务数据包,则处于业务等待状态。
3.根据权利要求1所述的方法,其特征在于,所述根据所述目标处理时延对所述业务数据包进行延时处理,包括:
将所述业务数据包中的至少一个业务子数据包加入至所述客户端所对应的延时队列;
根据所述目标处理时延,对所述延时队列中的每个所述业务子数据包依次进行延时处理。
4.根据权利要求3所述的方法,其特征在于,所述根据所述目标处理时延,对所述延时队列中的每个所述业务子数据包依次进行延时处理,包括:
获取所述延时队列中的第一业务子数据包,所述第一业务子数据包为所述延时队列中第一个所述业务子数据包;
根据所述目标处理时延,对所述第一业务子数据包进行延时处理;
获取所述延时队列中的第二业务子数据包,其中,所述第二业务子数据包为所述第一业务子数据包之后相邻的一个业务子数据包;
根据所述目标处理时延,对所述第二业务子数据包进行延时处理。
5.根据权利要求3所述的方法,其特征在于,所述将所述业务数据包中的至少一个业务子数据包加入至所述客户端所对应的延时队列之前,所述方法还包括:
若所述延时队列处于已写满状态,则获取所述延时队列中的第一业务子数据包,所述第一业务子数据包为所述延时队列中第一个所述业务子数据包;
对所述第一业务子数据包进行业务处理,所述业务处理不包含延时处理。
6.根据权利要求1所述的方法,其特征在于,所述根据所述业务模拟参数确定为所述客户端配置的目标处理时延,包括:
按照如下方式计算所述目标处理时延:
Tdelay=α+α×RAND(-β,β);
其中,所述Tdelay表示所述目标处理时延,所述α表示基础延迟时间,所述β表示网络波动率,所述RAND()表示区间内随机取值。
7.一种服务器,其特征在于,包括:
接收模块,用于接收客户端发送的业务处理请求;
处理模块,用于所述接收模块接收客户端发送的业务处理请求之后,若所述业务处理请求中不包含业务模拟参数,则对所述客户端发送的业务数据包进行业务处理,所述业务处理不包含延时处理;
确定模块,用于若所述接收模块接收的所述业务处理请求中包含业务模拟参数,则根据所述业务模拟参数确定为所述客户端配置的目标处理时延;
延时模块,用于在所述确定模块根据所述业务模拟参数确定为所述客户端配置的目标处理时延之后,若接收到所述客户端发送的业务数据包,则根据所述确定模块确定的所述目标处理时延对所述业务数据包进行延时处理。
8.根据权利要求7所述的服务器,其特征在于,所述服务器还包括:
等待模块,用于所述确定模块根据所述业务模拟参数确定为所述客户端配置的目标处理时延之后,若未接收到所述客户端发送的所述业务数据包,则处于业务等待状态。
9.根据权利要求7所述的服务器,其特征在于,所述延时模块包括:
加入单元,用于将所述业务数据包中的至少一个业务子数据包加入至所述客户端所对应的延时队列;
延时单元,用于根据所述目标处理时延,对所述延时队列中的所述加入单元加入的每个所述业务子数据包依次进行延时处理。
10.根据权利要求9所述的服务器,其特征在于,所述延时单元包括:
第一获取子单元,用于获取所述延时队列中的第一业务子数据包,所述第一业务子数据包为所述延时队列中第一个所述业务子数据包;
第一延时子单元,用于根据所述目标处理时延,对所述第一获取子单元获取的所述第一业务子数据包进行延时处理;
第二获取子单元,用于获取所述延时队列中的第二业务子数据包,其中,所述第二业务子数据包为所述第一获取子单元获取的所述第一业务子数据包之后相邻的一个业务子数据包;
第二延时子单元,用于根据所述目标处理时延,对所述第二获取子单元获取的所述第二业务子数据包进行延时处理。
11.根据权利要求9所述的服务器,其特征在于,所述延时模块还包括:
获取单元,用于所述加入单元将所述业务数据包中的至少一个业务子数据包加入至所述客户端所对应的延时队列之前,若所述延时队列处于已写满状态,则获取所述延时队列中的第一业务子数据包,所述第一业务子数据包为所述延时队列中第一个所述业务子数据包;
处理单元,用于对所述获取单元获取的所述第一业务子数据包进行业务处理,所述业务处理不包含延时处理。
12.根据权利要求7所述的服务器,其特征在于,所述确定模块包括:
计算单元,用于按照如下方式计算所述目标处理时延:
Tdelay=α+α×RAND(-β,β);
其中,所述Tdelay表示所述目标处理时延,所述α表示基础延迟时间,所述β表示网络波动率,所述RAND()表示区间内随机取值。
13.一种存储介质,其特征在于,所述存储介质中存储有计算机指令,所述计算机指令被执行时实现如权利要求1至6任一项所述的业务数据的模拟延时方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710161474.8A CN106953756B (zh) | 2017-03-17 | 2017-03-17 | 一种业务数据的模拟延时方法以及服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710161474.8A CN106953756B (zh) | 2017-03-17 | 2017-03-17 | 一种业务数据的模拟延时方法以及服务器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106953756A CN106953756A (zh) | 2017-07-14 |
CN106953756B true CN106953756B (zh) | 2020-04-07 |
Family
ID=59472768
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710161474.8A Active CN106953756B (zh) | 2017-03-17 | 2017-03-17 | 一种业务数据的模拟延时方法以及服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106953756B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113726609B (zh) * | 2021-08-31 | 2022-09-20 | 北京百度网讯科技有限公司 | 系统测试方法、装置、电子设备和介质 |
CN114827104B (zh) * | 2022-05-17 | 2024-02-23 | 咪咕文化科技有限公司 | 时延调整方法、装置、设备及计算机可读存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101175045A (zh) * | 2007-05-21 | 2008-05-07 | 中兴通讯股份有限公司 | 一种处理紧急业务的方法 |
CN101834888A (zh) * | 2010-04-02 | 2010-09-15 | 清华大学 | 一种通过无线局域网远程启动透明计算系统客户端的方法 |
CN102123053A (zh) * | 2011-03-31 | 2011-07-13 | 浙江大学 | 水平分解的多类闭合分叉-汇集排队网络性能分析方法 |
CN103618645A (zh) * | 2013-11-28 | 2014-03-05 | 武汉虹旭信息技术有限责任公司 | 智能模拟复杂网络环境的测试系统及其方法 |
CN103782556A (zh) * | 2013-08-08 | 2014-05-07 | 华为技术有限公司 | 虚拟化网络的分配方法、控制器、设备及系统 |
CN106803799A (zh) * | 2015-11-26 | 2017-06-06 | 阿里巴巴集团控股有限公司 | 一种性能测试方法和装置 |
-
2017
- 2017-03-17 CN CN201710161474.8A patent/CN106953756B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101175045A (zh) * | 2007-05-21 | 2008-05-07 | 中兴通讯股份有限公司 | 一种处理紧急业务的方法 |
CN101834888A (zh) * | 2010-04-02 | 2010-09-15 | 清华大学 | 一种通过无线局域网远程启动透明计算系统客户端的方法 |
CN102123053A (zh) * | 2011-03-31 | 2011-07-13 | 浙江大学 | 水平分解的多类闭合分叉-汇集排队网络性能分析方法 |
CN103782556A (zh) * | 2013-08-08 | 2014-05-07 | 华为技术有限公司 | 虚拟化网络的分配方法、控制器、设备及系统 |
CN103618645A (zh) * | 2013-11-28 | 2014-03-05 | 武汉虹旭信息技术有限责任公司 | 智能模拟复杂网络环境的测试系统及其方法 |
CN106803799A (zh) * | 2015-11-26 | 2017-06-06 | 阿里巴巴集团控股有限公司 | 一种性能测试方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN106953756A (zh) | 2017-07-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6390922B1 (en) | Initiating and scaling massive concurrent data transactions | |
Shea et al. | Cloud gaming: architecture and performance | |
US8694585B2 (en) | Cross-interface communication | |
Bettner et al. | 1500 archers on a 28.8: Network programming in Age of Empires and beyond | |
US8233399B2 (en) | Generic packet generator and method | |
Ratti et al. | A survey of first-person shooter gaming traffic on the internet | |
CN110300115A (zh) | 一种基于多通道的数据传输方法以及相关装置 | |
EP1916608A1 (en) | A method for sharing the game data and the system thereof | |
CN110478897B (zh) | 一种基于vpn技术的智能网关游戏加速方法 | |
CA2400587A1 (en) | Multi-player computer game system and method | |
CN116322915A (zh) | 从游戏交互中自动分离辱骂玩家 | |
JP2010148869A5 (zh) | ||
CN108159691A (zh) | 游戏状态同步方法及系统 | |
KR101593984B1 (ko) | 분산 테스트 시스템 및 방법, 분산 테스트 관제 시스템 및 방법, 분산 테스트 플랜 작성 장치 및 방법, 분산 테스트 에이전트 및 분산 테스트 플랜 실행 방법 | |
CN108568109A (zh) | 一种游戏控制方法、装置及存储介质 | |
CN103475743B (zh) | 一种用于云服务的方法、装置及系统 | |
CN106953756B (zh) | 一种业务数据的模拟延时方法以及服务器 | |
CN104009969B (zh) | 一种网络游戏系统的通讯方法 | |
CN111865674B (zh) | 一种日志处理方法、装置及介质 | |
CN103281346A (zh) | 断线重连方法、网络系统和代理服务器 | |
JP2007158573A (ja) | 伝送制御装置およびその方法 | |
Saldana et al. | First person shooters: can a smarter network save bandwidth without annoying the players? | |
US8996944B2 (en) | Client-server gaming | |
US20120110166A1 (en) | Method and apparatus for generating traffic | |
CN106357728B (zh) | 信息处理方法、系统及终端 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |