流量分配方法、装置及电子设备转让专利

申请号 : CN202311813694.6

文献号 : CN117478612B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 文严李雪梅何林王发修高斌徐志华

申请人 : 成都新希望金融信息有限公司

摘要 :

本申请提供一种流量分配方法、装置及电子设备,涉及数据处理领域。该方法包括:发起业务请求;统计业务请求的流量和业务请求所属周期中未结束的历史业务请求的待发送流量的流量总和;若流量总和大于周期的剩余流量,则基于业务请求的优先级和未结束的历史业务请求的优先级对业务请求进行流量分配。装置用于执行上述方法。本申请根据优先级合理的对业务请求进行流量分配,不仅保证了在网络剩余流量不足时,优先级更高的业务请求得到及时处理,也能够预防网络出现阻塞的情况,提高了网络的稳定性。

权利要求 :

1.一种流量分配方法,其特征在于,所述方法包括:

发起业务请求;

统计所述业务请求的流量和所述业务请求所属周期中未结束的历史业务请求的待发送流量的流量总和;

若所述流量总和大于所述周期的剩余流量,则基于所述业务请求的优先级和所述未结束的历史业务请求的优先级对所述业务请求进行流量分配;

其中,所述基于所述业务请求的优先级和所述未结束的历史业务请求的优先级对所述业务请求进行流量分配,包括:若所述业务请求的优先级不高于所述未结束的历史业务请求的优先级,则基于所述周期的剩余流量和所述未结束的历史业务请求的待发送流量确定所述周期的第一剩余流量;

若所述第一剩余流量大于所述业务请求的第一预设流量,则将所述第一剩余流量分配给所述业务请求;

若所述第一剩余流量小于或等于所述业务请求的第一预设流量,则将所述业务请求放在下个周期进行流量分配。

2.根据权利要求1所述的方法,其特征在于,所述基于所述业务请求的优先级和所述未结束的历史业务请求的优先级对所述业务请求进行流量分配,包括:若所述业务请求的优先级不高于所述未结束的历史业务请求的优先级,且所述业务请求的优先级大于预设优先级阈值,则将所述业务请求放在下个周期进行流量分配。

3.根据权利要求1所述的方法,其特征在于,所述基于所述业务请求的优先级和所述未结束的历史业务请求的优先级对所述业务请求进行流量分配,包括:若所述业务请求的优先级不高于所述未结束的历史业务请求的优先级,且所述业务请求的优先级小于或等于预设优先级阈值,则拒绝所述业务请求。

4.根据权利要求1‑3任一项所述的方法,其特征在于,所述基于所述业务请求的优先级和所述未结束的历史业务请求的优先级对所述业务请求进行流量分配,包括:若所述未结束的历史业务请求中存在低于所述业务请求的优先级的目标历史业务请求,则基于所述业务请求的流量、所述目标历史业务请求的优先级和所述周期的剩余流量对所述业务请求进行流量分配。

5.根据权利要求4所述的方法,其特征在于,所述基于所述业务请求的流量、所述目标历史业务请求的优先级和所述周期的剩余流量对所述业务请求进行流量分配,包括:基于优先级从低到高的顺序依次对所述目标历史业务请求按预设限速阈值进行流量限速;

根据所述周期的剩余流量、限速的目标历史业务请求的个数和所述预设限速阈值确定所述周期的第二剩余流量;

若所述第二剩余流量大于所述业务请求的第二预设流量,则对所述业务请求进行流量分配;

若所述目标历史业务请求都被限速,且所述第二剩余流量小于或等于所述业务请求的第二预设流量,则对所述目标历史业务请求进行流量拒绝,并基于流量拒绝后的结果对所述业务请求进行流量分配。

6.根据权利要求5所述的方法,其特征在于,所述对所述目标历史业务请求进行流量拒绝,并基于流量拒绝后的结果对所述业务请求进行流量分配,包括:若所述目标历史业务请求中存在已发送流量小于预设流量阈值的待拒绝历史业务请求,则对所述待拒绝历史业务请求进行拒绝;

基于所述第二剩余流量和所述待拒绝历史业务请求的待发送流量确定所述周期的第三剩余流量;

若所述第三剩余流量大于所述业务请求的第三预设流量,则对所述业务请求进行流量分配;

若所述第三剩余流量小于或等于所述业务请求的第三预设流量,则基于所述业务请求的优先级与所述预设优先级阈值的关系对所述业务请求进行流量分配。

7.根据权利要求6所述的方法,其特征在于,所述基于所述业务请求的优先级与所述预设优先级阈值的关系对所述业务请求进行流量分配,包括:若所述业务请求的优先级小于或等于所述预设优先级阈值,则拒绝所述业务请求;

