CN101702735B - 一种tcp服务装置及方法 - Google Patents
一种tcp服务装置及方法 Download PDFInfo
- Publication number
- CN101702735B CN101702735B CN2009102460028A CN200910246002A CN101702735B CN 101702735 B CN101702735 B CN 101702735B CN 2009102460028 A CN2009102460028 A CN 2009102460028A CN 200910246002 A CN200910246002 A CN 200910246002A CN 101702735 B CN101702735 B CN 101702735B
- Authority
- CN
- China
- Prior art keywords
- progress
- work
- unit
- connection request
- subelement
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Computer And Data Communications (AREA)
Abstract
本发明涉及TCP服务技术领域,公开了一种TCP服务装置及方法。所述装置包括:包括:接收单元、管理进程单元和至少一个工作进程单元;所述接收单元,用于接收客户端发起的连接请求,并将所述连接请求放入内核队列中;所述管理进程单元,用于检查所述内核队列,并在检查到所述内核队列中有未处理的连接请求后,为所述工作进程单元分配处理所述连接请求的任务,并在收到所述工作进程单元完成所述任务后发送的通知后,更新所述工作进程单元的连接数;所述工作进程单元,用于处理所述管理进程单元分配的任务,并在完成所述任务后向所述管理进程单元发送通知。利用本发明,可以提高TCP服务处理的效率,并实现对TCP服务的有效管理。
Description
技术领域
本发明涉及TCP(Transmission Control Protocol,传输控制协议)服务技术,具体涉及一种TCP服务装置及方法。
背景技术
TCP是一种面向连接的、可靠的、基于字节流的运输层通信协议,在简化的计算机网络OSI(Open System Interconnect,开放式系统互联)模型中,它完成第四层即传输层所指定的功能,UDP(User Datagram Protocol,用户数据报协议)是同一层内另一个重要的传输协议。
在因特网协议族中,TCP层是位于IP层之上、应用层之下的中间层。不同主机的应用层之间经常需要可靠的、像管道一样的连接,但是IP层不提供这样的流机制,而是提供不可靠的包交换。TCP建立连接之后,通信双方都同时可以进行数据的传输,其次,他是全双工的;在保证可靠性上,采用超时重传和捎带确认机制。
通常,TCP服务器按处理方式分类,可以划分为重复性服务器和并发服务器。重复性服务器每次只处理一个客户请求,实现简单但效率较低;并发服务器可同时处理多个客户请求,高效但实现复杂。
在现有技术中提供一种TCP服务算法,该算法通过预先派生子进程,父进程向子进程传递套接口描述字的方式实现TCP服务。
在实现本发明的过程中,发明人发现上述方案至少存在以下不足:
1.父进程接收到连接请求后产生套接口,通过sendmsg/recvmsg进行套接口传递,处理效率较低;
2.当子进程已有任务分配,全部为“繁忙”的状态下,不能进行新任务的分配,在类似web服务器的使用场合,有连接而连接上无交互(即连接空闲)的情况下,该方案无法处理。
发明内容
本发明实施例提供一种TCP服务装置及方法,以提高TCP服务处理的效率,并实现对TCP服务的有效管理。
为此,本发明实施例提供如下技术方案:
一种TCP服务装置,包括:接收单元、管理进程单元和至少一个工作进程单元;
所述接收单元,用于接收客户端发起的连接请求,并将所述连接请求放入内核队列中;
所述管理进程单元,用于检查所述内核队列,并在检查到所述内核队列中有未处理的连接请求后,为所述工作进程单元分配处理所述连接请求的任务,并在收到所述工作进程单元完成所述任务后发送的通知后,更新所述工作进程单元的连接数;
所述工作进程单元,用于处理所述管理进程单元分配的任务,并在完成所述任务后向所述管理进程单元发送通知。
优选地,所述管理进程单元包括:
队列检查子单元,用于检查所述内核队列;
进程确定子单元,用于在所述队列检查子单元检查到所述内核队列中有未处理的连接请求后,扫描所述工作进程的状态,确定处理所述连接请求的工作进程单元;
任务分配子单元,用于为确定的工作进程单元分配处理所述连接请求的任务;
通知接收子单元,用于接收所述工作进程单元完成所述任务后发送的通知。
优选地,所述进程确定子单元包括:
扫描子单元,用于在所述队列检查子单元检查到所述内核队列中有未处理的连接请求后,扫描所述工作进程的状态;
选择子单元,用于在所述扫描子单元扫描到有空闲的工作进程单元后,从所述空闲的工作进程单元中选择工作进程单元处理所述连接请求;并且在所述扫描子单元扫描到没有空闲的工作进程单元,并且当前工作进程单元的个数大于或等于预设的最大进程数时,选择当前负荷最小的工作进程单元处理所述连接请求;
建立子单元,用于在所述扫描子单元扫描到没有空闲的工作进程单元,并且当前工作进程单元的个数小于预设的最大进程数时,建立新的工作进程单元处理所述连接请求。
优选地,所述管理进程单元还包括:
进程维护子单元,用于在任务分配子单元为所述工作进程单元分配任务后,将所述工作进程单元的连接数加1;在所述通知接收子单元收到所述通知后,将所述工作进程单元的连接数减1,并检查所述工作进程单元当前的连接数,如果当前的连接数为0,则将所述工作进程单元置为空闲状态。
优选地,所述进程维护子单元,还用于捕获工作进程单元异常退出事件,并在捕获该事件后更新所述工作进程单元的连接数。
优选地,所述进程维护子单元,还用于扫描所有工作进程单元,并在空闲的工作进程单元的个数大于预设的最小进程数时,清除多余的工作进程单元。
一种TCP服务方法,包括:
接收客户端发起的连接请求,并将所述连接请求放入内核队列中;
管理进程检查所述内核队列,并在检查到所述内核队列中有未处理的连接请求后,为工作进程分配处理所述连接请求的任务;
工作进程处理所述任务,并在完成所述任务后向管理进程发送通知。
优选地,所述为工作进程分配处理所述连接请求的任务包括:
扫描所述工作进程的状态,根据扫描结果确定处理所述连接请求的工作进程;
向所述工作进程发送处理所述连接请求的指令。
优选地,所述根据扫描结果确定处理所述连接请求的工作进程包括:
如果有空闲的工作进程,则从所述空闲的工作进程中选择一个工作进程处理所述连接请求;
如果没有空闲的工作进程,并且当前工作进程的个数小于预设的最大进程数时,建立新的工作进程处理所述连接请求;
如果没有空闲的工作进程,并且当前工作进程的个数大于或等于预设的最大进程数时,选择当前负荷最小的工作进程处理所述连接请求。
优选地,所述方法还包括:
所述管理进程为工作进程分配处理所述连接请求的任务后,将所述工作进程的连接数加1;在收到所述工作进程的通知后,将所述工作进程的连接数减1,并检查所述工作进程当前的连接数,如果当前的连接数为0,则将所述工作进程单元置为空闲状态。
优选地,所述方法还包括:
所述管理进程捕获工作进程异常退出事件,并在捕获该事件后更新所述工作进程的连接数。
优选地,所述方法还包括:
扫描所有工作进程,并在空闲的工作进程的个数大于预设的最小进程数时,清除多余的工作进程。
一种计算机可读存储介质,包括计算机程序代码,该计算机程序代码由一个计算机单元执行,使得该计算机单元:
接收客户端发起的连接请求,并将所述连接请求放入内核队列中;
管理进程检查所述内核队列,并在检查到所述内核队列中有未处理的连接请求后,为工作进程分配处理所述连接请求的任务;
工作进程处理所述任务,并在完成所述任务后向管理进程发送通知。
本发明实施例提供的TCP服务装置及方法,采用“半同步/半异步”的工作模式,预先派生工作进程,由管理进程捕获客户端连接请求事件,再分发给工作进程进行接收操作。管理进程和工作进程内部采用事件驱动模式。将本发明实施例TCP服务装置及方法应用在复杂的并行系统中,即可以简化处理程序,又能保证程序执行的效率,并实现对TCP服务的有效管理。
附图说明
图1是本发明实施例TCP服务装置的一种结构示意图;
图2是本发明实施例TCP服务装置中管理进程单元的一种结构示意图;
图3是本发明实施例TCP服务方法的流程图;
图4是本发明实施例中事件驱动进程池模型示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明实施例的方案,下面结合附图和实施方式对本发明实施例作进一步的详细说明。
本发明实施例TCP服务装置及方法,采用“半同步/半异步”的工作模式,预先派生工作进程,由管理进程捕获客户端连接请求事件,再分发给工作进程进行接收操作。管理进程和工作进程内部采用事件驱动模式。
图1是本发明实施例TCP服务装置的一种结构示意图。
在该实施例中,所述TCP服务装置包括:
接收单元100、管理进程单元111和至少一个工作进程单元,为了描述方便,图中示出了两个工作进程单元,即工作进程单元121和工作进程单元122。其中:
所述接收单元100,用于接收客户端发起的连接请求,并将所述连接请求放入内核队列中;
所述管理进程单元111,用于检查所述内核队列,并在检查到所述内核队列中有未处理的连接请求后,为所述工作进程单元分配处理所述连接请求的任务,并在收到所述工作进程单元完成所述任务后发送的通知后,更新所述工作进程单元的连接数;
所述工作进程单元121、122,用于处理所述管理进程单元111分配的任务,并在完成所述任务后向所述管理进程单元111发送通知。
本发明实施例TCP服务装置,将同步和异步I/O模型集成在一起,系统层响应连接请求、任务分配、提供管理类服务等异步I/O操作,应用层进行简单的同步I/O操作,即复杂的处理由框架完成,应用层只需关注处理逻辑即可。管理进程单元捕获客户端连接请求事件,再分发给工作进程单元进行接收操作。管理进程单元和工作进程单元内部采用事件驱动模式。由事件触发进行处理,简化了实现的复杂度,提高了TCP服务的可靠性。
本发明实施例TCP服务装置,可以支持多路复用,可同时向多个客户端提供服务。
在本发明实施例中,所述管理进程单元111的一种优选结构如图2所示,包括:
队列检查子单元201,用于检查所述内核队列;
进程确定子单元202,用于在所述队列检查子单元131检查到所述内核队列中有未处理的连接请求后,扫描所述工作进程的状态,确定处理所述连接请求的工作进程单元;
任务分配子单元203,用于为确定的工作进程单元分配处理所述连接请求的任务;
通知接收子单元204,用于接收所述工作进程单元完成所述任务后发送的通知。
为了对所述工作进程单元进行有效地管理,在本发明实施例中,所述管理进程单元111还可进一步包括:
进程维护子单元205,用于在任务分配子单元203为所述工作进程单元分配任务后,将所述工作进程单元的连接数加1;在所述通知接收子单元204收到所述通知后,将所述工作进程单元的连接数减1,并检查所述工作进程单元当前的连接数,如果当前的连接数为0,则将所述工作进程单元置为空闲状态。
当然,本发明实施例中所述管理进程单元111还可以有其他结构方式,比如,队列检查子单元201、进程确定子单元202和任务分配子单元203可以集成为一个模块,本发明实施例对此不做限定。
所述进程确定子单元202包括
扫描子单元221,用于在所述队列检查子单元检查到所述内核队列中有未处理的连接请求后,扫描所述工作进程的状态;
选择子单元222,用于在所述扫描子单元221扫描到有空闲的工作进程单元后,从所述空闲的工作进程单元中选择工作进程单元处理所述连接请求;并且在所述扫描子单元221扫描到没有空闲的工作进程单元,并且当前工作进程单元的个数大于或等于预设的最大进程数时,选择当前负荷最小的工作进程单元处理所述连接请求;
建立子单元223,用于在所述扫描子单元221扫描到没有空闲的工作进程单元,并且当前工作进程单元的个数小于预设的最大进程数时,建立新的工作进程单元处理所述连接请求。
需要说明的是,在本发明实施例中,所述进程维护子单元205还用于扫描所有工作进程单元,并在空闲的工作进程单元的个数大于预设的最小进程数时,清除多余的工作进程单元。比如,可以通过开关方式,将多余的工作进程单元断开。所述多余的工作进程单元可以是比预定的最小的进程数多出的空闲工作进程单元,也可以是所有空闲工作进程单元。
所述进程维护子单元205对所有工作进程单元的扫描可以定时进行,在所述TCP服务装置初始化时,可以设定定时时间。
为了更好地对所述工作进程单元进行维护,所述进程维护子单元205还用于捕获工作进程单元异常退出事件,并在捕获该事件后更新所述工作进程单元的连接数。
在具体实现中,管理进程可以通过心跳连接捕获工作进程单元异常退出事件。
管理进程通过指令管道分配任务给某个工作进程后,在登记区登记该工作进程的连接数为:正在处理的任务数(即该工作进程的当前连接数)+1,工作进程处理完任务后,通过报告管道向管理进程报告,管理进程在登记区中更新该工作进程的连接数为:正在处理的任务数(即该工作进程的当前连接数)-1,连接数为0则置为空闲。
另外,报告管道可以在管理进程与工作进程之间建立一条心跳连接,管理进程扫描指令管道上数据到达,当工作进程异常退出后,心跳连接断开,管理进程在该管道上的扫描会失败,此时即可确定心跳连接中断,由此管理进程判断工作进程已异常退出,将该工作进程的连接数清零。另外,此时,管理进程可以重新创建一个工作进程,即异常重启功能。当然,此时管理进程也可以不立即创建新的工作进程,检测到内核队列中有新的连接需要处理时,如果需要再创建。
需要说明的是,所述预设的最小进程数和最大进程数可根据所述TCP服务装置的处理能力及应用环境来设定,比如,最小进程数为8,最大进程数为20。
本发明实施例TCP服务装置,采用基于事件的多路复用技术,以有限的工作进程,支持多用户并发访问;而且,由一个管理进程单元和多个工作进程单元协同工作,可以使服务处理更为有序。
相应地,本发明实施例还提供一种TCP服务方法,如图3所示,是该方法的流程图,包括以下步骤:
步骤301,接收客户端发起的连接请求,并将所述连接请求放入内核队列中。
步骤302,管理进程检查所述内核队列,并在检查到所述内核队列中有未处理的连接请求后,为工作进程分配处理所述连接请求的任务。
具体地,可以由管理进程扫描各工作进程的状态,根据扫描结果确定处理所述连接请求的工作进程。然后,向所述工作进程发送处理所述连接请求的指令。
在确定处理所述连接请求的工作进程时,可以依照以下原则:
如果有空闲的工作进程,则从所述空闲的工作进程中选择一个工作进程处理所述连接请求;
如果没有空闲的工作进程,并且当前工作进程的个数小于预设的最大进程数时,建立新的工作进程处理所述连接请求;
如果没有空闲的工作进程,并且当前工作进程的个数大于或等于预设的最大进程数时,选择当前负荷最小的工作进程处理所述连接请求。
当然,本发明实施例并不仅限于上述原则,比如,可以设定工作进程的最大连接数,在分配任务时,如果有多个任务,可以优先选择一个工作进程完成这些任务,在该工作进程的连接数达到设定的最大连接数后,再创建新的工作进程进行任务分配。
步骤303,工作进程处理所述任务,并在完成所述任务后向管理进程发送通知。
为了更好地对多工作进程进行有效地管理,在本发明实施例中,还可进一步包括以下步骤:管理进程对工作进程进行维护,具体地:所述管理进程为工作进程分配处理所述连接请求的任务后,将所述工作进程的连接数加1;在收到所述工作进程的通知后,将所述工作进程的连接数减1,并检查所述工作进程当前的连接数,如果当前的连接数为0,则将所述工作进程单元置为空闲状态。
为了防止工作进程异常退出的情况对工作进程的状态造成影响,所述管理进程还可以进一步捕获工作进程异常退出事件,并在捕获该事件后更新所述工作进程的连接数,即将所述工作进程的连接数减1。
为了减少多余的工作进程,在本发明实施例中,所述管理进程还可以定时扫描所有工作进程,并在空闲的工作进程的个数大于预设的最小进程数时,清除多余的工作进程。所述多余的工作进程可以是比预定的最小的进程数多出的空闲工作进程,也可以是所有空闲工作进程。
本发明实施例TCP服务方法,采用半同步/半异步的处理模式,引用事件驱动模式,将连接请求、数据到达、工作任务分配、工作进程状态报告、内部管理端口事件、工作进程定时状态扫描等动作在内部均转化为“内部事件”,由事件触发进行处理,简化程序复杂度,提高可靠性;通过设置最小进程数、最大进程数,提供繁忙时增加工作进程,空闲时释放工作进程的功能,根据当前的负载实现工作进程的动态调整;工作进程支持多路复用,一个工作进程同时可向多个客户端提供服务。
如图4所示,是本发明实施例中事件驱动进程池模型示意图。
在服务启动时可以进行如下初始化过程:
1.读取配置数据,其中包含的主要参数:
a)Socket端口号port或UNIX网络域(AF_UNIX);
b)最小启动工作进程数minproc;
c)最大工作进程数maxproc;
d)工作进程最大空闲时间timeidle;
e)工作进程扫描时间scanunit。
2.根据配置绑定指定的AF_UNX或SOCKET;
3.根据“最小进程数”,创建工作进程do_fork(),并在管理进程、工作进程之间建立一组管道(指令管道和报告管道),为工作进程指派指令管道处理事件,为管理进程指派报告管道上的处理事件;
4.为管理进程指派针对绑定的端口处理事件;
5.增加管理专用通道(AF_UNX);
6.根据scanunit指定值,增加定时事件处理机制;
7.进入守护模式(可用参数控制),进入事件循环;
下面参照图4所示的事件驱动进程池模型,进一步详细说明本发明实施例TCP服务方法的处理过程。
(1)客户端发起连接请求,服务端将该连接放入其内核队列中;
(2)管理进程检测到该事件,执行相应的处理机制;
(3)管理进程扫描工作进程的状态,找到合适的工作进程,向工作进程对应的指令管道发送一个指令,如所有进程都忙且当前工作进程数小于定义的最大进程数,则创建一个新的工作进程并向该工作进程发送一个指令;
(4)工作进程检测到指令管道上的read事件,进行accept()操作,从内核队列中取走该连接,以后对该连接进行全程管理;
(5)客户端组织数据进行send发送请求;
(6)工作进程检测到链路上有一read事件,进行相应的read操作,读取请求数据;
(7)工作进程按约定的处理逻辑对进行逻辑处理proc;
(8)工作进程处理结束,组织应答数据,发送给客户端;
(9)客户端在链路上调用recv()读取应答;
(10)客户端发起关闭连接的指令close();
(11)工作进程检测到链路上的关闭事件,关闭该socket;
(12)工作进程通过“报告管道”通知管理进程“本工作进程连接数减少一个”;
(13)管理进程收到连接数减少的消息,将该工作进程对应的连接数减少,如连接数为0,则将该工作进程置为空闲状态;
(14)管理进程定时扫描所有工作进程的状态,如空闲的进程数大于已定义的最小的进程数,则对多余的工作进程进行清理。
图4中仅示出了为一个客户端提供连接服务的情况,本发明实施例的TCP服务方法还可以同时为多个客户端提供连接服务。
为此,针对多个客户端的连接请求,服务端可以将这些连接请求依序放入其内核队列中。
假设已知的条件或内设的变量如下:
最小工作进程数MINPROC,最大工作进程数MAXPROC;
工作进程状态包括:空闲(PROC_FREE)、处理中(PROC_BUSY)、未使用(PROC_NOUSE)。
在管理进程检测到这些连接事件后,将对应的任务按以下原则分配到工作进程:
1、如果有“空闲”的工作进程,则找到第一个状态为“空闲”的工作进程,让其处理本次任务,并将该工作进程的状态置为PROC_BUSY,连接数置为1;
2、如果没有“空闲”的工作进程,即所有工作进程状态为PROC_BUSY,且当前工作进程数小于最大工作进程数MAXPROC,则找到第一个状态为“PROC_NOUSE”的工作进程(序号PROC_ID1),即创建新的工作进程,并将本次任务分配给该工作进程,并将该工作进程的状态置为PROC_BUSY,连接数置为1;
3、如果没有“空闲”的工作进程,即所有工作进程状态为PROC_BUSY,且当前工作进程数已达到最大工作进程数MAXPROC,则从现有工作进程中选择最小负荷的工作进程,即连接数最小的工作进程PROC_ID2,并将本次任务分配给该工作进程,将其连接数加1。
可见,本发明实施例中将进程池明确分为一个管理进程与多个工作进程协同工作,可以使服务处理更为有序;管理进程与工作进程采用半同步/半异步模型,框架层处理了大部分复杂的异步处理,应用层只需关注于逻辑处理即可,可以有效地提升性能,提高系统可靠性。
本发明实施例TCP服务方法,整体采用事件驱动机制完成多路复用,在实现时,可以封装操作系统的多路复用层的操作,充分发挥系统性能同时,增加了该方法的可移植性。而且,由于采用基于事件的多路复用技术,本框架能以有限的工作进程,支持大用户并发。
本发明实施例TCP服务方法还具有很好的扩展性,在通讯协议已经约定的情况下,开发者只需编写不同的逻辑处理即可,无须关心框架本身的实现,大大降低了TCP服务器开发的难度。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于一计算机可读取存储介质中,所述的存储介质,如:ROM/RAM、磁碟、光盘等。
所述程序可以采用UNIX/C语言或者UNIX/C++语言来实现,所述UNIX系统包括各类Linux系统。
以上对本发明实施例进行了详细介绍,本文中应用了具体实施方式对本发明进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及设备;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (8)
1.一种TCP服务装置,其特征在于,包括:接收单元、管理进程单元和至少一个工作进程单元;
所述接收单元,用于接收客户端发起的连接请求,并将所述连接请求放入内核队列中;
所述管理进程单元,用于检查所述内核队列,并在检查到所述内核队列中有未处理的连接请求后,为所述工作进程单元分配处理所述连接请求的任务,并在收到所述工作进程单元完成所述任务后发送的通知后,更新所述工作进程单元的连接数;
所述工作进程单元,用于处理所述管理进程单元分配的任务,并在完成所述任务后向所述管理进程单元发送通知;
所述管理进程单元包括:
队列检查子单元,用于检查所述内核队列;
进程确定子单元,用于在所述队列检查子单元检查到所述内核队列中有未处理的连接请求后,扫描所述工作进程单元的状态,确定处理所述连接请求的工作进程单元;
任务分配子单元,用于为确定的工作进程单元分配处理所述连接请求的任务;
通知接收子单元,用于接收所述工作进程单元完成所述任务后发送的通知;
所述进程确定子单元包括:
扫描子单元,用于在所述队列检查子单元检查到所述内核队列中有未处理的连接请求后,扫描所述工作进程单元的状态;
选择子单元,用于在所述扫描子单元扫描到有空闲的工作进程单元后,从所述空闲的工作进程单元中选择工作进程单元处理所述连接请求;并且在所述扫描子单元扫描到没有空闲的工作进程单元,并且当前工作进程单元的个数大于或等于预设的最大进程数时,选择当前负荷最小的工作进程单元处理所述连接请求;
建立子单元,用于在所述扫描子单元扫描到没有空闲的工作进程单元,并且当前工作进程单元的个数小于预设的最大进程数时,建立新的工作进程单元处理所述连接请求。
2.根据权利要求1所述的装置,其特征在于,所述管理进程单元还包括:
进程维护子单元,用于在任务分配子单元为所述工作进程单元分配任务后,将所述工作进程单元的连接数加1;在所述通知接收子单元收到所述通知后,将所述工作进程单元的连接数减1,并检查所述工作进程单元当前的连接数,如果当前的连接数为0,则将所述工作进程单元置为空闲状态。
3.根据权利要求2所述的装置,其特征在于,
所述进程维护子单元,还用于捕获工作进程单元异常退出事件,并在捕获该事件后更新所述工作进程单元的连接数。
4.根据权利要求2或3所述的装置,其特征在于,
所述进程维护子单元,还用于扫描所有工作进程单元,并在空闲的工作进程单元的个数大于预设的最小进程数时,清除多余的工作进程单元。
5.一种TCP服务方法,其特征在于,包括:
接收客户端发起的连接请求,并将所述连接请求放入内核队列中;
管理进程检查所述内核队列,并在检查到所述内核队列中有未处理的连接请求后,扫描工作进程的状态,根据扫描结果确定处理所述连接请求的工作进程;
如果有空闲的工作进程,则从所述空闲的工作进程中选择一个工作进程处理所述连接请求;
如果没有空闲的工作进程,并且当前工作进程的个数小于预设的最大进程数时,建立新的工作进程处理所述连接请求;
如果没有空闲的工作进程,并且当前工作进程的个数大于或等于预设的最大进程数时,选择当前负荷最小的工作进程处理所述连接请求;
为所述工作进程分配处理所述连接请求的任务;
工作进程处理所述任务,并在完成所述任务后向管理进程发送通知。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
所述管理进程为工作进程分配处理所述连接请求的任务后,将所述工作进程的连接数加1;在收到所述工作进程的通知后,将所述工作进程的连接数减1,并检查所述工作进程当前的连接数,如果当前的连接数为0,则将所述工作进程置为空闲状态。
7.根据权利要求5所述的方法,其特征在于,所述方法还包括:
所述管理进程捕获工作进程异常退出事件,并在捕获该事件后更新所述工作进程的连接数。
8.根据权利要求5至7任一项所述的方法,其特征在于,所述方法还包括:
扫描所有工作进程,并在空闲的工作进程的个数大于预设的最小进程数时,清除多余的工作进程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009102460028A CN101702735B (zh) | 2009-11-24 | 2009-11-24 | 一种tcp服务装置及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009102460028A CN101702735B (zh) | 2009-11-24 | 2009-11-24 | 一种tcp服务装置及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101702735A CN101702735A (zh) | 2010-05-05 |
CN101702735B true CN101702735B (zh) | 2012-07-04 |
Family
ID=42157628
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009102460028A Active CN101702735B (zh) | 2009-11-24 | 2009-11-24 | 一种tcp服务装置及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101702735B (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102368711B (zh) * | 2011-10-25 | 2014-05-21 | 曙光信息产业(北京)有限公司 | 一种面向并行文件系统的通信系统 |
CN102916953B (zh) * | 2012-10-12 | 2016-03-09 | 青岛海信传媒网络技术有限公司 | 基于tcp连接实现并发服务的方法及装置 |
CN104166589A (zh) * | 2013-05-17 | 2014-11-26 | 阿里巴巴集团控股有限公司 | 一种心跳包的处理方法和装置 |
CN104750545A (zh) * | 2013-12-27 | 2015-07-01 | 乐视网信息技术(北京)股份有限公司 | 一种调度进程的方法及装置 |
CN104796228B (zh) * | 2015-04-08 | 2018-11-20 | 天脉聚源(北京)教育科技有限公司 | 一种信息传输的方法、装置及系统 |
CN104850456A (zh) * | 2015-05-27 | 2015-08-19 | 苏州科达科技股份有限公司 | 多进程解码方法和系统 |
CN106341433A (zh) * | 2015-07-07 | 2017-01-18 | 北京易车互联信息技术有限公司 | 一种服务系统、信号服务器和对讲服务器 |
CN105721342B (zh) * | 2016-02-24 | 2017-08-25 | 腾讯科技(深圳)有限公司 | 多进程设备的网络连接方法和系统 |
CN106201667B (zh) * | 2016-06-29 | 2020-02-04 | 武汉斗鱼网络科技有限公司 | 一种用户指令队列管理系统及方法 |
CN107423118A (zh) * | 2017-04-21 | 2017-12-01 | 广州五舟科技股份有限公司 | 分布式计算数据转发方法和装置 |
CN107734032B (zh) * | 2017-10-16 | 2020-01-03 | 北京旷视科技有限公司 | 网络连接建立方法和装置 |
CN108228330B (zh) * | 2018-02-06 | 2022-03-04 | 北京安博通科技股份有限公司 | 一种串行化的多进程任务调度方法和装置 |
CN109240621B (zh) * | 2018-09-25 | 2021-12-24 | 郑州云海信息技术有限公司 | 一种非易失性内存储器管理方法与装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1992657A (zh) * | 2005-12-26 | 2007-07-04 | 中兴通讯股份有限公司 | 一种无线局域网的负载均衡方法 |
CN101256505A (zh) * | 2007-03-02 | 2008-09-03 | 中国科学院声学研究所 | 基于io事件通知机制的单进程内容服务器装置及方法 |
CN101321096A (zh) * | 2008-07-11 | 2008-12-10 | 北京立通无限科技有限公司 | 基于共享socket的通信处理方法及装置 |
-
2009
- 2009-11-24 CN CN2009102460028A patent/CN101702735B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1992657A (zh) * | 2005-12-26 | 2007-07-04 | 中兴通讯股份有限公司 | 一种无线局域网的负载均衡方法 |
CN101256505A (zh) * | 2007-03-02 | 2008-09-03 | 中国科学院声学研究所 | 基于io事件通知机制的单进程内容服务器装置及方法 |
CN101321096A (zh) * | 2008-07-11 | 2008-12-10 | 北京立通无限科技有限公司 | 基于共享socket的通信处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN101702735A (zh) | 2010-05-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101702735B (zh) | 一种tcp服务装置及方法 | |
CN1135800C (zh) | 用于具有处理器群集的电信平台的因特网协议处理器 | |
TWI337482B (en) | Computer program product and method of improving availablity and scalability in a messaging system in a manner transparent to the application | |
US6988140B2 (en) | Mechanism for servicing connections by disassociating processing resources from idle connections and monitoring the idle connections for activity | |
CA2547880C (en) | Improved distributed kernel operating system | |
US7913106B2 (en) | Failover in a host concurrently supporting multiple virtual IP addresses across multiple adapters | |
US7529820B2 (en) | Method and apparatus to perform automated task handling | |
KR101363167B1 (ko) | 개선된 분산형 커널 운영 시스템 | |
US20040003085A1 (en) | Active application socket management | |
US20080043765A1 (en) | Method and system for automatically reflecting hardware resource allocation modifications | |
EP1175045A2 (en) | Method and system for using a backbone protocol to improve network performance | |
US20060104295A1 (en) | Queued, asynchronous communication architecture interface | |
US20100057923A1 (en) | Maintaining Client Affinity in Network Load Balancing Systems | |
EP1876798A1 (en) | Cache memory storage | |
JP2003528371A (ja) | サーバ用フェデレイテッドオペレーティングシステム | |
CN1483162A (zh) | 用于对请求进行集中和负载均衡的系统和方法 | |
US20120117246A1 (en) | Method And System For The Efficient And Automated Management of Virtual Networks | |
CN113596159A (zh) | 基于k8s云容器平台的集群通信方法及装置 | |
US20040153755A1 (en) | Module firmware recovery | |
CN101447896B (zh) | 一种互联网旁路监测系统的tcp连接管理方法 | |
JP2006260543A (ja) | データをネットワークに送信する方法及び装置並びにデータをネットワークから受信する方法及び装置 | |
CN102693434A (zh) | 射频识别设备接口层的通信装置及方法 | |
CN111901689A (zh) | 流媒体数据的传输方法、装置、终端设备和存储介质 | |
US6839764B2 (en) | Domain encapsulation | |
JP3505412B2 (ja) | ソケット管理装置およびソケット管理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |