一种针对应用程序内控制请求响应速率的系统和方法技术方案

技术编号:19866089 阅读:23 留言:0更新日期:2018-12-22 13:50
一种针对应用程序内控制请求响应速率的系统和方法,包括收敛器、EPOLL管理器、请求统计器、发送队列、接收队列、队列负载统计、业务模块连接池和若干个业务模块,用户通过接入网关系统接入到后台系统时,如果客户端发送的请求数据比较多或频率过快,将致使接入层来不及处理,数据堆积在接入层的连接管理模块,导致数据丢失,甚至使接入层进程崩溃。同时各个业务模块的处理能力各不一样,一种业务请求在接入层发送过快,其他业务请求不应该受到影响。本发明专利技术的目的在于设计一套对应用程序内部子模块间请求响应速率进行控制的方法和装置,避免不同业务请求之间相互影响,避免因处理不过来而丢弃数据包,避免应用程序因请求速率过快而崩溃。

【技术实现步骤摘要】
一种针对应用程序内控制请求响应速率的系统和方法
本专利技术涉及传输控制规程,涉及接入网关应用程序内部请求响应速率的协调和控制,尤指一种针对应用程序内控制请求响应速率的系统和方法。
技术介绍
流量控制:指点对点通信量的控制,是端到端正的问题。流量控制所要做的就是抑制发送端发送数据的速率,以便使接收端来得及接收。解释如下:滑动窗口机制主要针对成块数据流,利用滑动窗口机制可以很方便地在TCP连接上实现对发送方的流量控制。参见图2,设A向B发送数据。在连接建立时,B告诉了A:“我的接收窗口是rwnd=400字节”(这里的rwnd表示receiverwindow滑动窗口)。因此,发送方的发送窗口不能超过接收方给出的接收窗口的数值。TCP连接建立时的窗口协商过程在图中没有显示出来。再设每一个报文段为100字节长,而数据报文段序号的初始值设为1。大写ACK表示首部中的确认位ACK,小写ack表示确认字段的值ack。从图中可以看出,B进行了三次流量控制。第一次把窗口减少到rwnd=300,第二次又减到了rwnd=100,最后减到rwnd=0,即不允许发送方再发送数据了。这种使发送方暂停发送的状态将持续到主机B重新发出一个新的窗口值为止。B向A发送的三个报文段都设置了ACK=1,只有在ACK=1时确认号字段才有意义。拥塞控制参见图3,拥塞控制就是防止过多的数据注入网络中,这样可以使网络中的路由器或链路不致过载。拥塞控制是一个全局性的过程,和流量控制不同,流量控制指点对点通信量的控制。拥塞控制的方式主要有:快重传、慢开始、快恢复和拥塞避免。请求过载保护方案过载是指负载已经超过了系统的最大处理能力。例如,系统每秒能够处理的请求是100个,但实际每秒的请求量却是1000个,就可以判定系统出现了过载。在系统部署上线之前,预估好系统的处理能力,限定最大同时能够处理的请求量、流量或者连接数。当请求量快接近于最大处理能力时,则告警,超过范围,则触发拒绝请求机制。由此可见对于阈值的设置是一个很关键的环节,阈值过高,依然可能导致过载,阈值过低,则又导致负载上不去。阈值的设置也会是一个不断调优的过程
技术介绍
的缺点:1)TCP流量拥塞控制只是针对传输层字节流量控制,不能针对应用程序内部进行数据包请求响应速率的限制。2)过载保护的请求阈值设置很难把握,请求阈值无法应对多业务类型的请求。
技术实现思路
针对现有技术的缺点,本专利技术的目的在于提供一种针对应用程序内控制请求响应速率的系统和方法。旨在专利技术一套对应用程序内部子模块间请求响应速率进行控制的系统和方法,避免不同业务请求之间相互影响,避免因处理不过来而丢弃数据包,避免应用程序因请求速率过快而崩溃。本专利技术解决其技术问题所采用的技术方案是:提供一种针对应用程序内控制请求响应速率的系统和方法,其系统的特征在于:包括收敛器、EPOLL管理器、请求统计器、发送队列、接收队列、队列负载统计、业务模块连接池和若干个业务模块,其中:收敛器连接EPOLL管理器:负责用户连接的建立,并将建立好的连接通过本地套接字(UnixDomainSocket)发送到多个接入网关进程上去;EPOLL管理器连接收敛器、请求统计器、发送队列和接收队列:采用EPOLL实现的,管理用户连接的读写状态,开辟若干个连接对象池,每个连接对象都具有发送缓存队列,同时对整个进程和单个连接进行适当请求速率控制;连接缓存队列属于EPOLL管理器的子模块:针对每个用户连接开辟个缓存队列,用于小包合关发送和响应数据超时丢弃;请求统计器连接EPOLL管理器、发送队列、接收队列、和业务模块连接池:负责统计每个用户连接上的请求速率和响应速率,统计进程总体请求速率和响应速率,统计业务模块连接池的发送速率和响应速率;当各项速率大于阈值时进行适当控制;队列负载统计连接发送队列和接收队列:负责统计发送队列和接收队列的利用率情况,当利用率达到一定的阈值时进行适当控制;发送队列连接EPOLL管理器、请求统计器、接收队列、队列负载统计和业务模块连接池:从业务模块连接池上接收响应数据,供EPOLL管理器提取发送给有用户端;接收队列连接EPOLL管理器、请求统计器、发送队列、队列负载统计和业务模块连接池:从EPOLL管理器接收请求数据,供业务模块连接池转发到具体的业务模块;业务模块连接池连接请求统计器、发送队列、接收队列和具体的业务模块:从接收队列接收请求数据,然后将请求发送到对应的业务模块;再从业务模块接收响应数据,并将响应数据传递到发送队列;业务模块连接业务模块连接池:具体执行某一项业务处理,如K线模块、实时行情模块。本专利技术基于上述针对应用程序内控制请求响应速率的系统提供一种针对应用程序内控制请求响应速率的方法,其特征在于包括如下步骤:S1.当用户通过TCP连接到收敛器模块进程监听的socket套接字时,收敛器进程接受用户连接,并通过本地套接字把用户连接发送到接入进程的EPOLL管理器模块,对所有用户连接进行读写事件监听;S2.EPOLL管理器通过请求统计器的对总体请求速率、单连接请求速率和接收队列利用率通过一定算法计算,决定是否将某些用户连接去除或加入读事件监控,从而实现对请求速率的控制;S3.业务模块连接池针对每个业务模块建立一个连接池,针对每个业务连接池进行请求转发,当业务模块压力过大时,接入进程将丢弃业务请求包,并向EPOLL管理器反馈业务状态;S4.当业务模块发回响应数据后,业务模块连接池首先判断该连接是否已经关闭,如果连接已关闭就直接丢弃数据包,其次依据“该连接的缓存队列已满且发送队列利用率超过阈值”来判断是否需要对响应数据包进行限速,是否需要丢弃响应数据,同时将状态反馈给EPOLL管理器;S5.当EPOLL管理器从发送队列接收到响应数据时,首先将数据包直接进行发送,如果发送不完全就加入到该连接的缓存队列;下一次EPOLL管理器调度到该连接的写事件时,将检查数据包的时效性,如果是过期的数据包将被丢弃,同时针对该连接的缓存队列进行小包合并后再发送;对于严重阻塞并发送出错的连接,进行关闭操作,并清理发送队列。步骤S2所述具体算法的逻辑如下:S21.如果总体QPS大于阈值MAX_TOTAL_QPS,关闭用户连接;S22.如果接收队列利用率大于阈值,去除读事件;S23.如果单个连接QPS过大,去除读事件;如果单个连接QPS过小,加入读事件;S24.依据接收队列利用率、当前连接数、业务模块连接池读取速度之间的比例关系计算单连接QPS动态阈值:单连接QPS动态阈值=基础常数×50/(当前连接数×(EPOLL读取速度–业务转发速度)×队列利用率)基础常数=单用户基础QPS×最大连接数×队列最在数据包量;S25.如果单连接QPS动态阈值大于业务模块连接池转发速率,则去除读事件,反之加入读事件。本专利技术的有益效果是:对应用程序内部子模块间请求响应速率进行控制,避免了不同业务请求之间相互影响,避免了因处理不过来而丢弃数据包,避免了应用程序因请求速率过快而崩溃。附图说明下面结合附图对本专利技术作进一步的描述。图1是本专利技术的架构和工作流程示意图。图2是现有技术的滑动窗口机制示意图。图3是现有技术的拥塞控制示意图。具体实施方式参见附图,本专利技术一种针对应用程序内控制请求响应速率的系统和方本文档来自技高网
...

