一种基于Epoll异步服务器的高效响应方法技术

技术编号:16818893 阅读:52 留言:0更新日期:2017-12-16 12:14
本发明专利技术一种基于Epoll异步服务器的高效响应方法涉及应用服务器技术领域,特别是一种高效的Epoll异步服务器响应方法。包括:初始化,和启动监控调度线程。通过级联Epoll监听线程,将传统的Epoll监听处理线程,从处理中完全释放出来,仅负责监听和分发功能,从而能够及时监听并响应高并发事件。而处理的功能则交由二级Epoll器,实质为线程组。同时通过创建多个环形队列,将原来一个队列的压力进行分摊,避免在高并发性情况下,导致一个队列容易队列满的情况。为了进一步优化功能,提供优先级的功能,进而根据优先级划分能够根据请求事件的轻重缓急处理事件,对优先级高的时间优先响应,这样做更为高效、合理。

An efficient response method based on Epoll Asynchronous Server

The invention relates to an efficient response method based on Epoll asynchronous server, which relates to the application server technology field, especially an efficient Epoll asynchronous server response method. Including: initialization, and start monitoring and scheduling threads. By cascading Epoll monitoring thread, the traditional Epoll monitoring processing thread is released from processing, which is only responsible for monitoring and distributing functions, so that it can monitor and respond to high concurrence events in time. The processing function is given to a two level Epoll, which is essentially a thread group. At the same time, by creating multiple circular queues, we can share the pressure of the original queue to avoid the situation that a queue is easy to queue when there is high concurrency. In order to further optimize the function and provide priority function, and according to priority division, we can respond to events according to the priority of request events, and give priority to response to high priority time. This is more efficient and reasonable.

