一种HTTP限速方法和装置制造方法及图纸

技术编号:22266657 阅读:41 留言:0更新日期:2019-10-10 17:09
本发明专利技术公开了一种HTTP限速方法和装置,属于网络通信技术领域。方法包括:当接收到目标HTTP请求的响应触发时,获取当前时刻所处的当前周期与第一目标周期的第一周期序号差值;如果第一周期序号差值为零,则计算目标HTTP请求在当前周期内的已发送字节数,并基于已发送字节数和目标HTTP请求所在进程的进程上下文中的共享请求数,确定目标HTTP请求在当前周期内的可发送字节数;如果第一周期序号差值不为零,则基于目标HTTP请求所在进程的进程上下文,或者进程上下文与共享内存上下文,确定进程上下文中的共享请求数,基于已发送字节数和共享请求数,确定目标HTTP请求在当前周期内的可发送字节数。采用本发明专利技术,可以减少读写锁操作,提高CDN服务器的服务质量。

An HTTP Speed Limiting Method and Device

【技术实现步骤摘要】
一种HTTP限速方法和装置
本专利技术涉及网络通信
,特别涉及一种HTTP限速方法和装置。
技术介绍
随着互联网的飞速发展,服务器需要服务的客户端数量也变得极其巨大。由于服务器对外提供服务所产生的流量也需要带宽成本,因此,为了减少带宽成本,服务器可以对客户端发起的连接进行限速。一般而言,服务器可以在TCP(TransmissionControlProtocol,传输控制协议)层上对某个端口或者某个客户端IP(InternetProtocol,网络互连协议)地址的访问速度进行限速。然而,对于CDN(ContentDeliveryNetwork,内容分发网络)服务器而言,这样的限速方式是不够的。由于CDN服务器通常服务多个域名,且每个域名有不同的限速需求,因此,CDN服务器可以在HTTP(HyperTextTransferProtocol,超文本传输协议)层上,对不同域名的HTTP连接的响应速度进行限速。另外,在单个客户端向CDN服务器创建同一域名的多条HTTP连接的情形下,CDN服务器可以进一步采用漏桶算法或令牌桶算法等限速算法,对该多条HTTP连接进行统一限速。在实现本专利技术的过程中,专利技术人发现现有技术至少存在以下问题:CDN服务器一般以多进程方式运行,这样,上述同一域名的多条HTTP连接通常由不同进程处理。由于多个进程采用限速算法的相同限速参数对上述多条HTTP连接进行限速处理,因此,该多个进程需要对同一内存上下文(可称为共享内存上下文)进行频繁的读写锁操作,这将占用大量的系统资源,导致CDN服务器的服务质量较差。
技术实现思路
为了解决现有技术的问题,本专利技术实施例提供了一种HTTP限速方法和装置。所述技术方案如下:第一方面,提供了一种HTTP限速方法,所述方法包括:当接收到目标HTTP请求的响应触发时,获取当前时刻所处的当前周期与第一目标周期的第一周期序号差值,其中,所述第一目标周期为所述目标HTTP请求的请求上下文中的记录时刻所处的周期;如果所述第一周期序号差值为零,则计算所述目标HTTP请求在所述当前周期内的已发送字节数,并基于所述已发送字节数和所述目标HTTP请求所在进程的进程上下文中的共享请求数,确定所述目标HTTP请求在所述当前周期内的可发送字节数;如果所述第一周期序号差值不为零,则基于所述目标HTTP请求所在进程的进程上下文,或者所述进程上下文与共享内存上下文,确定所述进程上下文中的共享请求数,计算所述目标HTTP请求在所述当前周期内的已发送字节数,并基于所述已发送字节数和所述共享请求数,确定所述目标HTTP请求在所述当前周期内的可发送字节数。进一步的,所述获取当前时刻所处的当前周期与第一目标周期的第一周期序号差值,包括:基于所述当前时刻的数值确定所述当前周期的当前周期序号;基于所述目标HTTP请求的请求上下文中的记录时刻的数值,确定所述第一目标周期的第一目标周期序号;用所述当前周期序号减去所述第一目标周期序号,得到所述第一周期序号差值。进一步的,所述基于所述当前时刻的数值确定所述当前周期的当前周期序号,包括:将所述当前时刻的数值中的秒值确定为所述当前周期的当前周期序号;所述基于所述目标HTTP请求的请求上下文中的记录时刻的数值,确定所述第一目标周期的第一目标周期序号,包括:将所述请求上下文中的记录时刻的数值中的秒值,确定为所述第一目标周期的第一目标周期序号。进一步的,所述计算所述目标HTTP请求在所述当前周期内的已发送字节数,包括:获取截止到当前时刻所述目标HTTP请求的总发送字节数;获取记录在所述请求上下文中的记录发送字节数;用所述总发送字节数减去所述记录发送字节数,得到所述目标HTTP请求在所述当前周期内的已发送字节数。进一步的,所述基于所述已发送字节数和所述目标HTTP请求所在进程的进程上下文中的共享请求数,确定所述目标HTTP请求在所述当前周期内的可发送字节数,包括:根据所述进程上下文中的所述共享请求数确定所述目标HTTP请求在所述当前周期内的限速字节数;用所述限速字节数减去所述已发送字节数,得到所述目标HTTP请求在所述当前周期内的可发送字节数。进一步的,所述基于所述目标HTTP请求所在进程的进程上下文,或者所述进程上下文与共享内存上下文,确定所述进程上下文中的共享请求数,包括:当所述第一周期序号差值等于第一差值时,获取所述当前周期与第二目标周期的第二周期序号差值,其中,所述第二目标周期为所述进程上下文中的记录时刻所处的周期;如果所述第二周期序号差值为零,则保持所述进程上下文中的共享请求数不变;如果所述第二周期序号差值等于第一差值,则基于所述共享内存上下文更新所述进程上下文中的共享请求数。进一步的,所述基于所述共享内存上下文更新所述进程上下文中的共享请求数,包括:获取所述当前周期与第三目标周期的第三周期序号差值,其中,所述第三目标周期为所述共享内存上下文中的记录时刻所处的周期;如果所述第三周期序号差值等于第一差值,则将所述共享请求数赋值为所述共享内存上下文中的前一记录请求数的值;以及,基于所述进程上下文中的记录请求数对所述共享内存上下文中的记录请求数做更新处理,将所述进程上下文中的记录时刻设置为当前时刻,将所述进程上下文中的记录请求数置为一,将所述请求上下文中的记录时刻设置为当前时刻,将记录在所述请求上下文中的记录发送字节数,赋值为截止到当前时刻所述目标HTTP请求的总发送字节数的值;如果所述第三周期序号差值等于第二差值,则将所述共享内存上下文中的前一记录请求数,赋值为所述共享内存上下文中的记录请求数的值,再将所述共享请求数赋值为所述共享内存上下文中的前一记录请求数的值;以及,将所述共享内存上下文中的记录时刻设置为当前时刻在前一周期的对应时刻,将所述共享内存上下文中的记录请求数赋值为所述进程上下文中的记录请求数的值,将所述进程上下文中的记录时刻设置为当前时刻,将所述进程上下文中的记录请求数置为一,将所述请求上下文中的记录时刻设置为当前时刻,将记录在所述请求上下文中的记录发送字节数,赋值为截止到当前时刻所述目标HTTP请求的总发送字节数的值。进一步的,所述基于所述目标HTTP请求所在进程的进程上下文,或者所述进程上下文与共享内存上下文,确定所述进程上下文中的共享请求数,包括:当所述第一周期序号差值大于等于第二差值时,获取所述当前周期与第二目标周期的第二周期序号差值,其中,所述第二目标周期为所述进程上下文中的记录时刻所处的周期;如果所述第二周期序号差值为零,则保持所述进程上下文中的共享请求数不变;如果所述第二周期序号差值不为零,则基于所述共享内存上下文更新所述进程上下文中的共享请求数。进一步的,所述基于所述共享内存上下文更新所述进程上下文中的共享请求数,包括:当所述第二周期序号差值等于第一差值时,获取所述当前周期与第三目标周期的第三周期序号差值,其中,所述第三目标周期为所述共享内存上下文中的记录时刻所处的周期;如果所述第三周期序号差值等于第一差值,则将所述共享请求数赋值为所述共享内存上下文中的前一记录请求数的值;以及,基于所述进程上下文中的记录请求数对所述共享内存上下文中的记录请求数做更新处理,将所述进程上下文中的记录时刻设置为当前时刻,将所述进程上下文中的记录请求数本文档来自技高网...

