技术领域
[0001] 本
发明涉及计算机通信技术领域,尤其涉及一种服务器、基于延时队列的限流保护系统及方法。
背景技术
[0002] 目前,对于高并发
请求,服务器为了进行过载保护通常会设置先入先出(First Input First Output,FIFO)队列。
[0003] 为了限制并发请求的处理数量可以进行
信号量控制,其中,拿到信事情令牌的请求则允许服务器进入处理,没有拿到信事情令牌的请求则视为过载而返回繁忙信息。此外,进一步地,还可以通过计数器和时间控制固定时间区间内通过的请求量进行限流保护。
[0004] 但现有的队列保护策略只能针对服务器处理能
力不足的情况,不能满足服务器处理能力过剩而受限于例如网卡流量资源等的情况,而通过计数器和时间控制固定时间区间内通过的请求量进行限流保护时,由于时间区间是固定的,不能满足用户请求随机分布的情况。
发明内容
[0005] 有鉴于此,本发明提供一种能满足用户请求随机分布的情况及服务器处理能力过剩的情况的基于延时队列的限流保护方法。
[0006] 本发明
实施例提供一种基于延时队列的限流保护方法,所述基于延时队列的限流保护方法包括收集并分析服务器的性能参数,从而获取延时队列中的请求数量的
阀值及请求的占位时间;接收用户终端发送的请求;判断所述延时队列中的请求数量是否超过阀值;若所述延时队列中的请求数量未超过阀值,则将所述请求加入所述延时队列,并在所述请求满足所述占位时间时,让所述请求离开所述延时队列;以及若所述延时队列的请求数量超过阀值,则发送繁忙信息至所述用户终端。
[0007] 本发明实施例还提供一种服务器,所述服务器包括获取模
块、流量控
制模块。所述获取模块用于收集并分析所述服务器的性能参数,从而获取延时队列中的请求数量的阀值及请求的占位时间;所述流量
控制模块用于接收用户终端发送的请求,并在所述延时队列中的请求数量未超过阀值时,将所述请求加入所述延时队列,且在所述延时队列中的所述请求满足所述占位时间时,让所述请求离开所述延时队列。
[0008] 本发明实施例还提供一种基于延时队列的限流保护系统,所述基于延时队列的限流保护系统包括用户终端及服务器;所述用户终端用于发送请求至所述服务器;所述服务器用于收集并分析所述服务器的性能参数,从而获取延时队列中的请求数量的阀值及所述请求的占位时间,并在所述延时队列中的请求数量未超过阀值时,将所述请求加入所述延时队列,且在所述延时队列中的所述请求满足所述占位时间时,让所述请求离开所述延时队列。
[0009] 本发明的服务器、基于延时队列的限流保护系统及方法能实时根据延时队列中的请求的数量响应用户终端的请求,能满足用户请求随机分布的情况,且在延时队列中的所述请求满足所述占位时间时才将延时队列中的请求数量相应地减少,能满足服务器处理能力过剩的情况。
[0010] 为让本发明的上述和其他目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所
附图式,作详细说明如下。
附图说明
[0011] 图1为本发明第一实施例提供的服务器的结构示意图。
[0012] 图2示出一种延时队列的结构示意图。
[0014] 图4为本发明第二实施例提供的基于延时队列的限流保护系统的结构示意图。
[0015] 图5为本发明第三实施例提供的基于延时队列的限流保护方法的流程示意图。
[0016] 图6为如图5所示的基于延时队列的限流保护方法的应用环境示意图。
[0017] 图7为本发明第四实施例提供的基于延时队列的限流保护方法的流程示意图。
[0018] 图8为本发明第五实施例提供的基于延时队列的限流保护方法的流程示意图。
具体实施方式
[0019] 为更进一步阐述本发明为实现预定发明目的所采取的技术手段及功效,以下结合附图及较佳实施例,对依据本发明的具体实施方式、结构、特征及其功效,详细说明如后。
[0020] 第一实施例
[0021] 图1为本发明第一实施例提供的服务器的结构示意图。如图1所示,服务器10包括获取模块100及流量控制模块101。
[0022] 其中,获取模块100用于收集并分析服务器10的性能参数,从而获取延时队列中的请求数量的阀值及请求的占位时间。
[0023] 具体地,服务器10的性能参数可以但不限于包括网卡流量、输入输出
接口的使用情况所分别对应的性能参数。当然本领域的技术人员可以理解的是,服务器10的性能参数还可以但不限于还包括
中央处理器负载情况等等对应的性能参数。
[0024] 其中,流量控制模块101用于接收用户终端发送的请求,并在延时队列中的请求数量未超过阀值时,将请求加入延时队列,且在延时队列中的请求满足占位时间时,让请求离开延时队列。
[0025] 具体地,用户终端可以但不限于为手机、
平板电脑等等终端设备。用户终端可与各种网络如互联网、企业内部网、无线网络进行通讯例如通过无线网络发送请求至服务器。上述的无线网络可包括蜂窝式电话网、无线局域网或者城域网。上述的无线网络可以使用各种通信标准、协议及技术。
[0026] 其中,延时队列为可以但不限于为以时间戳为优先级的延时队列,当然本领域的技术人员可以理解的是,延时队列也可以以其它例如请求的类型等为优先级的队列。
[0027] 图2示出一种延时队列的结构示意图。其中,延时队列为以时间戳为优先级的延时队列,也就是说延时队列头部为时间戳(入队这一刻的时间)最小的请求,延时队列尾部为时间戳最大的请求。如图2所示,延时队列共包括9个请求,延时队列中的时间表示对应请求出队的剩余时间,例如,假若延时队列中的请求数量的阀值为9,请求的占位时间为1秒(s),那么,只有在100毫秒(ms)以后,才有可能有下一个请求加入延时队列即当延时队列被塞满(请求数量达到阀值),只有在有请求离开延时队列时,下一个请求才能加入延时队列。此外,每个请求在延时队列都必须满足1s才能离开延时队列。
[0028] 值得一提的是,每个请求在延时队列都必须满足占位时间才能离开延时队列,但服务器实际响应请求的时间可能但不限于先于请求离开延时队列的时间。
[0029] 本发明实施例提供的服务器能实时根据延时队列中的请求的数量响应用户终端的请求,能满足用户请求随机分布的情况,且在延时队列中的所述请求满足所述占位时间时才将延时队列中的请求数量相应地减少,能满足服务器处理能力过剩的情况。
[0030] 图3示出一种用户终端的结构框图。如图3所示,用户终端包括
存储器202、存储
控制器204,一个或多个(图中仅示出一个)处理器206、外设接口208、射频模块210、
定位模块212、摄像模块214、音频模块216、触控屏幕218以及按键模块220。这些组件通过一条或多条通讯总线/信号线相互通讯。
[0031] 可以理解,图3所示的结构仅为示意,用户终端还可包括比图3中所示更多或者更少的组件,或者具有与图3所示相比不同的配置。图3中所示的各组件可以采用
硬件、
软件或其组合实现。
[0032] 存储器202可用于存储软件程序以及模块。处理器202通过运行存储在存储器204内的软件程序以及模块,从而执行各种功能应用以及
数据处理。
[0033] 存储器202可包括高速随机存储器,还可包括
非易失性存储器,如一个或者多个
磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器202可进一步包括相对于处理器206远程设置的存储器,这些远程存储器可以通过网络连接至用户终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。处理器206以及其他可能的组件对存储器202的
访问可在存储控制器204的控制下进行。
[0034] 外设接口208将各种输入/输出装置耦合至处理器206以及存储器202。处理器206运行存储器202内的各种软件、指令以执行用户终端的各种功能以及进行数据处理。
[0035] 在一些实施例中,外设接口208、处理器206以及存储控制器204可以在单个芯片中实现。在其它实例中,外设接口208、处理器206以及存储控制器204可以分别由独立的芯片实现。
[0036] 射频模块210用于接收以及发送
电磁波,实现电磁波与
电信号的相互转换,从而与通讯网络或者其他设备进行通讯。射频模块210可包括各种现有的用于执行这些功能的
电路元件,例如,天线、射频收发器、
数字信号处理器、加密/解密芯片、用户身份模块(SIM)卡、存储器等等。射频模块210可与各种网络如互联网、企业内部网、无线网络进行通讯或者通过无线网络与其他设备进行通讯。上述的无线网络可包括蜂窝式电话网、无线局域网或者城域网。上述的无线网络可以使用各种通信标准、协议及技术,包括但并不限于全球移动通信系统(Global System for Mobile Communication,GSM)、增强型移动通信技术(Enhanced Data GSM Environment,EDGE),宽带码分多址技术(wideband code division multiple access,W-CDMA),码分多址技术(Code division access,CDMA)、时分多址技术(time division multiple access,TDMA),蓝牙,无线保真技术(Wireless,Fidelity,WiFi)(如美国电气和
电子工程师协会标准IEEE 802.11a,IEEE 802.11b,IEEE802.11g和/或IEEE 802.11n)、网络电话(Voice over internet protocal,VoIP)、全球
微波互联接入(Worldwide Interoperability for Microwave Access,Wi-Max)、其他用于邮件、即时通讯及短消息的协议,以及任何其他合适的通讯协议,甚至可包括那些当前仍未被开发出来的协议。
[0037] 定位模块212用于获取用户终端的当前
位置。定位模块212的实例包括但不限于全球卫星定位系统(GPS)、基于无线局域网或者移动通信网的定位技术。
[0038] 摄像模块214用于拍摄照片或者视频。拍摄的照片或者视频可以存储至存储器202内,并可通过射频模块210发送。
[0039] 音频模块216向用户提供音频接口,其可包括一个或多个麦克
风、一个或者多个扬声器以及音频电路。音频模块216从外设接口208处接收声音数据,将声音数据转换为电信息,将电信息传输至扬声器。扬声器将电信息转换为人
耳能听到的
声波。音频电路还从麦克风处接收电信息,将电信号转换为声音数据,并将声音数据传输至外设接口208中以进行进一步的处理。音频数据可以从存储器202处或者通过射频模块210获取。此外,音频数据也可以存储至存储器202中或者通过射频模块210进行发送。在一些实例中,音频模块216还可包括一个耳机播孔,用于向耳机或者其他设备提供音频接口。
[0040] 触控屏幕218在用户终端与用户之间同时提供一个输出及输入界面。触控屏幕218用于向用户显示视频输出,这些视频输出的内容可包括文字、图形、视频、及其任意组合。触控屏幕218还用于接收用户的输入,例如用户的点击、滑动等手势操作,以便
用户界面对象对这些用户的输入做出响应。检测用户输入的技术可以是基于
电阻式、电容式或者其他任意可能的触控检测技术。触控屏幕218显示单元的具体实例包括但并不限于
液晶显示器或发光
聚合物显示器。
[0041] 按键模块220同样提供用户向用户终端进行输入的接口,用户可以通过按下不同的按键以使用户终端执行不同的功能。
[0042] 第二实施例
[0043] 图4为本发明第二实施例提供的基于延时队列的限流保护系统的结构示意图。如图4所示,基于延时队列的限流保护系统包括服务器30及用户终端40。
[0044] 其中,用户终端40用于发送请求至所述服务器30。
[0045] 具体地,用户终端40可以但不限于为手机、平板电脑等等终端设备。用户终端40可与各种网络如互联网、企业内部网、无线网络进行通讯例如通过无线网络发送请求至服务器30。无线网络可以使用各种通信标准、协议及技术。
[0046] 服务器30用于收集并分析服务器30的性能参数,从而获取延时队列中的请求数量的阀值及请求的占位时间,并在延时队列中的请求数量未超过阀值时,将接收的用户终端40发送的请求加入延时队列,且在延时队列中的请求满足占位时间时,让请求离开延时队列。
[0047] 具体地,服务器30的性能参数可以但不限于包括网卡流量、输入输出接口的使用情况所分别对应的性能参数。当然本领域的技术人员可以理解的是,服务器30的性能参数还可以但不限于还包括中央处理器负载情况等等对应的性能参数。
[0048] 其中,延时队列为可以但不限于为以时间戳为优先级的延时队列,当然本领域的技术人员可以理解的是,延时队列也可以以其它例如请求的类型等为优先级的队列。
[0049] 值得一提的是,每个请求在延时队列都必须满足占位时间才能离开延时队列,但服务器实际响应请求的时间可能但不限于先于请求离开延时队列的时间。
[0050] 本发明实施例提供的基于延时队列的限流保护系统能实时根据延时队列中的请求的数量响应用户终端的请求,能满足用户请求随机分布的情况,且在延时队列中的所述请求满足所述占位时间时才将延时队列中的请求数量相应地减少,能满足服务器处理能力过剩的情况。
[0051] 第三实施例
[0052] 图5为本发明第三实施例提供的基于延时队列的限流保护方法的流程示意图。图6为如图5所示的基于延时队列的限流保护方法的应用环境示意图。
[0053] 请同时参考图5及图6,基于延时队列的限流保护方法包括如下步骤:
[0054] 步骤S51:收集并分析服务器50的性能参数,从而获取延时队列中的请求数量的阀值及请求的占位时间;
[0055] 具体地,服务器50的性能参数可以但不限于包括网卡流量、输入输出接口的使用情况所分别对应的性能参数。当然本领域的技术人员可以理解的是,服务器50的性能参数还可以但不限于还包括中央处理器负载情况等等对应的性能参数。
[0056] 其中,延时队列为可以但不限于为以时间戳为优先级的延时队列,当然本领域的技术人员可以理解的是,延时队列也可以以其它例如请求的类型等为优先级的队列。
[0057] 步骤S52:接收用户终端60发送的请求;
[0058] 具体地,用户终端60可以但不限于为手机、平板电脑等等终端设备。用户终端60可与各种网络如互联网、企业内部网、无线网络进行通讯例如通过无线网络发送请求至服务器50。无线网络可以使用各种通信标准、协议及技术。
[0059] 步骤S53:判断延时队列中的请求数量是否超过阀值;
[0060] 若延时队列中的请求数量未超过阀值,则进入步骤S54:将请求加入延时队列,并在请求满足占位时间时,让请求离开延时队列;
[0061] 值得一提的是,每个请求在延时队列都必须满足占位时间才能离开延时队列,但服务器实际响应请求的时间可能但不限于先于请求离开延时队列的时间。
[0062] 若延时队列的请求数量超过阀值,则进入步骤S55:发送繁忙信息至用户终端60。
[0063] 本发明实施例提供的基于延时队列的限流保护方法能实时根据延时队列中的请求的数量响应用户终端的请求,能满足用户请求随机分布的情况,且在延时队列中的所述请求满足所述占位时间时才将延时队列中的请求数量相应地减少,能满足服务器处理能力过剩的情况。
[0064] 第四实施例
[0065] 图7为本发明第四实施例提供的基于延时队列的限流保护方法的流程示意图。基于延时队列的限流保护方法包括如下步骤:
[0066] 步骤S71:收集并分析服务器的性能参数,从而获取延时队列中的请求数量的阀值及请求的占位时间;
[0067] 具体地,服务器的性能参数可以但不限于包括网卡流量、输入输出接口的使用情况所分别对应的性能参数。当然本领域的技术人员可以理解的是,服务器的性能参数还可以但不限于还包括中央处理器负载情况等等对应的性能参数。
[0068] 具体地,延时队列为可以但不限于为以时间戳为优先级的延时队列,当然本领域的技术人员可以理解的是,延时队列也可以以其它例如请求的类型等为优先级的队列。
[0069] 步骤S72:接收用户终端发送的请求;
[0070] 具体地,用户终端可以但不限于为手机、平板电脑等等终端设备。用户终端可以但不限于通过各种网络发送请求至服务器。
[0071] 步骤S73:判断延时队列中的请求数量是否超过阀值;
[0072] 若延时队列中的请求数量未超过阀值,则进入步骤S74:将请求加入延时队列;
[0073] 步骤S75:判断延时队列中的请求是否满足占位时间;
[0074] 若延时队列中的请求满足占位时间,则进入步骤S76:让请求离开延时队列;
[0075] 若延时队列中的请求未满足占位时间,则返回步骤S75。
[0076] 具体地,实时判断请求是否满足占位时间,若请求在延时队列内待的时间满足占位时间则让请求离开延时队列,若请求在延时队列内待的时间不满足占位时间,则重复判断直至其满足占位时间。
[0077] 若延时队列的请求数量超过阀值,则进入步骤S77:发送繁忙信息至用户终端。
[0078] 值得一提的是,每个请求在延时队列都必须满足占位时间才能离开延时队列,但服务器实际响应请求的时间可能但不限于先于请求离开延时队列的时间。
[0079] 本发明实施例提供的基于延时队列的限流保护方法能实时根据延时队列中的请求的数量响应用户终端的请求,能满足用户请求随机分布的情况,且实时判断延时队列中的所述请求是否满足所述占位时间,并在所述请求满足所述占位时间时才将延时队列中的请求数量相应地减少,能满足服务器处理能力过剩的情况。
[0080] 第五实施例
[0081] 图8为本发明第五实施例提供的基于延时队列的限流保护方法的流程示意图。
[0082] 基于延时队列的限流保护方法包括如下步骤:
[0083] 步骤S81:收集并分析服务器的性能参数,从而获取延时队列中的请求数量的阀值及请求的占位时间;
[0084] 具体地,服务器的性能参数可以但不限于包括网卡流量、输入输出接口的使用情况所分别对应的性能参数。当然本领域的技术人员可以理解的是,服务器的性能参数还可以但不限于还包括中央处理器负载情况等等对应的性能参数。
[0085] 具体地,延时队列为可以但不限于为以时间戳为优先级的延时队列,当然本领域的技术人员可以理解的是,延时队列也可以以其它例如请求的类型等为优先级的队列。
[0086] 步骤S82:接收用户终端发送的请求;
[0087] 具体地,用户终端可以但不限于为手机、平板电脑等等终端设备。用户终端可以但不限于通过各种网络发送请求至服务器。
[0088] 步骤S83:判断延时队列中的请求数量是否超过阀值;
[0089] 若延时队列中的请求数量未超过阀值,则进入步骤S84:将请求加入延时队列;
[0090] 步骤S85:获取请求加入延时队列的时间戳;
[0091] 具体地,获取请求加入延时队列的时间戳也就是获取请求加入延时队列这一刻的时间。
[0092] 步骤S86:等待占位时间后,让请求离开延时队列;
[0093] 具体地,例如占位时间为1s,则在请求加入延时队列后1S,让请求离开延时队列。
[0094] 值得一提的是,每个请求在延时队列都必须满足占位时间才能离开延时队列,但服务器实际响应请求的时间可能但不限于先于请求离开延时队列的时间。
[0095] 延时队列的请求数量超过阀值,则进入步骤S87:若发送繁忙信息至用户终端。
[0096] 本发明实施例提供的基于延时队列的限流保护方法能实时根据延时队列中的请求的数量响应用户终端的请求,能满足用户请求随机分布的情况,且等待所述占位时间后,让所述请求离开所述延时队列相较与实时判断所述延时队列中的所述请求是否满足所述占位时间,在能满足服务器处理能力过剩的情况下,减少系统运算次数。
[0097] 本发明的服务器、基于延时队列的限流保护系统及方法能实时根据延时队列中的请求的数量响应用户终端的请求,能满足用户请求随机分布的情况,且在延时队列中的所述请求满足所述占位时间时才将延时队列中的请求数量相应地减少,能满足服务器处理能力过剩的情况。
[0098] 需要说明的是,本
说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0099] 需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、物品或者装置中还存在另外的相同要素。
[0100] 本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是
只读存储器,磁盘或光盘等。
[0101] 以上,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明,任何熟悉本专业的技术人员,在不脱离本发明技术方案范围内,当可利用上述揭示的技术内容做出些许更动或修饰为等同变化的等效实施例,但凡是未脱离本发明技术方案内容,依据本发明的技术实质对以上实施例所作的任何简单
修改、等同变化与修饰,均仍属于本发明技术方案的范围内。