【技术实现步骤摘要】
一种基于Epoll异步服务器的高效响应方法
本专利技术一种基于Epoll异步服务器的高效响应方法涉及应用服务器
,特别是一种高效的Epoll异步服务器响应方法。
技术介绍
目前Epoll异步模型中,边缘触发是一种高效模式。然而对于大量请求而言,单线程操作可能会忙于循环处理某次过程中的请求,从而丢失处理客户端新的请求。当前一种有效的方式是,通过将客户端请求压入队列,利用线程池中的空闲线程依次处理队列中的请求,将监听处理线程从处理请求任务中释放出来,从而能够及时监听到客户端请求并及时响应。而不会由于同时忙于监听和处理客户端的高并发请求而不能够及时监听到客户端的请求。但是,该方法只能从一定程度上解决问题,对于高并发的请求而言,频繁的压入队列,需要拷贝,不能完全将监听线程从处理过程中释放出来,仍然会丢失请求。尤其当客户端请求数量庞大的时候,这种情况愈加突出。对于客户端的高并发请求,全部往一个队列中存放;队列中存放的客户端请求需要等线程池中有空闲线程才能够进行处理。然而,对于大量客户端请求,存放带处理客户端请求的队列很容易满,而导致客户端新的请求无法被压入队列而丢失。客户的请求显然会有轻重缓急,不区分优先级,只往一个队列中存放;根据队列先进先出原则,线程池上的空闲线程会依次处理客户端的请求,很可能导致优先级高的任务被放到了后面进行处理,而优先级低的任务反而首先被处理。专利技术目的本专利技术的目的是针对上述不足之处提供一种基于Epoll异步服务器的高效响应方法,采用Epoll级联,通过多队列,区分优先级,可以实现高并发客户端请求及时监听并相应,从而使Epoll监听线程能够完全从处理过程中释放出来,能够及时高效地监听并响应客户端请求,克服了现有方法中Epoll监听线程不能完全有效地解决高并发客户端请求的缺陷。本专利技术是采取以下技术方案实现的:一种基于Epoll异步服务器的高效响应方法,包括以下步骤:1)初始化,所述初始化过程包括:1-1)主进程创建一级Epoll监听器和二级Epoll监听器;1-2)初始化二级Epoll监听器,根据配置值,循环创建二级Epoll监听器并初始化;1-3)初始化一级Epoll监听器,即初始化Epoll和EpollHandler接口类,建立服务端socket,同时在一级Epoll监听器对服务端的fd注册event事件;所述fd表示文件描述符;1-4)通过一级Epoll监听器的EpollHandler注册接口,向一级Epoll监听器注册二级Epoll监听器,使一级Epoll监听器能够与二级Epoll监听器对接;1-5)创建并初始化环形队列;1-6)启动监控调度线程,循环扫描判断步骤(1-5)的环形队列是否有一个不为空,不为空则进入步骤(1-7);1-7)创建线程池,并启动K个空闲线程并挂入空闲线程链表;所述K值为预设值。步骤1)中的一级Epoll监听器,用来监听客户端的高并发请求;步骤1)中的二级Epoll监听器,用来监听一级Epoll监听器分发过来的客户端请求;步骤1-2)中的配置值表示二级Epoll监听器的线程个数。步骤1-5)的环形队列是事件待处理环形队列,根据优先级的层次划分创建环形队列个数。步骤1-7)中的K取值范围为5000~10000,表示线程池内设有5000~10000个任务线程。步骤1-7)的线程池内设有K个任务线程挂入空闲线程链作为空闲线程,所述空闲线程专门用来处理客户端请求事件。2)启动监控调度线程2-1)启动二级Epoll监听器的相应线程,线程数量通过配置来完成;2-2)启动一级Epoll监听器,即启动相应线程;2-3)当一级Epoll监听器监听到高并发的客户端请求事件后,循环遍历每一请求事件,并立即根据相应的策略分发到对应的二级Epoll监听器;一级Epoll监听器循环分发完请求事件后立即返回,继续监听客户端的高并发事件;2-4)二级Epoll监听器监听到步骤(2-3)中一级Epoll监听器分发的事件后,根据客户端携带的私有信息,判断客户端请求事件的优先级,根据优先级PUSH进相应的待处理环形队列;2-5)监控调度线程按照环形队列的优先级,从高优先级到低优先级,依次POP出客户端请求事件,从线程池空闲线程链上取出空闲线程处理客户端请求事件。步骤(2-5)中监控调度线程的具体处理方法是,从步骤(2-4)建立的待处理环形队列中发现有请求时,监控调度线程扫描待处理环形队列中,如果该待处理环形队列不为空,则从线程池空闲链中取出空闲线程,处理相应请求事件;接着从该待处理环形队列中删除已经处理的请求事件。步骤2-2)中的一级Epoll的监听器模式能够通过配置修改。本专利技术优点:本专利技术通过级联Epoll监听线程,将传统的Epoll监听处理线程,从处理中完全释放出来,仅负责监听和分发功能,从而能够及时监听并响应高并发事件。而处理的功能则交由二级Epoll器,实质为线程组。同时通过创建多个环形队列,将原来一个队列的压力进行分摊,避免在高并发性情况下,导致一个队列容易队列满的情况。为了进一步优化功能,提供优先级的功能,进而根据优先级划分能够根据请求事件的轻重缓急处理事件,对优先级高的时间优先响应,这样做更为高效、合理。附图说明以下将结合附图对本专利技术作进一步说明:图1是本专利技术基于Epoll异步服务器的高效响应方法的系统应用示意图;图2是本专利技术基于Epoll异步服务器的高效响应方法的初始化步骤流程图;图3是本专利技术基于Epoll异步服务器的高效响应方法的监控调度线程步骤流程图;图4是本专利技术基于Epoll异步服务器的高效响应方法的总体步骤流程图。具体实施方式为了使本专利技术的目的、技术方案及优点更加清楚明白,以下结合附图,对本专利技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅用于解释本专利技术,并不用于限定本专利技术。本文中所述fd表示文件描述符。参照附图1、4,本专利技术方法在应用时包括初始化过程和监控调度两大部分,附图2是本专利技术实施例的Epoll异步服务器高效响应方法的初始化过程,所述过程包括:1)主进程创建一级Epoll监听器和二级Epoll监听器,所谓一级Epoll监听器和二级Epoll监听器实质为相应的Epoll监听线程;2)初始化二级Epoll监听器,根据配置值,循环创建二级Epoll监听器并初始化;如配置值是3,则表示二级Epoll监听器的线程个数为3;3)初始化一级Epoll监听器,即初始化Epoll和EpollHandler接口类,建立服务端socket,同时在一级Epoll监听器对服务端的fd注册event事件;4)通过一级Epoll监听器的EpollHandler注册接口,向一级Epoll监听器注册二级Epoll监听器。通过注册使一级Epoll监听器能够与二级Epoll监听器对接,这样二级Epoll监听器就能够监听到一级Epoll分发的请求;5)创建并初始化环形队列,本实施例中创建三个环形队列,分别存放高优先级事件、中优先级事件和低优先级事件。6)启动监控调度线程,循环扫描判断步骤(5)的三个环形队列是否有一个不为空,不为空则进入步骤(7);7)创建线程池,并启动K个空闲线程并挂入空闲线程链表;所述K值为预设值,本实施例中配置为10000。图3是本专利技术监控调度线程步骤流程本文档来自技高网...
一种基于Epoll异步服务器的高效响应方法

