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异步服务器的高效响应方法,其特征在于,包括以下步骤: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)当一级Epo ...
【技术特征摘要】
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
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。