一种基于单连接多请求的流量控制方法与流程

文档序号:15799516发布日期:2018-11-02 21:20阅读:318来源:国知局

本发明涉及互联网的技术领域,特别是涉及移动互联网中一种基于单连接多请求的流量控制方法。



背景技术:

由于在客户端与服务端间创建连接需要一定的时间且服务端允许同时打开的句柄数有一定限制,同时为了加快连接速度、减少服务器的开销,越来越多的客户端和服务端间的通讯采用在一个长连接上承载多个请求的通讯模型。但当并发多个请求时,各个请求之间也存在着竞争问题。

目前基于这种通讯模型主要有两个协议:

(1)pipeline协议

http pipeline是一项实现了多个http请求,且不需要等待相应的应答就能够写进同一个socket的技术。仅有http1.1规范支持,http1.0并不支持。然而,pipeline协议对多个请求的并发竞争没有控制,导致请求之间互相阻塞,不利于用户体验的改善。

(2)spdy协议

spdy协议是Google提出的基于传输控制协议(TCP)的应用层协议,通过压缩、多路复用和优先级来缩短加载时间。该协议是一种更加快速的内容传输协议,能够最小化网络延迟,提升网络速度,优化用户的网络使用体验。具体地,spdy协议采用的流控方法如下:客户端通知服务端各个请求已接收到的数据量,服务端改变对应请求的窗口大小来实现流控。为了控制客户端上行包的频度,客户端采用每收到一半窗口大小的数据即通知服务端接收的数据量,然而,采用上述方法时,存在服务端不能够及时获取已到达的数据量而导致控制比较粗放、不够实时,同时还增加了一个上行包的开销。

另外,在应用层做流量控制,在高速连接中没有问题。因为此时系统缓冲区的大小对传输效率影响较小。但是对于移动通信网络来说,低带宽高延迟是其特点,这个缓冲区的大小就会让流控变得不公平,极易产生大请求堵塞小请求的现象。



技术实现要素:

鉴于以上所述现有技术的缺点,本发明的目的在于提供一种基于单连接多请求的流量控制方法,利用系统自身的TCP机制,在服务端实时计算当前每个请求的窗口大小以提高流量控制的实时性,同时不需要客户端发送窗口变更通知,减少了上行的开销。

实现上述目的及其他相关目的,本发明提供一种基于单连接多请求的流量控制方法,包括以下步骤:步骤S1、服务端接收客户端发起的请求,记录请求编号,设定每个请求的大小为单个请求的最大发送窗口大小,并将请求转给源服务端;步骤S2、服务端接收到源服务器发回的响应后,将该响应切分成帧,放入待发送数据集合中该请求的响应链表中;步骤S3、服务端检测与客户端的连接是否可写,若是,进入步骤S4;若否,则不执行任何操作;步骤S4、依据系统缓冲区待发送数据大小来调整各个请求的发送窗口大小;步骤S5、从待发送数据集合中获取并发送数据到系统缓冲区中,转入步骤S3。

根据上述的基于单连接多请求的流量控制方法,其中:所述步骤S1中,所述单个请求的最大发送窗口大小由客户端发送至服务端。

进一步地,根据上述的基于单连接多请求的流量控制方法,其中:客户端向服务端发起TCP连接,并在该TCP连接上向服务端发起请求以及发送单个请求的最大发送窗口大小,并为每个请求进行编号。

根据上述的基于单连接多请求的流量控制方法,其中:所述步骤S2中,每个帧按切分先后顺序递减其优先级。

根据上述的基于单连接多请求的流量控制方法,其中:所述步骤S4包括以下步骤:

步骤S41、获取该连接的当前系统缓冲区待发送数据的大小;

步骤S42、从系统缓冲区待发送数据记录队列中由尾部向前进行截断,保证记录队列中节点的数据之和等于系统缓冲区待发送数据的大小;

步骤S43、将所有请求的缓冲区大小设置为初始值,依据系统缓冲区待发送数据记录队列缩减对应请求的发送窗口大小。

进一步地,根据上述的基于单连接多请求的流量控制方法,其中:所述步骤S41中,通过系统函数IOCTL获取该连接的当前系统缓冲区待发送数据的大小。

根据上述的基于单连接多请求的流量控制方法,其中:所述步骤S5中,从待发送数据集合中获取并发送数据到系统缓冲区包括以下步骤:

步骤S51、按照请求编号及放入待发送数据帧集合的先后顺序从待发送数据集合中取出一个待发送数据帧;

步骤S52、若取到一个待发送数据帧,则转入步骤S53;否则流程结束;

步骤S53、判断该数据帧的请求的发送窗口大小是否大于0,若是,则进入步骤S54,否则转入步骤S51;

步骤S54、将数据帧写入到系统缓冲区;

步骤S55、添加数据帧所属的请求编号及数据大小到系统缓冲区待发送数据记录队列中,并按数据大小缩减该请求的发送窗口大小,转入步骤S51。

如上所述,本发明的基于单连接多请求的流量控制方法,具有以下有益效果:

(1)利用系统自身的TCP机制,在服务端实时计算当前每个请求的窗口大小,从而提高了流量控制的实时性;

(2)不需要客户端发送窗口变更通知,减少了上行的开销;

(3)适合在类似EDGE这种低带宽高延迟的移动网络中,在大请求堵塞小请求的情况下,对并发性较强的移动应用有较好的效果;

(4)考虑了系统缓冲区对流控协议的影响,实时精确控制各请求的流量,保证了请求之间流量控制的公平性。

附图说明

图1显示为本发明的基于单连接多请求的流量控制方法的流程图;

图2显示为本发明中调整各个请求的发送窗口大小的流程图;

图3显示为本发明中发送数据到系统缓冲区的流程图。

具体实施方式

以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。

需要说明的是,本实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。

本发明的基于单连接多请求的流量控制方法中,在建立服务端与客户端间的连接时,设定单个请求允许的最大窗口大小;并对每个请求进行编号,将其响应按一定大小切分成帧,每个帧按顺序递减其优先级,放入该连接的待发送数据集合中;当连接可写时,通过获取当前系统缓冲区中尚未发送数据的大小,结合记录的连接的发送数据大小,计算每个请求的当前窗口大小,按照优先级及先后顺序写入当前窗口不为0的请求对应的响应帧,最后记录请求号及对应发送数据的大小并对应减少该请求的窗口大小。

参照图1,本发明的基于单连接多请求的流量控制方法具体包括以下步骤:

步骤S1、服务端接收客户端发起的请求,记录请求编号,设定每个请求的大小为单个请求的最大发送窗口大小,并将请求转给源服务端。

其中,单个请求的最大发送窗口大小由客户端发送至服务端。具体地,客户端向服务端发起TCP连接,并在该TCP连接上向服务端发起请求以及发送单个请求的最大发送窗口大小,并为每个请求进行编号。

步骤S2、服务端接收到源服务器发回的响应后,将该响应切分成帧,放入待发送数据集合中该请求的响应链表中。

具体地,将响应按照一定大小切分成帧。每个帧按切分先后顺序递减其优先级,放入该连接的待发送数据集合中。每个帧的大小根据不同的应用场景而不同。

步骤S3、服务端检测与客户端的连接是否可写,若是,进入步骤S4;若否,则不执行任何操作。

步骤S4、依据系统缓冲区待发送数据大小来调整各个请求的发送窗口大小。

其中,系统缓冲区设置在服务端。

参照图2,步骤S4又包括以下步骤:

步骤S41、获取该连接的当前系统缓冲区待发送数据的大小。

具体地,通过系统函数IOCTL获取该连接的当前系统缓冲区待发送数据的大小。

步骤S42、从系统缓冲区待发送数据记录队列中由尾部向前进行截断,保证记录队列中节点的数据之和等于系统缓冲区待发送数据的大小。

步骤S43、将所有请求的缓冲区大小设置为初始值,依据系统缓冲区待发送数据记录队列缩减对应请求的发送窗口大小。

具体地,缓冲区的大小根据不同的应用场景来进行设定。缩减后请求的发送窗口大小等于请求的缓冲区大小减去系统缓冲区待发送数据大小。

下面通过具体的实施例来阐述请求发送窗口的调整。

设定的单个请求的最大发送窗口大小为16KB,场景为同时3个请求的响应数据同时到达。具体流程见表1。

表1、请求发送窗口的调整

步骤S5、从待发送数据集合中获取并发送数据到系统缓冲区中,转入步骤S3。

具体地,从待发送数据集合中获取并发送数据到系统缓冲区包括以下步骤:

步骤S51、按照请求编号及放入待发送数据帧集合的先后顺序从待发送数据集合中取出一个待发送数据帧。

步骤S52、若取到一个待发送数据帧,则转入步骤S53;否则流程结束。

步骤S53、判断该数据帧的请求的发送窗口大小是否大于0,若是,则进入步骤S54,否则转入步骤S51。

步骤S54、将数据帧写入到系统缓冲区。

步骤S55、添加数据帧所属的请求编号及数据大小到系统缓冲区待发送数据记录队列中,并按照数据大小缩减该请求的发送窗口大小,转入步骤S51。

由上可知,本发明的基于单连接多请求的流量控制方法通过精确控制,使得每个请求进入系统缓冲区的大小小于等于设定的最大窗口大小,从而在不增加系统负荷的前提下实现了流量控制。

综上所述,本发明的基于单连接多请求的流量控制方法利用系统自身的TCP机制,在服务端实时计算当前每个请求的窗口大小,从而提高了流量控制的实时性;不需要客户端发送窗口变更通知,减少了上行的开销,适合在类似EDGE这种低带宽高延迟的移动网络中,在大请求堵塞小请求的情况下,对并发性较强的移动应用有较好的效果;考虑了系统缓冲区对流控协议的影响,实时精确控制各请求的流量,保证了请求之间流量控制的公平性。所以,本发明有效克服了现有技术中的种种缺点而具高度产业利用价值。

上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1