若所述业务请求的优先级大于所述预设优先级阈值,则将所述业务请求放在下个周期进行流量分配。

8.一种流量分配装置,其特征在于,所述装置包括:

发起模块,用于发起业务请求;

统计模块,用于统计所述业务请求的流量和所述业务请求所属周期中未结束的历史业务请求的待发送流量的流量总和;

分配模块,用于若所述流量总和大于所述周期的剩余流量,则基于所述业务请求的优先级和所述未结束的历史业务请求的优先级对所述业务请求进行流量分配;

其中,所述分配模块具体用于:

若所述业务请求的优先级不高于所述未结束的历史业务请求的优先级,则基于所述周期的剩余流量和所述未结束的历史业务请求的待发送流量确定所述周期的第一剩余流量;

若所述第一剩余流量大于所述业务请求的第一预设流量,则将所述第一剩余流量分配给所述业务请求;

若所述第一剩余流量小于或等于所述业务请求的第一预设流量,则将所述业务请求放在下个周期进行流量分配。

9.一种电子设备,其特征在于,包括:处理器和存储器,所述存储器存储有所述处理器可执行的机器可读指令,所述机器可读指令被所述处理器执行时执行如权利要求1至7任一所述的方法。

说明书 :

流量分配方法、装置及电子设备

技术领域

[0001] 本申请涉及数据处理领域,具体而言,涉及一种流量分配方法、装置及电子设备。

背景技术

[0002] 在数据传输过程中,网络带宽往往被限制在一定的大小范围内。当多个服务同时高频使用该条网络时,会使得网络资源被耗尽。因此,在网络带宽有限的情况下,外数平台和其他服务通过各种协议和机构进行数据交换的时候,会对数据交换的频率进行限制。
[0003] 现有技术中,通常是通过人工的方式进行手动干预,或者利用令牌桶算法,滑动事件窗和漏桶算法进行限速。但由于不能合理分配流量,使得网络的稳定性不高。

发明内容