【技术保护点】
一种基于Epoll异步服务器的高效响应方法,其特征在于,包括以下步骤:1)初始化,所述初始化过程包括,1‑1)主进程创建一级Epoll监听器和二级Epoll监听器;1‑2)初始化二级Epoll监听器,根据配置值,循环创建二级Epoll监听器并初始化;1‑3)初始化一级Epoll监听器,即初始化Epoll和EpollHandler接口类,建立服务端socket,同时在一级Epoll监听器对服务端的fd注册event事件;所述fd表示文件描述符;1‑4)通过一级Epoll监听器的EpollHandler注册接口,向一级Epoll监听器注册二级Epoll监听器,使一级Epoll监听器能够与二级Epoll监听器对接;1‑5)创建并初始化环形队列;1‑6)启动监控调度线程,循环扫描判断步骤(1‑5)的环形队列是否有一个不为空,不为空则进入步骤(1‑7);1‑7)创建线程池,并启动K个空闲线程并挂入空闲线程链表;所述K值为预设值;2)启动监控调度线程,具体包括;2‑1)启动二级Epoll监听器的相应线程,线程数量通过配置来完成;2‑2)启动一级Epoll监听器,即启动相应线程;2‑3)当一级Epoll监听器监听到高并发的客户端请求事件后,循环遍历每一请求事件,并立即根据相应的策略分发到对应的二级Epoll监听器;一级Epoll监听器循环分发完请求事件后立即返回,继续监听客户端的高并发事件;2‑4)二级Epoll监听器监听到步骤(2‑3)中一级Epoll监听器分发的事件后,根据客户端携带的私有信息,判断客户端请求事件的优先级,根据优先级PUSH进相应的待处理环形队列;2‑5)监控调度线程按照环形队列的优先级,从高优先级到低优先级,依次POP出客户端请求事件,从线程池空闲线程链上取出空闲线程处理客户端请求事件。...

【技术特征摘要】
1.一种基于Epoll异步服务器的高效响应方法,其特征在于,包括以下步骤:1)初始化,所述初始化过程包括,1-1)主进程创建一级Epoll监听器和二级Epoll监听器;1-2)初始化二级Epoll监听器,根据配置值,循环创建二级Epoll监听器并初始化;1-3)初始化一级Epoll监听器,即初始化Epoll和EpollHandler接口类,建立服务端socket,同时在一级Epoll监听器对服务端的fd注册event事件;所述fd表示文件描述符;1-4)通过一级Epoll监听器的EpollHandler注册接口,向一级Epoll监听器注册二级Epoll监听器,使一级Epoll监听器能够与二级Epoll监听器对接;1-5)创建并初始化环形队列;1-6)启动监控调度线程,循环扫描判断步骤(1-5)的环形队列是否有一个不为空,不为空则进入步骤(1-7);1-7)创建线程池,并启动K个空闲线程并挂入空闲线程链表;所述K值为预设值;2)启动监控调度线程,具体包括;2-1)启动二级Epoll监听器的相应线程,线程数量通过配置来完成;2-2)启动一级Epoll监听器,即启动相应线程;2-3)当一级Epoll监听器监听到高并发的客户端请求事件后,循环遍历每一请求事件,并立即根据相应的策略分发到对应的二级Epoll监听器;一级Epoll监听器循环分发完请求事件后立即返回,继续监听客户端的高并发事件;2-4)二级Epoll监听器监听到步骤(2-3)中一级Epoll监听器分发的事件后,根据客户端携带的私有信息,判断客户端请求事件的优先级,根据优先级PUSH进相应的待处理环形队列;2-5)监控调度线程按照环形队列的优先级,从高优先级...

【专利技术属性】
技术研发人员:江汀赵万亮姜思远王月铭
申请(专利权)人:南京华飞数据技术有限公司
类型:发明
国别省市:江苏,32

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

1