【技术保护点】
1.一种HTTP限速方法,其特征在于,所述方法包括:当接收到目标HTTP请求的响应触发时,获取当前时刻所处的当前周期与第一目标周期的第一周期序号差值,其中,所述第一目标周期为所述目标HTTP请求的请求上下文中的记录时刻所处的周期;如果所述第一周期序号差值为零,则计算所述目标HTTP请求在所述当前周期内的已发送字节数,并基于所述已发送字节数和所述目标HTTP请求所在进程的进程上下文中的共享请求数,确定所述目标HTTP请求在所述当前周期内的可发送字节数;如果所述第一周期序号差值不为零,则基于所述目标HTTP请求所在进程的进程上下文,或者所述进程上下文与共享内存上下文,确定所述进程上下文中的共享请求数,计算所述目标HTTP请求在所述当前周期内的已发送字节数,并基于所述已发送字节数和所述共享请求数,确定所述目标HTTP请求在所述当前周期内的可发送字节数。

【技术特征摘要】
1.一种HTTP限速方法,其特征在于,所述方法包括:当接收到目标HTTP请求的响应触发时,获取当前时刻所处的当前周期与第一目标周期的第一周期序号差值,其中,所述第一目标周期为所述目标HTTP请求的请求上下文中的记录时刻所处的周期;如果所述第一周期序号差值为零,则计算所述目标HTTP请求在所述当前周期内的已发送字节数,并基于所述已发送字节数和所述目标HTTP请求所在进程的进程上下文中的共享请求数,确定所述目标HTTP请求在所述当前周期内的可发送字节数;如果所述第一周期序号差值不为零,则基于所述目标HTTP请求所在进程的进程上下文,或者所述进程上下文与共享内存上下文,确定所述进程上下文中的共享请求数,计算所述目标HTTP请求在所述当前周期内的已发送字节数,并基于所述已发送字节数和所述共享请求数,确定所述目标HTTP请求在所述当前周期内的可发送字节数。2.根据权利要求1所述的方法,其特征在于,所述获取当前时刻所处的当前周期与第一目标周期的第一周期序号差值,包括:基于所述当前时刻的数值确定所述当前周期的当前周期序号;基于所述目标HTTP请求的请求上下文中的记录时刻的数值,确定所述第一目标周期的第一目标周期序号;用所述当前周期序号减去所述第一目标周期序号,得到所述第一周期序号差值。3.根据权利要求2所述的方法,其特征在于,所述基于所述当前时刻的数值确定所述当前周期的当前周期序号,包括:将所述当前时刻的数值中的秒值确定为所述当前周期的当前周期序号;所述基于所述目标HTTP请求的请求上下文中的记录时刻的数值,确定所述第一目标周期的第一目标周期序号,包括:将所述请求上下文中的记录时刻的数值中的秒值,确定为所述第一目标周期的第一目标周期序号。4.根据权利要求1所述的方法,其特征在于,所述计算所述目标HTTP请求在所述当前周期内的已发送字节数,包括:获取截止到当前时刻所述目标HTTP请求的总发送字节数;获取记录在所述请求上下文中的记录发送字节数;用所述总发送字节数减去所述记录发送字节数,得到所述目标HTTP请求在所述当前周期内的已发送字节数。5.根据权利要求4所述的方法,其特征在于,所述基于所述已发送字节数和所述目标HTTP请求所在进程的进程上下文中的共享请求数,确定所述目标HTTP请求在所述当前周期内的可发送字节数,包括:根据所述进程上下文中的所述共享请求数确定所述目标HTTP请求在所述当前周期内的限速字节数;用所述限速字节数减去所述已发送字节数,得到所述目标HTTP请求在所述当前周期内的可发送字节数。6.根据权利要求1所述的方法,其特征在于,所述基于所述目标HTTP请求所在进程的进程上下文,或者所述进程上下文与共享内存上下文,确定所述进程上下文中的共享请求数,包括:当所述第一周期序号差值等于第一差值时,获取所述当前周期与第二目标周期的第二周期序号差值,其中,所述第二目标周期为所述进程上下文中的记录时刻所处的周期;如果所述第二周期序号差值为零,则保持所述进程上下文中的共享请求数不变;如果所述第二周期序号差值等于第一差值,则基于所述共享内存上下文更新所述进程上下文中的共享请求数。7.根据权利要求6所述的方法,其特征在于,所述基于所述共享内存上下文更新所述进程上下文中的共享请求数,包括:获取所述当前周期与第三目标周期的第三周期序号差值,其中,所述第三目标周期为所述共享内存上下文中的记录时刻所处的周期;如果所述第三周期序号差值等于第一差值,则将所述共享请求数赋值为所述共享内存上下文中的前一记录请求数的值;以及,基于所述进程上下文中的记录请求数对所述共享内存上下文中的记录请求数做更新处理,将所述进程上下文中的记录时刻设置为当前时刻,将所述进程上下文中的记录请求数置为一,将所述请求上下文中的记录时刻设置为当前时刻,将记录在所述请求上下文中的记录发送字节数,赋值为截止到当前时刻所述目标HTTP请求的总发送字节数的值。8.根据权利要求6所述的方法,其特征在于,所述基于所述共享内存上下文更新所述进程上下文中的共享请求数,包括:获取所述当前周期与第三目标周期的第三周期序号差值,其中,所述第三目标周期为所述共享内存上下文中的记录时刻所处的周期;如果所述第三周期序号差值等于第二差值,则将所述共享内存上下文中的前一记录请求数,赋值为所述共享内存上下文中的记录请求数的值,再将所述共享请求数赋值为所述共享内存上下文中的前一记录请求数的值;以及,将所述共享内存上下文中的记录时刻设置为当前时刻在前一周期的对应时刻,将所述共享内存上下文中的记录请求数赋值为所述进程上下文中的记录请求数的值,将所述进程上下文中的记录时刻设置为当前时刻,将所述进程上下文中的记录请求数置为一,将所述请求上下文中的记录时刻设置为当前时刻,将记录在所述请求上下文中的记录发送字节数,赋值为截止到当前时刻所述目标HTTP请求的总发送字节数的值。9.根据权利要求1所述的方法,其特征在于,所述基于所述目标HTTP请求所在进程的进程上下文,或者所述进程上下文与共享内存上下文,确定所述进程上下文中的共享请求数,包括:当所述第一周期序号差值大于等于第二差值时,获取所述当前周期与第二目标周期的第二周期序号差值,其中,所述第二目标周期为所述进程上下文中的记录时刻所处的周期;如果所述第二周期序号差值为零,则保持所述进程上下文中的共享请求数不变;如果所述第二周期序号差值不为零,则基于所述共享内存上下文更新所述进程上下文中的共享请求数。10.根据权利要求9所述的方法,其特征在于,所述基于所述共享内存上下文更新所述进程上下文中的共享请求数,包括:当所述第二周期序号差值等于第一差值时,获取所述当前周期与第三目标周期的第三周期序号差值,其中,所述第三目标周期为所述共享内存上下文中的记录时刻所处的周期;如果所述第三周期序号差值等于第一差值,则将所述共享请求数赋值为所述共享内存上下文中的前一记录请求数的值;以及,基于所述进程上下文中的记录请求数对所述共享内存上下文中的记录请求数做更新处理,将所述进程上下文...

【专利技术属性】
技术研发人员:李琛林金棚
申请(专利权)人:网宿科技股份有限公司
类型:发明
国别省市:上海,31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1