[0004] 本申请实施例的目的在于提供一种流量分配方法、装置及电子设备,用以对网络中的流量进行合理的预分配,提高网络的稳定性。
[0005] 第一方面,本申请实施例提供一种流量分配方法,该方法包括:发起业务请求;统计业务请求的流量和业务请求所属周期中未结束的历史业务请求的待发送流量的流量总和;若流量总和大于周期的剩余流量,则基于业务请求的优先级和未结束的历史业务请求的优先级对业务请求进行流量分配。
[0006] 本申请实施例在业务请求的流量与所属周期中未结束的历史业务请求的待发送流量的流量总和大于所属周期的剩余流量时,根据业务请求和未结束的历史业务请求的优先级对业务请求进行流量分配,使得根据优先级合理的对业务请求进行流量分配,不仅保证了在网络剩余流量不足时,优先级更高的业务请求得到及时处理,也能够预防网络出现阻塞的情况,提高了网络的稳定性。
[0007] 在一些实施例中,基于业务请求的优先级和未结束的历史业务请求的优先级对业务请求进行流量分配,包括:若业务请求的优先级不高于未结束的历史业务请求的优先级,且业务请求的优先级大于预设优先级阈值,则将业务请求放在下个周期进行流量分配。
[0008] 本申请实施例中,即使当前发起的业务请求的优先级在本周期内最低,也不会直接对该业务请求进行拒绝,而是在业务请求的优先级高于一定的预设优先级阈值时,预支下个周期的流量,使得优先级较低的业务请求可以错峰重试发起。
[0009] 在一些实施例中,基于业务请求的优先级和未结束的历史业务请求的优先级对业务请求进行流量分配,包括:若业务请求的优先级不高于未结束的历史业务请求的优先级,则基于周期的剩余流量和未结束的历史业务请求的待发送流量确定周期的第一剩余流量;若第一剩余流量大于业务请求的第一预设流量,则将第一剩余流量分配给业务请求;若第一剩余流量小于或等于业务请求的第一预设流量,则将业务请求放在下个周期进行流量分配。
[0010] 本申请实施例中,即使当前发起的业务请求的优先级在本周期内最低,也不会直接对该业务请求进行拒绝,而是根据周期中经分配后的剩余流量决定是进行部分处理还是预支下个周期的流量,使得在提高网络稳定性的基础上,业务请求也能够得到及时处理。
[0011] 在一些实施例中,基于业务请求的优先级和未结束的历史业务请求的优先级对业务请求进行流量分配,包括:若业务请求的优先级不高于未结束的历史业务请求的优先级,且业务请求的优先级小于或等于预设优先级阈值,则拒绝业务请求。
[0012] 本申请实施例在业务请求的优先级也不满足预设优先级阈值时,对该业务请求拒绝。在保证网络稳定性的基础上,只会丢弃少量的更低优先级的业务请求,而不会影响高优先级的业务请求的处理。
[0013] 在一些实施例中,基于业务请求的优先级和未结束的历史业务请求的优先级对业务请求进行流量分配,包括:若未结束的历史业务请求中存在低于业务请求的优先级的目标历史业务请求,则基于业务请求的流量、目标历史业务请求的优先级和周期的剩余流量对业务请求进行流量分配。
[0014] 本申请实施例在业务请求的优先级不是所属周期未结束的业务请求中最低时,还需考虑目标历史业务请求和周期的剩余流量的因素,而不是随机的给业务请求进行流量分配,从而能够合理的对网络流量进行分配,提高了网络的稳定性。
[0015] 在一些实施例中,基于业务请求的流量、目标历史业务请求的优先级和周期的剩余流量对业务请求进行流量分配,包括:基于优先级从低到高的顺序依次对目标历史业务请求按预设限速阈值进行流量限速;根据周期的剩余流量、限速的目标历史业务请求的个数和预设限速阈值确定周期的第二剩余流量;若第二剩余流量大于业务请求的第二预设流量,则对业务请求进行流量分配;若目标历史业务请求都被限速,且第二剩余流量小于或等于业务请求的第二预设流量,则对目标历史业务请求进行流量拒绝,并基于流量拒绝后的结果对业务请求进行流量分配。
[0016] 本申请实施例通过基于优先级从低到高的顺序对目标历史业务请求进行流量限速,若在限速后,周期的剩余流量与业务请求的流量满足一定关系时,对业务请求分配流量。表明优先级较高的业务请求能够得到及时处理。并且,若所有目标历史业务请求都被限速后,限速后的周期剩余流量仍然不足以处理业务请求,则对目标历史业务请求进行拒绝,从而保证优先级较高的业务请求能够得到及时处理。
[0017] 在一些实施例中,对目标历史业务请求进行流量拒绝,并基于流量拒绝后的结果对业务请求进行流量分配,包括:若目标历史业务请求中存在已发送流量小于预设流量阈值的待拒绝历史业务请求,则对待拒绝历史业务请求进行拒绝;基于第二剩余流量和待拒绝历史业务请求的待发送流量确定周期的第三剩余流量;若第三剩余流量大于业务请求的第三预设流量,则对业务请求进行流量分配;若第三剩余流量小于或等于业务请求的第三预设流量,则基于业务请求的优先级与预设优先级阈值的关系对业务请求进行流量分配。
[0018] 本申请实施例在对目标历史业务请求进行限速后,周期内的剩余流量仍然达不到要求时,则对目标历史业务请求进行拒绝,但在进行拒绝时,还需要考虑目标历史业务请求已发送的流量大小,只有目标历史业务请求的已发送流量较少时,才会对该目标历史业务请求进行拒绝,保证了只会拒绝一小部分还未发送较多流量的低优先级请求。
[0019] 在一些实施例中,基于业务请求的优先级与预设优先级阈值的关系对业务请求进行流量分配,包括:若业务请求的优先级小于或等于预设优先级阈值,则拒绝业务请求;若业务请求的优先级大于预设优先级阈值,则将业务请求放在下个周期进行流量分配。
[0020] 本申请实施例在拒绝所有待拒绝历史业务请求后,所属周期的剩余流量仍然不满足要求时,将业务请求的优先级与预设优先级阈值进行比较,在满足预设优先级阈值时,放在下个周期进行流量分配,在不满足时,进行流量拒绝。表明在请求处理过程中,并不会直接对业务请求进行拒绝,而是根据实际情况进行选择性处理。在保证网络稳定性的基础上,使得大部分业务请求都能够得到及时处理。
[0021] 第二方面,本申请实施例提供一种流量分配装置,该装置包括:发起模块,用于发起业务请求;统计模块,用于统计业务请求的流量和业务请求所属周期中未结束的历史业务请求的待发送流量的流量总和;分配模块,用于若流量总和大于周期的剩余流量,则基于业务请求的优先级和未结束的历史业务请求的优先级对业务请求进行流量分配。
[0022] 第三方面,本申请实施例提供一种电子设备,包括:处理器、存储器、存储介质和总线,其中,所述处理器和所述存储器通过所述总线完成相互间的通信;所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行第一方面的方法步骤。
[0023] 第四方面,本申请实施例提供一种非暂态计算机可读存储介质,包括:所述计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行第一方面的方法步骤。
[0024] 本申请的有益效果如下:
[0025] 本申请实施例通过预先设置请求优先级,在业务请求的流量与所属周期中未结束的历史业务请求的待发送流量的流量总和大于所属周期的剩余流量时,根据业务请求和未结束的历史业务请求的优先级对业务请求进行流量分配,使得根据优先级合理的对业务请求进行流量分配,不仅保证了在网络剩余流量不足时,优先级更高的业务请求得到及时处理,也能够预防网络出现阻塞的情况,提高了网络的稳定性。并且,在业务请求的优先级不满足预设优先级阈值时,预支下个周期的流量,使得优先级较低的业务请求可以错峰重试发起。
[0026] 本申请的其他特征和优点将在随后的说明书阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请实施例了解。

