CN101321096A - 基于共享socket的通信处理方法及装置 - Google Patents
基于共享socket的通信处理方法及装置 Download PDFInfo
- Publication number
- CN101321096A CN101321096A CNA200810116567XA CN200810116567A CN101321096A CN 101321096 A CN101321096 A CN 101321096A CN A200810116567X A CNA200810116567X A CN A200810116567XA CN 200810116567 A CN200810116567 A CN 200810116567A CN 101321096 A CN101321096 A CN 101321096A
- Authority
- CN
- China
- Prior art keywords
- transaction
- processes
- transaction process
- socket
- unit
- 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.)
- Pending
Links
Images
Landscapes
- Hardware Redundancy (AREA)
Abstract
本发明公开了一种基于共享SOCKET的通信处理方法及装置,所述方法包括:主进程在服务器的指定端口建立侦听,获得侦听SOCKET;建立事务处理进程,并在所述事务处理进程中共享所述侦听SOCEKT;监控所述事务处理进程的状态,并根据所述状态调整所述事务处理进程的数量。本发明通过在事务处理进程之间共享SOCKET,使得每个事务处理进程都可以接收连接,并对该连接进行独立处理,提高了并发处理能力;由于可以对事务处理进程的连接状态进行监控,因此可以根据连接情况对事务处理进程的数量进行灵活的调整,有效减少了系统资源在开启和销毁进程时的资源消耗。
Description
技术领域
本发明涉及网络通信技术领域,特别涉及一种基于共享SOCKET的通信处理方法及装置。
背景技术
SOCKET通常也称作套接字,用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过SOCKET向网络发出请求或者应答网络请求。SOCKET实质上提供了进程通信的端点,进程通信之前,双方首先必须各自创建一个端点,一个完整的SOCKET有一个本地唯一的SOCKET号,由操作系统分配。
对于高数据量、稳定性的多进程设计模式环境,需要同时开启至少五百个以上的进程操作,因此需要考虑进程间的管理,以及进程对系统的消耗。在多进程环境下需要应用实时性的SOCKET服务器,该服务器针对每一个事务开启一个子进程,所有的子进程由父进程统一管理,在子进程处理事务的时候,父进程返回等待状态,当子进程处理事务完毕后退出。
发明人在对现有技术的研究过程中发现,基于SOCKET的大容量通信,由于每秒中需要处理上千个事务,每个子进程对事务的处理时间小于0.5秒,因此每秒相当于要开启500个子进程,同时开启上百个子进程将对系统资源造成大量消耗,当系统负担过重时,开启子进程需要较长的时间,因此使得系统将大部分的处理能力消耗在开启和销毁进程上;在开启子进程的过程中,当某一个子进程发生了延迟或者异常时,会长期处于等待状态下,由于开启的子进程数量较大,因此父进程难以对这些子进程进行实时的故障检测;在每次开启子进程时,父进程虽然可以判断是否达到了系统设置的最大子进程数,并在到达最大子进程数时等待其它子进程释放后,再开启新的子进程,但是这种被动等待子进程释放的方式缺乏灵活性,使父进程难以自主调节子进程的开启。
发明内容
本发明的目的在于提供一种基于共享SOCKET的通信处理方法及装置,以解决现有技术中基于SOCKE的通信处理方式消耗系统资源,难以控制进程状态和数量的问题。
为解决上述技术问题,本发明提供如下技术方案:
一种基于共享SOCKET的通信处理方法,包括:
主进程在服务器的指定端口建立侦听,获得侦听SOCKET;
建立事务处理进程,并在所述事务处理进程中共享所述侦听SOCEKT;
监控所述事务处理进程的状态,并根据所述状态调整所述事务处理进程的数量。
所述建立事务处理进程具体为:所述主进程通过其子进程产生与预先配置的数量一致的事务处理进程;
所述在事务处理进程中共享侦听SOCKET包括:
子进程将主进程复制的所述侦听SOCKET复制到所述事务处理进程。
所述建立事务处理进程具体为:所述主进程通过调用系统函数产生与预先配置的数量一致的事务处理进程;
所述在事务处理进程中共享侦听SOCKET包括:
主进程将所述侦听SOCKET作为所述系统函数的参数传输给所述事务处理进程。
所述根据事务处理进程的状态调整所述事务处理进程的数量包括:
通过进程间通信方式统计所有事务处理进程的状态;
当空闲状态的事务处理进程数量小于预先设置的最小空闲进程数量时,主进程产生若干新的事务处理进程,使得当前空闲状态的事务处理进程数量大于所述最小空闲进程数量;
当空闲状态的事务处理进程数量大于预先设置的最大空闲进程数量时,主进程删除若干新的事务处理进程,使得当前空闲状态的事务处理进程数量小于所述最大空闲进程数量;
当空闲状态的事务处理进程数量在所述最小空闲进程数量和最大空闲进程数量之间时,返回所述监控事务处理进程状态的步骤。
还包括:
当主进程接收到客户端的连接请求后,从所述事务处理进程中选择一个事务处理进程,将所述连接请求传输给所述选择的事务处理进程;
当主进程接收到系统的退出通知后,将所述退出通知传输给所述事务处理进程,并等待所述事务处理进程退出。
还包括:
事务处理进程获取所述侦听SOCEKT,并启动互斥锁;
当所述选择的事务处理进程接收到客户端的连接请求后,释放所述互斥锁;
判断所述客户端的连接是否可用,若是,则将接收客户端的连接请求的事务处理进程设置为忙状态,将未接收客户端的连接请求的事务处理进程设置为空闲状态;否则,返回所述启动互斥锁的步骤。
将接收客户端的连接请求的事务处理进程设置为忙状态后,还包括:
所述事务处理进程启动并发处理模式处理与所述客户端对应的事件;
处理完毕后将所述事务处理进程设置为空闲状态,并返回所述启动互斥锁的步骤。
事务处理进程获取侦听SOCEKT包括:
当事务处理进程通过复制方式获取侦听SOCKET时,所述事务处理进程直接获取所述复制的侦听SOCKET;
当事务处理进程通过参数传输方式获取侦听SOCKET时,所述事务处理进程通过读取所述参数值获取所述侦听SOCKET。
一种基于共享SOCKET的通信处理装置,包括:
获取单元,用于通过主进程在服务器的指定端口建立侦听并获得侦听SOCKET;
建立单元,用于建立事务处理进程;
共享单元,用于在所述建立单元建立的事务处理进程中共享所述侦听SOCKET;
监控单元,用于监控共享所述侦听SOCKET的事务处理进程的状态;
调整单元,用于根据所述监控单元监控的状态调整所述事务处理进程的数量。
当所述建立单元用于通过主进程的子进程产生与预先配置的数量一致的事务处理进程时,所述共享单元包括:
复制单元,用于通过子进程将主进程复制的所述侦听SOCKET复制到所述事务处理进程;
当所述建立单元用于通过主进程调用系统函数产生与预先配置的数量一致的事务处理进程时,所述共享单元包括:
传输单元,用于通过主进程将所述侦听SOCKET作为所述系统函数的参数传输给所述事务处理进程。
所述调整单元包括:
统计单元,用于通过进程间通信方式统计所有事务处理进程的状态;
比较单元,用于比较空闲的事务处理进程数量与预先设置的最小空闲进程数量和最大空闲进程数量;
第一执行单元,用于当空闲状态的事务处理进程数量小于预先设置的最小空闲进程数量时,通过主进程产生若干新的事务处理进程,使得当前空闲状态的事务处理进程数量大于所述最小空闲进程数量;
第二执行单元,用于当空闲状态的事务处理进程数量大于预先设置的最大空闲进程数量时,通过主进程删除若干新的事务处理进程,使得当前空闲状态的事务处理进程数量小于所述最大空闲进程数量;
第三执行单元,用于当空闲状态的事务处理进程数量在所述最小空闲进程数量和最大空闲进程数量之间时,执行所述监控单元的功能。
还包括:
选择单元,用于当主进程接收到客户端的连接请求后,从所述事务处理进程中选择一个事务处理进程,将所述连接请求传输给所述选择的事务处理进程;
通知单元,用于当主进程接收到系统的退出通知后,将所述退出通知传输给所述事务处理进程,并等待所述事务处理进程退出。
还包括:
启动单元,用于通过事务处理进程获取所述侦听SOCEKT,并为所述事务处理进程启动互斥锁;
释放单元,用于当所述选择的事务处理进程接收到客户端的连接请求后,释放所述互斥锁;
判断单元,用于判断所述客户端的连接是否可用;
执行单元,用于当判断单元判断连接可用时,将接收客户端的连接请求的事务处理进程设置为忙状态,将未接收客户端的连接请求的事务处理进程设置未空闲状态,当判断单元判断连接不可用时,返回执行所述启动单元的功能。
还包括:
处理单元,用于通过所述设置为忙状态的事务处理进程通过启动并发处理模式处理与所述客户端对应的事件;
设置单元,用于处理完毕后将所述事务处理进程设置为空闲状态,并返回执行所述启动单元的功能。
由以上本发明提供的技术方案可见,本发明中主进程在服务器的指定端口建立侦听,获得侦听SOCKET,建立事务处理进程,并在所述事务处理进程中共享所述侦听SOCEKT,监控所述事务处理进程的状态,并根据所述状态调整所述事务处理进程的数量。本发明通过在事务处理进程之间共享SOCKET,使得每个事务处理进程都可以接收连接,并对该连接进行独立处理,提高了并发处理能力;由于可以对事务处理进程的连接状态进行监控,因此可以根据连接情况对事务处理进程的数量进行灵活的调整,有效减少了系统资源在开启和销毁进程时的资源消耗;进一步通过采用互斥锁的方式可以控制各个事务处理进程之间的关系,有效防止了多个事务处理进程在同一时间接收同一个客户端的连接请求。
附图说明
图1为本发明基于共享SOCKET的通信处理方法的第一实施例流程图;
图2为本发明基于共享SOCKET的通信处理方法的第二实施例流程图;
图3为本发明基于共享SOCKET的通信处理方法的第三实施例流程图;
图4为本发明基于共享SOCKET的通信处理方法的第四实施例流程图;
图5为本发明基于共享SOCKET的通信处理方法的第五实施例流程图;
图6为本发明基于共享SOCKET的通信处理装置的第一实施例框图;
图7为本发明基于共享SOCKET的通信处理装置的第二实施例框图;
图8为本发明基于共享SOCKET的通信处理装置的第三实施例框图。
具体实施方式
本发明的核心是提供了一种基于共享SOCKET的通信处理方法及装置,主进程在服务器的指定端口建立侦听,获得侦听SOCKET,建立事务处理进程,并在所述事务处理进程中共享所述侦听SOCEKT,监控所述事务处理进程的状态,并根据所述状态调整所述事务处理进程的数量。
本发明利用了进程池将来自客户端的请求分配到各个事务处理进程,各个事务处理进程共享SOCKET,在事务处理进程内部通过系统提供的多路分离机制和异步IO机制并结合并发处理模式进行通信处理。为了使本技术领域的人员更好地理解本发明方案,并使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
本发明基于共享SOCKET的通信处理方法的第一实施例流程如图1所示:
步骤101:主进程在服务器的指定端口建立侦听,获得侦听SOCKET。
步骤102:建立事务处理进程,并在事务处理进程中共享该侦听SOCEKT。
可以由主线程通过其子进程产生与预先配置的数量一致的事务处理进程,此时子进程将主进程复制的所述侦听SOCKET复制到事务处理进程;也可以由主进程通过调用系统函数产生与预先配置的数量一致的事务处理进程,此时主进程将所述侦听SOCKET作为该系统函数的参数传输给事务处理进程。
步骤103:监控事务处理进程的状态,并根据监控状态调整事务处理进程的数量。
具体的,可以预先设置系统中的最小空闲进程数量和最大空闲进程数量,该进程数量范围即为事务处理进程的进程池。主进程通过进程间通信方式统计所有事务处理进程的状态,当空闲状态的事务处理进程数量小于预先设置的最小空闲进程数量时,主进程产生若干新的事务处理进程,使得当前空闲状态的事务处理进程数量大于所述最小空闲进程数量;当空闲状态的事务处理进程数量大于预先设置的最大空闲进程数量时,主进程删除若干新的事务处理进程,使得当前空闲状态的事务处理进程数量小于所述最大空闲进程数量;当空闲状态的事务处理进程数量在所述最小空闲进程数量和最大空闲进程数量之间时,返回所述监控事务处理进程状态的步骤,由此实现对事务处理进程的动态调整。
本发明基于共享SOCKET的通信处理方法的第二实施例流程如图2所示,该实施例示出了通过复制方式共享SOCKET后,主进程对事务处理进程进行动态调整的过程:
步骤201:主进程在服务器的指定端口建立侦听,获得侦听SOCKET。
步骤202:主进程通过其子进程产生与预先配置的数量一致的事务处理进程。
步骤203:子进程将主进程复制的所述侦听SOCKET复制到事务处理进程。
其中,在Windows系统中,可以通过WSADuplicateSocket调用主进程侦听到的SOCKET,并通过进程间通信方式将该SOCKET信息复制到事务处理进程中。
步骤204:监控事务处理进程的状态。
根据事务处理进程当前是否对事件进程处理,将事务处理进程的状态分为忙状态和空闲状态。
步骤205:通过进程间通信方式统计所有事务处理进程的状态。
步骤206:判断空闲状态的事务处理进程数量是否小于预先设置的最小空闲进程数量,若是,则执行步骤207;否则,执行步骤208。
可以预先设置系统中的最小空闲进程数量和最大空闲进程数量,该进程数量范围即为事务处理进程的进程池中可以包含的进程数量的范围。
步骤207:主进程产生若干新的事务处理进程。
当空闲状态的事务处理进程数量小于预先设置的最小空闲进程数量时,主进程产生若干新的事务处理进程,使得当前空闲状态的事务处理进程数量大于所述最小空闲进程数量。
步骤208:判断空闲状态的事务处理进程数量是否大于预先设置的最大空闲进程数量,若是,则执行步骤209;否则,返回步骤204。
步骤209:主进程删除若干新的事务处理进程,返回步骤204。
当空闲状态的事务处理进程数量大于预先设置的最大空闲进程数量时,主进程删除若干新的事务处理进程,使得当前空闲状态的事务处理进程数量小于所述最大空闲进程数量。
本发明基于共享SOCKET的通信处理方法的第三实施例流程如图3所示,该实施例示出了通过复制方式共享SOCKET后,主进程对事务处理进程进行动态调整的过程:
步骤301:主进程在服务器的指定端口建立侦听,获得侦听SOCKET。
步骤302:主进程通过调用系统函数产生与预先配置的数量一致的事务处理进程。
步骤303:主进程将侦听SOCKET作为该系统函数的参数传输给事务处理进程。
其中,在Linux系统中可以通过对send/recvmsg的调用将主进程侦听到的SOCKET传输给子进程。
步骤304:监控事务处理进程的状态。
步骤305:通过进程间通信方式统计所有事务处理进程的状态。
步骤306:判断空闲状态的事务处理进程数量是否小于预先设置的最小空闲进程数量,若是,则执行步骤307;否则,执行步骤308。
步骤307:主进程产生若干新的事务处理进程。
步骤308:判断空闲状态的事务处理进程数量是否大于预先设置的最大空闲进程数量,若是,则执行步骤309;否则,返回步骤304。
步骤309:主进程删除若干新的事务处理进程,返回步骤304。
本发明基于共享SOCKET的通信处理方法的第四实施例流程如图4所示,该实施例示出了主进程根据是否接收到客户端连接请求的情况进程通信处理过程:
步骤401:主进程在服务器的指定端口建立侦听,获得侦听SOCKET。
本实施例是在建立了针对事务处理进程的进程池的基础上,主进程对接收到的客户端的连接请求进行分配以及对系统的退出通知进行传输的过程。为了对事务处理进程进行统一管理,在主进程中保存了事务处理进程的ID信息和SOCKET信息。
步骤402:等待客户端的连接请求或系统的退出通知。
步骤403:判断是否接收到客户端的连接请求,若是,则执行步骤404;否则,执行步骤406。
步骤404:从所述事务处理进程中选择一个事务处理进程。
主进程从进程池中处于空闲状态的进程中选择一个事务处理进程。需要说明的是,主进程在选择了事务处理进程后,该事务处理进程从空闲状态变为忙状态,主进程统计的事务处理进程的状态信息也发生变化,主进程并行进行根据状态信息的变化动态调整事务处理进程数量的操作。
步骤405:将所述连接请求传输给所述选择的事务处理进程,返回步骤402。
步骤406:判断是否接收到系统的退出通知,若是,则执行步骤407;否则,返回步骤402。
步骤407:将退出通知传输给事务处理进程,并等待事务处理进程退出,结束当前流程。
本发明基于共享SOCKET的通信处理方法的第五实施例流程如图5所示,该实施例示出了事务处理进程通过共享SOCKET进行通信处理的过程:
步骤501:事务处理进程获取共享的SOCKET。
步骤502:通过系统函数为事务处理进程启动互斥锁。
由于多个事务处理进程之间共享同一个侦听SOCKET,因此为了防止多个事务处理进程在同一时间接收来自同一个客户端的连接请求,启动互斥锁来防止上述情况发生。启动互斥锁后,在同一时间只有一个事务处理进程接收到客户端的连接请求。
步骤503:被主线程选择的事务处理进程接收客户端的连接请求。
步骤504:为事务处理进程释放互斥锁。
步骤505:判断接收到的客户端的连接是否可用,若是,则执行步骤506;否则,返回步骤502。
步骤506:将接收客户端的连接请求的事务处理进程设置为忙状态,将其余事务处理进程设置为空闲状态。
需要说明的是,主进程就是根据事务处理进程设置的状态对进程池中的事务处理进程的数量进行动态调整。
步骤507:通过该设置为忙状态的事务处理进程启动并发处理模式处理与客户端对应的事件。
当并发处理模式为lead/fellow(主/从)模式时,事务处理进程中的各个线程执行同等的时间探测、时间多路分离、时间分发和时间处理的机制。具体的,在同一时刻仅有一个线程处于leading状态,该线程等待一个或多个时间发生,而其它线程处于following状态,它们排队等待进入leading状态,当前处于leading状态的线程探测到有事件发生时,该线程从处于following状态的线程中选择一个线程后,对探测到的事件进行处理,处理完毕后,该线程进入following状态,同时被选择的线程成为新的leading线程。lead/fellow模式可以在leading状态线程处于等待状态时,实现多个处理线程的并行工作,有效提高了系统的并发处理能力。
当并发处理模式为reactor(反应)模式时,事务处理进程中的各个线程执行同步事件多路分离和事件处理机制。在该模式下,为各个子线程指定处理的事件类型,主线程等待利用系统提供的同步事件多路分离机制等待一个或多个事件发生,当有事件发生时,根据该事件的类型调用相应的子线程处理该事件。reactor模式通过主线程调用子线程处理对应的事件,提高了系统的并发处理能力。
步骤508:处理完毕后将该事务处理进程设置为空闲状态,返回步骤502。
与本发明基于共享SOCKET的通信处理方法相对应,本发明还提供了基于共享SOCKET的通信处理装置。
本发明基于共享SOCKET的通信处理装置的第一实施例框图如图6所示,该装置包括:获取单元610、建立单元620、共享单元630、监控单元640和调整单元650。
其中,获取单元610用于通过主进程在服务器的指定端口建立侦听并获得侦听SOCKET;建立单元620用于建立事务处理进程;共享单元630用于在所述建立单元建立的事务处理进程中共享所述侦听SOCKET;监控单元640用于监控共享所述侦听SOCKET的事务处理进程的状态;调整单元650用于根据所述监控单元监控的状态调整所述事务处理进程的数量。
本发明基于共享SOCKET的通信处理装置的第二实施例框图如图7所示,该装置包括:获取单元710、建立单元720、共享单元730、监控单元740和调整单元750。
其中,获取单元710用于通过主进程在服务器的指定端口建立侦听并获得侦听SOCKET。
建立单元720用于建立事务处理进程。
共享单元730包括:复制单元731,用于当所述建立单元720通过主进程的子进程产生与预先配置的数量一致的事务处理进程时,通过子进程将主进程复制的所述侦听SOCKET复制到所述事务处理进程;传输单元732,用于当所述建立单元720通过主进程调用系统函数产生与预先配置的数量一致的事务处理进程时,通过主进程将所述侦听SOCKET作为所述系统函数的参数传输给所述事务处理进程。
监控单元740用于监控共享所述侦听SOCKET的事务处理进程的状态;
调整单元750包括:统计单元751,用于通过进程间通信方式统计所有事务处理进程的状态;比较单元752,用于比较空闲的事务处理进程数量与预先设置的最小空闲进程数量和最大空闲进程数量;第一执行单元753,用于当空闲状态的事务处理进程数量小于预先设置的最小空闲进程数量时,通过主进程产生若干新的事务处理进程,使得当前空闲状态的事务处理进程数量大于所述最小空闲进程数量;第二执行单元754,用于当空闲状态的事务处理进程数量大于预先设置的最大空闲进程数量时,通过主进程删除若干新的事务处理进程,使得当前空闲状态的事务处理进程数量小于所述最大空闲进程数量;第三执行单元755,用于当空闲状态的事务处理进程数量在所述最小空闲进程数量和最大空闲进程数量之间时,执行所述监控单元740的功能。
本发明基于共享SOCKET的通信处理装置的第三实施例框图如图8所示,该装置包括:获取单元801、建立单元802、共享单元803、监控单元804、调整单元805、选择单元806、通知单元807、启动单元808、释放单元809、判断单元810、执行单元811、处理单元812和设置单元813。
其中,获取单元801用于通过主进程在服务器的指定端口建立侦听并获得侦听SOCKET;建立单元802用于建立事务处理进程;共享单元803用于在所述建立单元建立的事务处理进程中共享所述侦听SOCKET;监控单元804用于监控共享所述侦听SOCKET的事务处理进程的状态;调整单元805用于根据所述监控单元监控的状态调整所述事务处理进程的数量。
进一步,选择单元806用于当主进程接收到客户端的连接请求后,从所述事务处理进程中选择一个事务处理进程,将所述连接请求传输给所述选择的事务处理进程;通知单元807用于当主进程接收到系统的退出通知后,将所述退出通知传输给所述事务处理进程,并等待所述事务处理进程退出。
进一步,启动单元808用于通过事务处理进程获取所述侦听SOCEKT,并为所述事务处理进程启动互斥锁;释放单元809用于当所述选择的事务处理进程接收到客户端的连接请求后,释放所述互斥锁;判断单元810用于判断所述客户端的连接是否可用;执行单元811用于当判断单元判断连接可用时,将接收客户端的连接请求的事务处理进程设置为忙状态,将未接收客户端的连接请求的事务处理进程设置未空闲状态,当判断单元判断连接不可用时,返回执行所述启动单元的功能;处理单元812用于通过所述设置为忙状态的事务处理进程通过启动并发处理模式处理与所述客户端对应的事件;设置单元813用于处理完毕后将所述事务处理进程设置为空闲状态,并返回执行所述启动单元的功能。
通过以上的实施方式的描述可知,本发明通过在事务处理进程之间共享SOCKET,使得每个事务处理进程都可以接收连接,并对该连接进行独立处理,提高了并发处理能力;由于可以对事务处理进程的连接状态进行监控,因此可以根据连接情况对事务处理进程的数量进行灵活的调整,有效减少了系统资源在开启和销毁进程时的资源消耗;进一步通过采用互斥锁的方式可以控制各个事务处理进程之间的关系,有效防止了多个事务处理进程在同一时间接收同一个客户端的连接请求。
本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
以上所述的本发明实施方式,并不构成对本发明保护范围的限定。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (14)
1、一种基于共享SOCKET的通信处理方法,其特征在于,包括:
主进程在服务器的指定端口建立侦听,获得侦听SOCKET;
建立事务处理进程,并在所述事务处理进程中共享所述侦听SOCEKT;
监控所述事务处理进程的状态,并根据所述状态调整所述事务处理进程的数量。
2、根据权利要求1所述的方法,其特征在于,所述建立事务处理进程具体为:所述主进程通过其子进程产生与预先配置的数量一致的事务处理进程;
所述在事务处理进程中共享侦听SOCKET包括:
子进程将主进程复制的所述侦听SOCKET复制到所述事务处理进程。
3、根据权利要求1所述的方法,其特征在于,所述建立事务处理进程具体为:所述主进程通过调用系统函数产生与预先配置的数量一致的事务处理进程;
所述在事务处理进程中共享侦听SOCKET包括:
主进程将所述侦听SOCKET作为所述系统函数的参数传输给所述事务处理进程。
4、根据权利要求1所述的方法,其特征在于,所述根据事务处理进程的状态调整所述事务处理进程的数量包括:
通过进程间通信方式统计所有事务处理进程的状态;
当空闲状态的事务处理进程数量小于预先设置的最小空闲进程数量时,主进程产生若干新的事务处理进程,使得当前空闲状态的事务处理进程数量大于所述最小空闲进程数量;
当空闲状态的事务处理进程数量大于预先设置的最大空闲进程数量时,主进程删除若干新的事务处理进程,使得当前空闲状态的事务处理进程数量小于所述最大空闲进程数量;
当空闲状态的事务处理进程数量在所述最小空闲进程数量和最大空闲进程数量之间时,返回所述监控事务处理进程状态的步骤。
5、根据权利要求1所述的方法,其特征在于,还包括:
当主进程接收到客户端的连接请求后,从所述事务处理进程中选择一个事务处理进程,将所述连接请求传输给所述选择的事务处理进程;
当主进程接收到系统的退出通知后,将所述退出通知传输给所述事务处理进程,并等待所述事务处理进程退出。
6、根据权利要求5所述的方法,其特征在于,还包括:
事务处理进程获取所述侦听SOCEKT,并启动互斥锁;
当所述选择的事务处理进程接收到客户端的连接请求后,释放所述互斥锁;
判断所述客户端的连接是否可用,若是,则将接收客户端的连接请求的事务处理进程设置为忙状态,将未接收客户端的连接请求的事务处理进程设置为空闲状态;否则,返回所述启动互斥锁的步骤。
7、根据权利要求6所述的方法,其特征在于,将接收客户端的连接请求的事务处理进程设置为忙状态后,还包括:
所述事务处理进程启动并发处理模式处理与所述客户端对应的事件;
处理完毕后将所述事务处理进程设置为空闲状态,并返回所述启动互斥锁的步骤。
8、根据权利要求6所述的方法,其特征在于,事务处理进程获取侦听SOCEKT包括:
当事务处理进程通过复制方式获取侦听SOCKET时,所述事务处理进程直接获取所述复制的侦听SOCKET;
当事务处理进程通过参数传输方式获取侦听SOCKET时,所述事务处理进程通过读取所述参数值获取所述侦听SOCKET。
9、一种基于共享SOCKET的通信处理装置,其特征在于,包括:
获取单元,用于通过主进程在服务器的指定端口建立侦听并获得侦听SOCKET;
建立单元,用于建立事务处理进程;
共享单元,用于在所述建立单元建立的事务处理进程中共享所述侦听SOCKET;
监控单元,用于监控共享所述侦听SOCKET的事务处理进程的状态;
调整单元,用于根据所述监控单元监控的状态调整所述事务处理进程的数量。
10、根据权利要求9所述的装置,其特征在于,当所述建立单元用于通过主进程的子进程产生与预先配置的数量一致的事务处理进程时,所述共享单元包括:
复制单元,用于通过子进程将主进程复制的所述侦听SOCKET复制到所述事务处理进程;
当所述建立单元用于通过主进程调用系统函数产生与预先配置的数量一致的事务处理进程时,所述共享单元包括:
传输单元,用于通过主进程将所述侦听SOCKET作为所述系统函数的参数传输给所述事务处理进程。
11、根据权利要求9所述的装置,其特征在于,所述调整单元包括:
统计单元,用于通过进程间通信方式统计所有事务处理进程的状态;
比较单元,用于比较空闲的事务处理进程数量与预先设置的最小空闲进程数量和最大空闲进程数量;
第一执行单元,用于当空闲状态的事务处理进程数量小于预先设置的最小空闲进程数量时,通过主进程产生若干新的事务处理进程,使得当前空闲状态的事务处理进程数量大于所述最小空闲进程数量;
第二执行单元,用于当空闲状态的事务处理进程数量大于预先设置的最大空闲进程数量时,通过主进程删除若干新的事务处理进程,使得当前空闲状态的事务处理进程数量小于所述最大空闲进程数量;
第三执行单元,用于当空闲状态的事务处理进程数量在所述最小空闲进程数量和最大空闲进程数量之间时,执行所述监控单元的功能。
12、根据权利要求9所述的装置,其特征在于,还包括:
选择单元,用于当主进程接收到客户端的连接请求后,从所述事务处理进程中选择一个事务处理进程,将所述连接请求传输给所述选择的事务处理进程;
通知单元,用于当主进程接收到系统的退出通知后,将所述退出通知传输给所述事务处理进程,并等待所述事务处理进程退出。
13、根据权利要求12所述的装置,其特征在于,还包括:
启动单元,用于通过事务处理进程获取所述侦听SOCEKT,并为所述事务处理进程启动互斥锁;
释放单元,用于当所述选择的事务处理进程接收到客户端的连接请求后,释放所述互斥锁;
判断单元,用于判断所述客户端的连接是否可用;
执行单元,用于当判断单元判断连接可用时,将接收客户端的连接请求的事务处理进程设置为忙状态,将未接收客户端的连接请求的事务处理进程设置未空闲状态,当判断单元判断连接不可用时,返回执行所述启动单元的功能。
14、根据权利要求13所述的装置,其特征在于,还包括:
处理单元,用于通过所述设置为忙状态的事务处理进程通过启动并发处理模式处理与所述客户端对应的事件;
设置单元,用于处理完毕后将所述事务处理进程设置为空闲状态,并返回执行所述启动单元的功能。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA200810116567XA CN101321096A (zh) | 2008-07-11 | 2008-07-11 | 基于共享socket的通信处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA200810116567XA CN101321096A (zh) | 2008-07-11 | 2008-07-11 | 基于共享socket的通信处理方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101321096A true CN101321096A (zh) | 2008-12-10 |
Family
ID=40180942
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA200810116567XA Pending CN101321096A (zh) | 2008-07-11 | 2008-07-11 | 基于共享socket的通信处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101321096A (zh) |
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101963924A (zh) * | 2010-10-21 | 2011-02-02 | 深圳创维-Rgb电子有限公司 | 一种进程通信方法、装置及操作系统 |
CN102520936A (zh) * | 2011-11-30 | 2012-06-27 | 厦门雅迅网络股份有限公司 | 一种在Android上实现Socket通讯服务共享的方法 |
CN101702735B (zh) * | 2009-11-24 | 2012-07-04 | 恒生电子股份有限公司 | 一种tcp服务装置及方法 |
CN102012836B (zh) * | 2009-09-07 | 2012-07-04 | 中国移动通信集团公司 | 一种进程生存控制方法和设备 |
CN102780764A (zh) * | 2012-06-28 | 2012-11-14 | 北京奇虎科技有限公司 | 一种代理通信系统及方法 |
CN102890644A (zh) * | 2011-07-20 | 2013-01-23 | 郑州威科姆科技股份有限公司 | 一种基于字节流的进程间通讯方法 |
CN102946362A (zh) * | 2012-09-13 | 2013-02-27 | 杭州华三通信技术有限公司 | 一种套接字资源分配方法及设备 |
CN103188209A (zh) * | 2011-12-27 | 2013-07-03 | 上海博达数据通信有限公司 | 基于多核处理器实现socket的方法 |
CN104461831A (zh) * | 2014-12-19 | 2015-03-25 | 上海斐讯数据通信技术有限公司 | 网络设备的进程管理方法及装置 |
CN104598300A (zh) * | 2014-12-24 | 2015-05-06 | 北京奇虎科技有限公司 | 分布式业务流程定制方法及系统 |
CN105204943A (zh) * | 2015-08-28 | 2015-12-30 | 北京奇艺世纪科技有限公司 | 一种实现网页服务器多进程间负载均衡的方法及装置 |
CN105939344A (zh) * | 2016-04-18 | 2016-09-14 | 杭州迪普科技有限公司 | 一种tcp连接的建立方法及装置 |
CN106598648A (zh) * | 2016-11-10 | 2017-04-26 | 北京三快在线科技有限公司 | 一种服务器程序升级的控制方法及装置 |
CN107423118A (zh) * | 2017-04-21 | 2017-12-01 | 广州五舟科技股份有限公司 | 分布式计算数据转发方法和装置 |
CN109062787A (zh) * | 2018-07-17 | 2018-12-21 | 北京中科网威信息技术有限公司 | 一种基于申威架构的进程间通信的统计调试方法及装置 |
CN109117278A (zh) * | 2018-06-29 | 2019-01-01 | Oppo(重庆)智能科技有限公司 | 一种移动终端及其进程间通信的限制方法、存储介质 |
CN109818819A (zh) * | 2018-12-11 | 2019-05-28 | 北京奇安信科技有限公司 | 多产品联动功能稳定性测试方法及装置 |
CN111209125A (zh) * | 2019-12-31 | 2020-05-29 | 瑞斯康达科技发展股份有限公司 | 一种多进程的命令行实现方法 |
-
2008
- 2008-07-11 CN CNA200810116567XA patent/CN101321096A/zh active Pending
Cited By (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102012836B (zh) * | 2009-09-07 | 2012-07-04 | 中国移动通信集团公司 | 一种进程生存控制方法和设备 |
CN101702735B (zh) * | 2009-11-24 | 2012-07-04 | 恒生电子股份有限公司 | 一种tcp服务装置及方法 |
CN101963924B (zh) * | 2010-10-21 | 2013-10-23 | 深圳创维-Rgb电子有限公司 | 一种进程通信方法、装置及操作系统 |
CN101963924A (zh) * | 2010-10-21 | 2011-02-02 | 深圳创维-Rgb电子有限公司 | 一种进程通信方法、装置及操作系统 |
CN102890644B (zh) * | 2011-07-20 | 2015-01-14 | 郑州威科姆科技股份有限公司 | 一种基于字节流的进程间通讯方法 |
CN102890644A (zh) * | 2011-07-20 | 2013-01-23 | 郑州威科姆科技股份有限公司 | 一种基于字节流的进程间通讯方法 |
CN102520936B (zh) * | 2011-11-30 | 2017-02-08 | 厦门雅迅网络股份有限公司 | 一种在Android上实现Socket通讯服务共享的方法 |
CN102520936A (zh) * | 2011-11-30 | 2012-06-27 | 厦门雅迅网络股份有限公司 | 一种在Android上实现Socket通讯服务共享的方法 |
CN103188209A (zh) * | 2011-12-27 | 2013-07-03 | 上海博达数据通信有限公司 | 基于多核处理器实现socket的方法 |
CN102780764A (zh) * | 2012-06-28 | 2012-11-14 | 北京奇虎科技有限公司 | 一种代理通信系统及方法 |
CN102946362A (zh) * | 2012-09-13 | 2013-02-27 | 杭州华三通信技术有限公司 | 一种套接字资源分配方法及设备 |
CN102946362B (zh) * | 2012-09-13 | 2016-08-31 | 杭州华三通信技术有限公司 | 一种套接字资源分配方法及设备 |
CN104461831A (zh) * | 2014-12-19 | 2015-03-25 | 上海斐讯数据通信技术有限公司 | 网络设备的进程管理方法及装置 |
CN104598300A (zh) * | 2014-12-24 | 2015-05-06 | 北京奇虎科技有限公司 | 分布式业务流程定制方法及系统 |
CN105204943A (zh) * | 2015-08-28 | 2015-12-30 | 北京奇艺世纪科技有限公司 | 一种实现网页服务器多进程间负载均衡的方法及装置 |
CN105204943B (zh) * | 2015-08-28 | 2019-09-17 | 北京奇艺世纪科技有限公司 | 一种实现网页服务器多进程间负载均衡的方法及装置 |
CN105939344A (zh) * | 2016-04-18 | 2016-09-14 | 杭州迪普科技有限公司 | 一种tcp连接的建立方法及装置 |
CN106598648A (zh) * | 2016-11-10 | 2017-04-26 | 北京三快在线科技有限公司 | 一种服务器程序升级的控制方法及装置 |
CN107423118A (zh) * | 2017-04-21 | 2017-12-01 | 广州五舟科技股份有限公司 | 分布式计算数据转发方法和装置 |
CN109117278A (zh) * | 2018-06-29 | 2019-01-01 | Oppo(重庆)智能科技有限公司 | 一种移动终端及其进程间通信的限制方法、存储介质 |
CN109062787A (zh) * | 2018-07-17 | 2018-12-21 | 北京中科网威信息技术有限公司 | 一种基于申威架构的进程间通信的统计调试方法及装置 |
CN109818819A (zh) * | 2018-12-11 | 2019-05-28 | 北京奇安信科技有限公司 | 多产品联动功能稳定性测试方法及装置 |
CN109818819B (zh) * | 2018-12-11 | 2020-11-06 | 奇安信科技集团股份有限公司 | 多产品联动功能稳定性测试方法及装置 |
CN111209125A (zh) * | 2019-12-31 | 2020-05-29 | 瑞斯康达科技发展股份有限公司 | 一种多进程的命令行实现方法 |
CN111209125B (zh) * | 2019-12-31 | 2023-09-26 | 瑞斯康达科技发展股份有限公司 | 一种多进程的命令行实现方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101321096A (zh) | 基于共享socket的通信处理方法及装置 | |
CN101167307B (zh) | 一种可动态自适应的分布式资源管理系统和方法 | |
CN106776212A (zh) | 容器集群部署多进程应用的监管系统及方法 | |
CN101571813A (zh) | 一种多机集群中主从调度方法 | |
EP4345614A1 (en) | Pod deployment method and apparatus | |
CN106815086A (zh) | 一种基于龙芯平台的通信控制框架 | |
CN110912972B (zh) | 一种业务处理方法、系统、电子设备及可读存储介质 | |
CN110535928B (zh) | 一种区块链的java智能合约的事件推送方法 | |
EP1684456B1 (en) | A method for data redundancy of HLR | |
CN102354296A (zh) | 一种可扩展监控资源的监控系统和方法 | |
CN106339217A (zh) | 基于Unity的事件管理方法及系统 | |
CN109151082A (zh) | 一种多连接建立方法、装置和系统 | |
CN109302324A (zh) | 一种私有云监控预警方法及系统 | |
CN112698838A (zh) | 多云容器部署系统及其容器部署方法 | |
CN100464541C (zh) | 一种实现时分复用承载资源共享的方法及系统 | |
CN102025728A (zh) | 客户端/服务端架构下的调度方法和服务器 | |
CN104657240B (zh) | 多内核操作系统的失效控制方法及装置 | |
CN101751292B (zh) | Atc系统中一种实现多机关键数据一致性功能的方法 | |
CN115643271A (zh) | 一种云上多应用数据同步方法、装置、服务器及介质 | |
CN114564340B (zh) | 航天地面系统分布式软件高可用方法 | |
CN110399254A (zh) | 一种服务器cmc双机热活方法、系统、终端及存储介质 | |
CN109669979A (zh) | 数据的处理方法及装置、存储介质 | |
CN107438834A (zh) | 虚拟机功能服务的实现方法、装置、电子设备和计算机程序产品 | |
CN112463330A (zh) | 基于中间件技术的应用总线监控系统 | |
CN108810037B (zh) | 分布式集群服务的实现方法和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Open date: 20081210 |