异步通信模式下socket通信与进程管理通用平台及方法
【技术领域】
[0001]本发明涉及异步通信模式下SOCKET通信与进程管理通用平台及方法。
【背景技术】
[0002]在TCP/IP网络层次模型中,SOCKET是应用层与传输层之间的一个软件抽象层,是诸多网络通信编程技术的基础,应用广泛,具有低成本、低资源消耗、跨平台等特点而备受青睐。
[0003]但是SOCKET编程有其技术门槛,编写稳健的SOCKET通信程序需要了解其技术特点,规避特有的技术风险,融合相关的进程、内存、信号、锁等管理技术,需要一定的技术功底。
[0004]为简化SOCKET编程,提高编程效率,业界提供了一些开源的C/C++网络开发库,如ACE、Boost 的 AS10、libevent。
[0005]ACE是一个大型的中间件产品,过于庞大,SOCKET通信只是其庞大功能集合中的功能之一,学习门槛很高。
[0006]AS10是一个C++版本的异步10库,封装了 SOCKET的常用操作,依赖Boost,要求开发人员熟悉C++、Boost,支持多线程并发处理,但是需要开发人员自行创建与管理线程并考虑线程安全。
[0007]libevent是对10多路复用技术的进一步封装,采用事件驱动的运行机制,本身不包含进程或线程的管理,另外需要开发人员自行创建并管理SOCKET描述符。
[0008]上述三个开发库都不适合简单通用的网络程序开发场景:在单位内部或外部,需要开发部署网络通信程序进行数据交换,采用自行约定的通信协议,而开发人员水平一般,不熟悉SOCKET通信机制、进程管理、信号、锁等编程技术,此时快速开发部署稳健的通信程序比较困难。
[0009]在请求密集场景中,通常采用异步通信模式,允许客户端批量发送一批请求,在上一个请求处理完成之前,客户端可以发送新的请求,从而提升交易请求吞吐量,服务端的应答返回时客户端根据应答结果中的消息标识关联自己的请求消息,辨识应答结果的归属。业界缺乏类似的开发库。
【发明内容】
[0010]为解决现有技术存在的不足,本发明公开了异步通信模式下SOCKET通信与进程管理通用平台及方法,融合SOCKET通信与进程管理功能,开发人员用以快速开发部署网络通信程序,无需关心SOCKET通信与进程管理等技术细节,专注于业务逻辑的实现,提高开发效率并降低开发门槛;对于网络服务程序,可以通过配置参数指定服务进程的数目,实现处理能力的灵活扩展;采用多个进程而不是线程并发运行,开发人员无需考虑线程安全,进一步降低开发门槛;平台运行内置诊断模块,实时监控整个平台的繁忙比率,达到设定阈值时在线增减服务进程的数目,实现处理能力的动态扩展;实时监控平台的运行状况,对于异常终止或僵死的服务进程自动予以重启,确保整个平台稳定持续运行;另外包含一个直观简易的运行监视界面,可以实时查看平台全局信息与服务进程的处理状态。
[0011]支持异步通信模式,允许客户端批量发送一批请求,在上一个请求处理完成之前,客户端可以发送新的请求,从而提升交易请求吞吐量,服务端的应答返回时客户端根据应答结果中的消息标识关联自己的请求消息,辨识应答结果的归属。
[0012]为实现上述目的,本发明的具体方案如下:
[0013]SOCKET通信与进程管理通用平台发布为一个静态库文件,附带一组头文件、配套资料及代码样例,提供编程接口供开发人员编程调用,支持各种类UNIX操作系统,支持C/C++开发语言。
[0014]与客户端的通信协议支持TCP、UDP,采用异步通信模式。
[0015]TCP (Transmiss1n Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议;UDP(User Datagram Protocol,用户数据报协议),是一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。
[0016]异步通信模式时,允许客户端批量发送一批请求,在上一个请求处理完成之前,客户端可以发送新的请求,从而提升交易请求吞吐量,服务端的应答返回时客户端根据应答结果中的消息标识关联自己的请求消息,辨识应答结果的归属;
[0017]异步通信模式下SOCKET通信与进程管理通用方法,包括以下步骤:
[0018]异步通信模式场景中,完整功能的实现包含两个平台:一个异步通信平台、一个业务处理平台,两者通过消息队列与UNIX域SOCKET通信机制交换数据,灵活扩展处理能力,提升交易吞吐量;
[0019]平台运行前需要编码实现业务逻辑,编译生成最终的执行程序并部署。两个平台需要分别编写编译,分别部署,协作完成客户端请求处理;
[0020]通信平台运行时创建一个平台进程、一个诊断进程、一组通信进程,通信进程的数目由配置参数决定,平台进程根据配置文件中的平台关键字创建进程管理共享内存、信号灯,创建一个SOCKET监听描述符、一个SOCKET管理描述符、一组描述符传递通道、一个空闲通道,对于UDP通信协议额外创建一个令牌通道;
[0021]业务处理平台运行时创建一个平台进程、一个诊断进程、一个分发进程、一组处理进程,平台进程根据配置文件中的平台关键字创建进程管理共享内存、信号灯,创建一个SOCKET管理描述符;
[0022]异步通信平台与业务处理平台运行就绪之后,等待客户端连接请求;
[0023]客户端发起连接请求时,由通信平台中的平台进程接受连接请求,得到客户端连接描述符,通过事先创建的描述符传递通道传递给某个空闲的通信进程,平台进程关闭与客户端的连接;
[0024]通信进程接管与客户端的连接,读取客户端请求消息,绑定自己的进程序号后,放入请求队列;
[0025]处理平台中的分发进程从请求队列中读取请求,分发给某个空闲的处理进程,处理进程处理完成之后,连接请求消息中的进程序号对应的通信进程,并发送应答结果;
[0026]通信平台中的通信进程转发应答结果给客户端,从而应答结果由接收该请求消息的通信进程返回。
[0027]进一步的,两个平台各自的进程管理共享内存中包含平台全局信息,如:平台类型、服务进程数目、服务进程繁忙比率、平台进程ID、诊断进程ID等,以及一组管理槽位,每个服务进程占用其中一个槽位,存放服务进程的私有信息,包括:进程ID、运行状态、用户ID、组ID、执行时间、执行时限等。
[0028]进一步的,一个通信进程可以搭配一组处理进程,通信进程专职通信,处理进程专职业务逻辑处理,两者通过消息队列与UNIX域SOCKET通信机制交换数据。
[0029]进一步的,通信平台以SOCKET服务模式运行,处理平台以常驻进程管理模式运行。SOCKET服务模式作为SOCKET服务与客户端通信,通过配置参数指定服务进程的数目,实现处理能力的灵活扩展,具有自我诊断与实时运行监视功能;常驻进程管理模式中,业务逻辑封装为独立的插件程序在平台上运行,每个插件程序可以彼此不同,可以由不同的用户执行,可以单独启动或停止,在单个平台中集中管理多个用户的后台散乱任务,同样具有自我诊断与实时运行监视功能。
[0030]进一步的,在通信平台中,客户端请求到达之后由平台进程接受,得到客户端连接描述符,通过描述符传递通道发送给空闲的通信进程,通信进程创建一个UNIX域的监听SOCKET,作为与处理平台中的处理进程交互的通道,之后通信进程通过10多路复用技术同时兼顾客户端描述符、UNIX域监听SOCKET。
[0031]进一步的,在处理平台中,处理进程读取客户端请求消息,处理业务逻辑,根据消息绑定的通信进程序号连接对应的通信进程的UNIX域监听SOCKET并发送应答结果,通信进程接受处理进程连接请求,得到处理进程连接描述符,之后通信进程的10多路复用操作将兼顾这个新的处理进程连接描述符,从中读取处理进程应答结果并转发给客户端。
[0032]进一步的,在处理平台内部,采用分发逻辑,平台启动时创建一个空闲通道与一组数据传输通道,再采用插件程序的方式运行一个分发进程与一组处理进程,处理进程启动时在空闲通道中登记自己的进程编号,并等待读取自己专属的数据传输通道,分发进程从请求队列中提取客户端请求,从空闲通道中提取第一个空闲的处理进程编号,通过进程编号对应的数据通道发送客户端的请求数据,对应的处理进程接收并处理请求的业务逻辑,之后向请求数据对应的通信进程发送应