附图说明

[0027] 为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
[0028] 图1为本申请实施例提供的一种流量分配方法的流程图;
[0029] 图2为本申请实施例提供的另一种流量分配方法的流程图;
[0030] 图3为本申请实施例提供的一种流量分配装置结构示意图;
[0031] 图4为本申请实施例提供的电子设备结构示意图。

具体实施方式

[0032] 下面将结合附图对本申请技术方案的实施例进行详细的描述。以下实施例仅用于更加清楚地说明本申请的技术方案,因此只作为示例,而不能以此来限制本申请的保护范围。
[0033] 需要说明的是,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同;本文中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本申请;本申请的说明书和权利要求书及上述附图说明中的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。
[0034] 在本申请实施例的描述中,技术术语“第一”“第二”等仅用于区别不同对象,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量、特定顺序或主次关系。在本申请实施例的描述中,“多个”的含义是两个以上,除非另有明确具体的限定。
[0035] 在本申请实施例的描述中,术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
[0036] 在执行本申请实施例提供的一种流量分配方法之前,开发人员基于现有可能存在的所有业务请求配置优先级关系表。其中,该优先级关系表包括URL和优先级标识。优先级标识可以是数字标识,也可以是字母标识,还可以是数字+字母标识,具体优先级标识以及优先级标识的大小关系可根据实际情况进行设定。开发人员进行配置时,可以是在系统界面上进行配置,也可以是在数据库中进行配置,还可以是以配置文件的形式进行配置。
[0037] 需要说明的是,由于业务请求的优先级为开发人员预先配置的,因此,在执行流量分配方法时,已配置的业务请求的优先级是固定的。若当前发起的业务请求并未在优先级关系表中,则服务器取优先级关系表中所有业务请求的优先级的中位数作为当前业务请求的优先级。
[0038] 图1为本申请实施例提供的一种流量分配方法的流程图,该方法运行在各个服务中,服务部署在服务器中。服务器具体可以为应用服务器,也可以为Web服务器。如图1所示,该方法包括:
[0039] 步骤101,服务器发起业务请求。
[0040] 在具体实施过程中,服务器开启流量监控,当服务器检测到当前网络中的流量达到预设阈值后,对后续发起的业务请求进行流量控制。业务请求可以是网络传输过程中的任意请求,例如,文件上传请求、请求机构内部服务普通请求,请求机构内部服务大报文请求等。
[0041] 预设阈值为根据网络实际情况进行预先设定的值。示例性的,当前网络的带宽为100M,将该网络的预设阈值设值为75M,当服务器检测到当前网络的流量超过75M的情况下,对后续发起的业务请求进行流量控制。
[0042] 步骤102,服务器统计业务请求的流量和业务请求所属周期中未结束的历史业务请求的待发送流量的流量总和。
[0043] 在具体实施过程中,业务请求的流量可看作是业务请求的报文大小。未结束的历史业务请求指服务器在业务请求所属周期中先于当前的业务请求发起的业务请求。未结束的历史业务请求包括已经发送部分流量的业务请求和/或还未开始发送流量的业务请求。待发送流量是指一个周期中,分配给未结束的历史业务请求的流量。例如,请求A的流量大小40M,在一个周期中,为其分配20M的流量,则在该周期中可以先发送请求A的20M流量,剩余的20M在其他周期进行发送。
[0044] 服务器在发起业务请求后,需要对发起的业务请求的流量和当前周期中未结束的历史业务请求的待发送流量的流量总和进行统计,从而判断是否需要对当前发起的业务请求进行流量控制。
[0045] 步骤103,若流量总和大于周期的剩余流量,则服务器基于业务请求的优先级和未结束的历史业务请求的优先级对业务请求进行流量分配。
[0046] 在具体实施过程中,服务器在执行统计后,若统计后的流量总和大于当前周期的剩余流量,表明若不对当前发起的业务请求进行流量控制,则可能造成网络堵塞。因此,服务器需要基于业务请求的优先级和未结束的历史业务请求的优先级对业务请求进行流量分配,避免网络出现堵塞的情况。
[0047] 应当知道的是,服务器通过读取优先级关系表获知业务请求的优先级和未结束的历史业务请求的优先级。
[0048] 需要说明的是,若统计后的流量总和小于或等于当前周期的剩余流量,则将当前发起的业务请求进行正常发送。
[0049] 本申请实施例在业务请求的流量与所属周期中未结束的历史业务请求的待发送流量的流量总和大于所属周期的剩余流量时,根据业务请求和未结束的历史业务请求的优先级对业务请求进行流量分配,使得根据优先级合理的对业务请求进行流量分配,不仅保证了在网络剩余流量不足时,优先级更高的业务请求得到及时处理,也能够预防网络出现阻塞的情况,提高了网络的稳定性。
[0050] 在一些实施例中,基于业务请求的优先级和未结束的历史业务请求的优先级对业务请求进行流量分配,包括:若业务请求的优先级不高于未结束的历史业务请求的优先级,且业务请求的优先级大于预设优先级阈值,则将业务请求放在下个周期进行流量分配。
[0051] 在具体实施过程中,预设优先级阈值为开发人员基于优先级关系表中所有业务请求的优先级情况预先设定的值。
[0052] 示例性的,预设优先级阈值设置为业务请求的优先级大于优先级关系表中60%的业务请求,优先级关系表中配置有5个业务请求,其对应的优先级分别为1,2,4,5,6,当前发起的业务请求的优先级为3,所属周期中还存在两个未结束的历史业务请求,优先级分别为1和2。此时业务请求的优先级低于未结束的历史业务请求,且当前发起的业务请求的优先级大于优先级关系表中60%的业务请求,因此,将该业务请求放在下个周期进行流量分配。
[0053] 本申请实施例中,即使当前发起的业务请求的优先级在本周期内最低,也不会直接对该业务请求进行拒绝,而是在业务请求的优先级高于一定的预设优先级阈值时,预支下个周期的流量,使得优先级较低的业务请求可以错峰重试发起。
[0054] 在一些实施例中,基于业务请求的优先级和未结束的历史业务请求的优先级对业务请求进行流量分配,包括:若业务请求的优先级不高于未结束的历史业务请求的优先级,则基于周期的剩余流量和未结束的历史业务请求的待发送流量确定周期的第一剩余流量;若第一剩余流量大于业务请求的第一预设流量,则将第一剩余流量分配给业务请求;若第一剩余流量小于或等于业务请求的第一预设流量,则将业务请求放在下个周期进行流量分配。
[0055] 在具体实施过程中,在当前发起的业务请求的优先级不高于未结束的历史业务请求的优先级时,除了将业务请求的优先级与预设优先级阈值比较后进行相应处理外,还可以是基于周期的剩余流量和未结束的历史业务请求的待发送流量来决定如何对当前发起的业务请求进行处理。
[0056] 第一预设流量为预先设定的值,可以是当前发起的业务请求流量的一半,也可以是当前发起的业务请求流量的三分之一等。示例性的,若当前发起的业务请求的流量为15M,第一预设流量为当前发起的业务请求流量的一半,则第一预设流量为7.5M。
[0057] 示例性的,网络的带宽为100M,服务器检测到网络在当前周期的剩余流量为60M,所属周期中还存在两个未结束的历史业务请求,其待发送流量分别为30M和20M,将所属周期的剩余流量分配给两个未结束的历史业务请求后,还剩10M。
[0058] 若当前发起的业务请求的流量为15M,第一预设流量为当前发起的业务请求流量的一半,为7.5M,由于10M大于7.5M,则将10M分配给当前发起的业务请求,使得该业务请求在本周起内可以先发送10M的流量。
[0059] 若当前发起的业务请求的流量为24M,第一预设流量为当前发起的业务请求流量的一半,为12M,由于10M小于12M,则将该业务请求放在下个周期进行流量分配。
[0060] 本申请实施例中,即使当前发起的业务请求的优先级在本周期内最低,也不会直接对该业务请求进行拒绝,而是根据周期中经分配后的剩余流量决定是进行部分处理还是预支下个周期的流量,使得在提高网络稳定性的基础上,业务请求也能够得到及时处理。
[0061] 在一些实施例中,基于业务请求的优先级和未结束的历史业务请求的优先级对业务请求进行流量分配,包括:若业务请求的优先级不高于未结束的历史业务请求的优先级,且业务请求的优先级小于或等于预设优先级阈值,则拒绝业务请求。
[0062] 在具体实施过程中,将优先级小于或等于预设优先级阈值的业务请求进行拒绝。预设优先级阈值的设置请参考上述实施例。
[0063] 本申请实施例在业务请求的优先级也不满足预设优先级阈值时,对该业务请求拒绝。在保证网络稳定性的基础上,只会丢弃少量的更低优先级的业务请求,而不会影响高优先级的业务请求的处理。
[0064] 在一些实施例中,基于业务请求的优先级和未结束的历史业务请求的优先级对业务请求进行流量分配,包括:若未结束的历史业务请求中存在低于业务请求的优先级的目标历史业务请求,则基于业务请求的流量、目标历史业务请求的优先级和周期的剩余流量对业务请求进行流量分配。
[0065] 在具体实施过程中,若未结束的历史业务请求中存在低于业务请求的优先级的目标历史业务请求,表明在本周期内,存在更低优先级的业务请求,此时为了保证较高优先级的业务请求得到处理,需要结合业务请求的流量、目标历史业务请求的优先级和周期的剩余流量对业务请求进行流量分配。
[0066] 本申请实施例在业务请求的优先级不是所属周期未结束的业务请求中最低时,还需考虑目标历史业务请求和周期的剩余流量的因素,而不是随机的给业务请求进行流量分配,从而能够合理的对网络流量进行分配,提高了网络的稳定性。
[0067] 在一些实施例中,基于业务请求的流量、目标历史业务请求的优先级和周期的剩余流量对业务请求进行流量分配,包括:基于优先级从低到高的顺序依次对目标历史业务请求按预设限速阈值进行流量限速;根据周期的剩余流量、限速的目标历史业务请求的个数和预设限速阈值确定周期的第二剩余流量;若第二剩余流量大于业务请求的第二预设流量,则对业务请求进行流量分配;若目标历史业务请求都被限速,且第二剩余流量小于或等于业务请求的第二预设流量,则对目标历史业务请求进行流量拒绝,并基于流量拒绝后的结果对业务请求进行流量分配。
[0068] 在具体实施过程中,即使未结束的历史业务请求中存在优先级低于当前发起的业务请求的目标历史业务请求,但为了保证大多数较高优先级的业务请求都能得到及时的处理,因此,基于优先级从低到高的顺序对目标历史业务请求进行流量限速。
[0069] 流量限速是指将业务请求的部分流量放在下个周期进行处理。
[0070] 示例性的,请求A的流量大小为2M(1M = 1024KB),周期为1s(1s= 1000ms),若请求A在第18个周期的800ms内完成请求A的报文发送,则发送速率为2048 / 800 = 2.56 KB /ms。当在该周期内,请求A的优先级较低,需要对其进行流量限速处理。当限速一半后,本周期内对请求A可发送的流量为2.56 / 2 800 = 1024KB,因此,在限速后,本周期仅发送请求A的一半流量,剩余一半在下个周期进行处理。
[0071] 需要说明的是,当对目标历史业务请求进行流量限速后,需要将限速的流量并入所属周期的剩余流量中,以将更多的流量分配给较高优先级的业务请求。例如:将请求A限速的一半流量(1024KB)并入所属周期的剩余流量中。
[0072] 预设限速阈值为预先设定的值,可根据实际情况进行具体设定。
[0073] 需要说明的是,目标历史业务请求的个数可以是1个,也可以是多个。当存在多个目标历史业务请求时,被限速的目标历史业务请求的个数可以是一个,也可以是多个。具体根据经流量限速后的周期的第二剩余流量与业务请求的第二预设流量的关系进行确定。其中,第二预设流量为预先设定的值,可以是当前发起的业务请求流量的一半,也可以是当前发起的业务请求流量的三分之一等。当存在多个被限速的目标历史业务请求时,需要将每一个目标历史业务请求限速的流量并入周期的剩余流量中。
[0074] 当周期内第二剩余流量大于业务请求的第二预设流量时,对业务请求进行流量分配。
[0075] 当所有目标历史业务请求都被限速后,周期内剩余的流量仍然不足以对业务请求进行处理,此时需要对目标历史业务请求进行拒绝,以获得更多的流量。即,当所有目标历史业务请求都被限速后,经流量限速后的周期的第二剩余流量小于或等于业务请求的第二预设流量时,对目标历史业务请求进行流量拒绝。
[0076] 本申请实施例通过基于优先级从低到高的顺序对目标历史业务请求进行流量限速,若在限速后,周期的剩余流量与业务请求的流量满足一定关系时,对业务请求分配流量。表明优先级较高的业务请求能够得到及时处理。并且,若所有目标历史业务请求都被限速后,限速后的周期剩余流量仍然不足以处理业务请求,则对目标历史业务请求进行拒绝,从而保证优先级较高的业务请求能够得到及时处理。
[0077] 在一些实施例中,对目标历史业务请求进行流量拒绝,并基于流量拒绝后的结果对业务请求进行流量分配,包括:若目标历史业务请求中存在已发送流量小于或等于预设流量阈值的待拒绝历史业务请求,则对待拒绝历史业务请求进行拒绝;基于第二剩余流量和待拒绝历史业务请求的待发送流量确定周期的第三剩余流量;若第三剩余流量大于业务请求的第三预设流量,则对业务请求进行流量分配;若第三剩余流量小于或等于业务请求的第三预设流量,则基于业务请求的优先级与预设优先级阈值的关系对业务请求进行流量分配。
[0078] 在具体实施过程中,在对目标历史业务请求进行拒绝时,考虑到部分目标历史业务请求已经发送大部分流量,只剩少量的流量未发送,若此时对其进行拒绝,则浪费了前期为其分配的流量,也不利于业务请求的处理。因此,在拒绝处理时,还需要判断每个目标历史业务请求中已发送流量是否达到预设流量阈值,若存在已发送流量小于或等于预设流量阈值的待拒绝历史业务请求,则对待拒绝历史业务请求进行拒绝。
[0079] 需要说明的是,待拒绝历史业务请求可以是1个,也可以是多个。待拒绝历史业务请求可以是本周期内的业务请求,也可以是上个周期限速过后的业务请求。每拒绝一个待拒绝历史业务请求,应当将待拒绝历史业务请求的待发送流量并入周期的剩余流量中,获得周期的第三剩余流量,以将更多的流量分配给较高优先级的业务请求。
[0080] 若周期的第三剩余流量大于业务请求的第三预设流量,则对业务请求进行流量分配。其中,第三预设流量为预先设定的值,可以是当前发起的业务请求流量的一半,也可以是当前发起的业务请求流量的三分之一等。
[0081] 当拒绝所有的待拒绝历史业务请求后,且第三剩余流量小于或等于业务请求的第三预设流量,则基于业务请求的优先级与预设优先级阈值的关系对业务请求进行流量分配。
[0082] 本申请实施例在对目标历史业务请求进行限速后,周期内的剩余流量仍然达不到要求时,则对目标历史业务请求进行拒绝,但在进行拒绝时,还需要考虑目标历史业务请求已发送的流量大小,只有目标历史业务请求的已发送流量较少时,才会对该目标历史业务请求进行拒绝,保证了只会拒绝一小部分还未发送较多流量的低优先级请求。
[0083] 在一些实施例中,基于业务请求的优先级与预设优先级阈值的关系对业务请求进行流量分配,包括:若业务请求的优先级小于或等于预设优先级阈值,则拒绝业务请求;若业务请求的优先级大于预设优先级阈值,则将业务请求放在下个周期进行流量分配。
[0084] 在具体实施过程中,当对待拒绝历史业务请求都拒绝后,周期的剩余流量仍然不足以对当前发起的业务请求进行处理,则将当前发起的业务请求的优先级与预设优先级阈值进行比较,具体比较和处理的过程请参见上述实施例,此处不在赘述。
[0085] 需要说明的是,即使将业务请求放在下个周期进行流量分配,也需要基于下个周期包括的业务请求的优先级和下个周期的网络剩余流量进行处理。
[0086] 本申请实施例在拒绝所有待拒绝历史业务请求后,所属周期的剩余流量仍然不满足要求时,将业务请求的优先级与预设优先级阈值进行比较,在满足预设优先级阈值时,放在下个周期进行流量分配,在不满足时,进行流量拒绝。表明在请求处理过程中,并不会直接对业务请求进行拒绝,而是根据实际情况进行选择性处理。在保证网络稳定性的基础上,使得大部分业务请求都能够得到及时处理。
[0087] 图2为本申请实施例提供的另一种流量分配方法的流程图,如图2所示,该方法包括:
[0088] 步骤201,发起业务请求;
[0089] 步骤202,判断业务请求的流量和所属周期中未结束的历史业务请求的待发送流量的流量总和是否大于周期剩余流量;是,执行步骤204;否,执行步骤203;
[0090] 步骤203,业务请求正常发送;
[0091] 步骤204,判断未结束的历史业务请求中是否存在低于所述业务请求的优先级的目标历史业务请求;是,执行步骤205‑207;否,执行步骤219;
[0092] 步骤205,对目标历史业务请求以优先级从低到高进行排序,获得列表list[len];其中,len表示目标历史业务请求的个数;
[0093] 步骤206,从list[0]开始对目标历史业务请求进行限速;
[0094] 步骤207,判断i>=len;是,执行步骤212;否,执行步骤208‑209;
[0095] 步骤208,对list[i]对应的目标历史业务请求进行限速;
[0096] 步骤209,判断周期内剩余流量是否大于业务请求流量的一半;是,执行步骤210;否,执行步骤211,
[0097] 步骤210,对业务请求进行流量分配;
[0098] 步骤211,i=i+1;循环执行步骤207‑209;
[0099] 步骤212,对目标历史业务请求进行拒绝;
[0100] 步骤213,判断i>=len;是,执行步骤219;否,执行步骤214‑217;
[0101] 步骤214,判断list[i]对应的目标历史业务请求已发送流量是否大于70%;是,执行步骤216;否,执行步骤215;
[0102] 步骤215,拒绝list[i];
[0103] 步骤216,不拒绝list[i];
[0104] 步骤217,判断周期内剩余流量是否大于业务请求流量的一半;是,执行步骤210;否,执行步骤218;
[0105] 步骤218,i=i+1;循环执行步骤213‑217;
[0106] 步骤219,业务请求的优先级是否大于预设优先级阈值;是,执行步骤220;否,执行步骤221;
[0107] 步骤220,预支下一个周期的流量;
[0108] 步骤221,拒绝业务请求。
[0109] 图3为本申请实施例提供的一种流量分配装置结构示意图,如图3所示,该装置包括:发起模块301、统计模块302和分配模块303;其中,
[0110] 发起模块301,用于发起业务请求;统计模块302,用于统计业务请求的流量和业务请求所属周期中未结束的历史业务请求的待发送流量的流量总和;分配模块303,用于若流量总和大于周期的剩余流量,则基于业务请求的优先级和未结束的历史业务请求的优先级对业务请求进行流量分配。
[0111] 在上述实施例的基础上,分配模块303具体用于:若业务请求的优先级不高于未结束的历史业务请求的优先级,且业务请求的优先级大于预设优先级阈值,则将业务请求放在下个周期进行流量分配。
[0112] 在上述实施例的基础上,分配模块303具体用于:若业务请求的优先级不高于未结束的历史业务请求的优先级,则基于周期的剩余流量和未结束的历史业务请求的待发送流量确定周期的第一剩余流量;若第一剩余流量大于业务请求的第一预设流量,则将第一剩余流量分配给业务请求;若第一剩余流量小于或等于业务请求的第一预设流量,则将业务请求放在下个周期进行流量分配。
[0113] 在上述实施例的基础上,分配模块303具体用于:若业务请求的优先级不高于未结束的历史业务请求的优先级,且业务请求的优先级小于或等于预设优先级阈值,则拒绝业务请求。
[0114] 在上述实施例的基础上,分配模块303具体用于:若未结束的历史业务请求中存在低于业务请求的优先级的目标历史业务请求,则基于业务请求的流量、目标历史业务请求的优先级和周期的剩余流量对业务请求进行流量分配。
[0115] 在上述实施例的基础上,分配模块303具体用于:基于优先级从低到高的顺序依次对目标历史业务请求按预设限速阈值进行流量限速;根据周期的剩余流量、限速的目标历史业务请求的个数和预设限速阈值确定周期的第二剩余流量;若第二剩余流量大于业务请求的第二预设流量,则对业务请求进行流量分配;若目标历史业务请求都被限速,且第二剩余流量小于或等于业务请求的第二预设流量,则对目标历史业务请求进行流量拒绝,并基于流量拒绝后的结果对业务请求进行流量分配。
[0116] 在上述实施例的基础上,分配模块303具体用于:若目标历史业务请求中存在已发送流量小于预设流量阈值的待拒绝历史业务请求,则对待拒绝历史业务请求进行拒绝;基于第二剩余流量和待拒绝历史业务请求的待发送流量确定周期的第三剩余流量;若第三剩余流量大于业务请求的第三预设流量,则对业务请求进行流量分配;若第三剩余流量小于或等于业务请求的第三预设流量,则基于业务请求的优先级与预设优先级阈值的关系对业务请求进行流量分配。
[0117] 在上述实施例的基础上,分配模块303具体用于:若业务请求的优先级小于或等于预设优先级阈值,则拒绝业务请求;若业务请求的优先级大于预设优先级阈值,则将业务请求放在下个周期进行流量分配。
[0118] 图4为本申请实施例提供的电子设备结构示意图,如图4所示,所述电子设备,包括处理器(processor)401、存储器(memory)402和总线403;其中,所述处理器401和存储器402通过所述总线403完成相互间的通信。所述处理器401用于调用所述存储器402中的程序指令,以执行上述各方法实施例所提供的方法。
[0119] 处理器401可以是一种集成电路芯片,具有信号处理能力。上述处理器401可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。其可以实现或者执行本申请实施例中公开的各种方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
[0120] 存储器402可以包括但不限于随机存取存储器(Random Access Memory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(Programmable Read‑Only Memory,PROM),可擦除只读存储器(Erasable Programmable Read‑Only Memory,EPROM),电可擦除只读存储器(Electrically Erasable Programmable Read‑Only Memory,EEPROM)等。
[0121] 本实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法。
[0122] 本实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述各方法实施例所提供的方法。
[0123] 在本申请所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0124] 另外,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0125] 再者,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
[0126] 以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。