【技术保护点】
1.一种针对应用程序内控制请求响应速率的系统,其特征在于:包括收敛器、EPOLL管理器、请求统计器、发送队列、接收队列、队列负载统计、业务模块连接池和若干个业务模块,其中:收敛器连接EPOLL管理器:负责用户连接的建立,并将建立好的连接通过本地套接字发送到多个接入网关进程上去;EPOLL管理器连接收敛器、请求统计器、发送队列和接收队列:采用EPOLL实现的,管理用户连接的读写状态,开辟若干个连接对象池,每个连接对象都具有发送缓存队列,同时对整个进程和单个连接进行适当请求速率控制;连接缓存队列属于EPOLL管理器的子模块:针对每个用户连接开辟个缓存队列,用于小包合关发送和响应数据超时丢弃;请求统计器连接EPOLL管理器、发送队列、接收队列、和业务模块连接池:负责统计每个用户连接上的请求速率和响应速率,统计进程总体请求速率和响应速率,统计业务模块连接池的发送速率和响应速率;当各项速率大于阈值时进行适当控制;队列负载统计连接发送队列和接收队列:负责统计发送队列和接收队列的利用率情况,当利用率达到一定的阈值时进行适当控制;发送队列连接EPOLL管理器、请求统计器、接收队列、队列负载统计和业务模块连接池:从业务模块连接池上接收响应数据,供EPOLL管理器提取发送给有用户端;接收队列连接EPOLL管理器、请求统计器、发送队列、队列负载统计和业务模块连接池:从EPOLL管理器接收请求数据,供业务模块连接池转发到具体的业务模块;业务模块连接池连接请求统计器、发送队列、接收队列和具体的业务模块:从接收队列接收请求数据,然后将请求发送到对应的业务模块;再从业务模块接收响应数据,并将响应数据传递到发送队列;业务模块连接业务模块连接池:具体执行某一项业务处理,如K线模块、实时行情模块。...

【技术特征摘要】
1.一种针对应用程序内控制请求响应速率的系统,其特征在于:包括收敛器、EPOLL管理器、请求统计器、发送队列、接收队列、队列负载统计、业务模块连接池和若干个业务模块,其中:收敛器连接EPOLL管理器:负责用户连接的建立,并将建立好的连接通过本地套接字发送到多个接入网关进程上去;EPOLL管理器连接收敛器、请求统计器、发送队列和接收队列:采用EPOLL实现的,管理用户连接的读写状态,开辟若干个连接对象池,每个连接对象都具有发送缓存队列,同时对整个进程和单个连接进行适当请求速率控制;连接缓存队列属于EPOLL管理器的子模块:针对每个用户连接开辟个缓存队列,用于小包合关发送和响应数据超时丢弃;请求统计器连接EPOLL管理器、发送队列、接收队列、和业务模块连接池:负责统计每个用户连接上的请求速率和响应速率,统计进程总体请求速率和响应速率,统计业务模块连接池的发送速率和响应速率;当各项速率大于阈值时进行适当控制;队列负载统计连接发送队列和接收队列:负责统计发送队列和接收队列的利用率情况,当利用率达到一定的阈值时进行适当控制;发送队列连接EPOLL管理器、请求统计器、接收队列、队列负载统计和业务模块连接池:从业务模块连接池上接收响应数据,供EPOLL管理器提取发送给有用户端;接收队列连接EPOLL管理器、请求统计器、发送队列、队列负载统计和业务模块连接池:从EPOLL管理器接收请求数据,供业务模块连接池转发到具体的业务模块;业务模块连接池连接请求统计器、发送队列、接收队列和具体的业务模块:从接收队列接收请求数据,然后将请求发送到对应的业务模块;再从业务模块接收响应数据,并将响应数据传递到发送队列;业务模块连接业务模块连接池:具体执行某一项业务处理,如K线模块、实时行情模块。2.基于权利要求1所述的针对应用程序内控制请求响应速率的方法,其特征在于包括如下步骤:S1.当用户通过TCP连接到收敛器模块进程监听的socket套接字时,收敛器进程接受用户连接,...

【专利技术属性】
技术研发人员:罗意谈加虎
申请(专利权)人:广发证券股份有限公司
类型:发明
国别省市:广东,44

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

1