适合多种场景的socket通信与进程管理通用平台及方法

文档序号:9600910阅读:470来源:国知局
适合多种场景的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]另外,服务器上通常存在大量散乱的应用程序,每个应用程序可能彼此不同,还可能归属于不同的用户,作为服务进程后台常驻运行,但是疏于管理,管理员不能掌握每个服务进程的运行状况,经常是服务进程异常终止而不知晓,不能直观查看服务进程的运行处理状态。

【发明内容】

[0011]为解决现有技术存在的不足,本发明公开了适合多种场景的SOCKET通信与进程管理通用平台及方法,开发平台适用于两类应用开发场景:SOCKET服务场景、常驻进程管理场景,在SOCKET服务场景中开发运行SOCKET服务,支持同步异步通信模式,在常驻进程管理场景中开发运行插件形式的后台应用。
[0012]为实现上述目的,本发明的具体方案如下:
[0013]适合多种场景的SOCKET通信与进程管理通用方法,包括以下步骤:
[0014]适用于SOCKET服务场景及常驻进程管理场景,在SOCKET服务场景中运行SOCKET服务,在常驻进程管理场景中运行插件形式的后台应用,每种场景均包括:
[0015]基础框架运行:创建一组进程,该组进程用于实现业务逻辑的处理,等待并响应用户操作指令及诊断进程的汇报;
[0016]诊断进程运行:检测所创建的进程的运行状态,自动重启异常终止或僵死的服务进程,确保整个平台持续稳定运行;
[0017]业务逻辑处理:在SOCKET服务场景中,服务进程启动时在空闲通道中登记自己的进程编号,并等待读取自己专属的描述符传递通道,客户端请求到达时,由平台进程接受,从空闲通道中提取第一个空闲的服务进程编号,通过进程编号对应的描述符传递通道发送客户端描述符,对应的服务进程接收客户端描述符,处理请求的业务逻辑,之后向客户端返回应答结果,最后再次在空闲通道中登记自己的进程编号;在常驻进程管理场景中,业务逻辑由插件程序承载,平台运行后可以通过用户指令依次启动多个插件程序,采用唯一的进程编号区分,插件程序独立于平台进程自主运行。
[0018]进一步的,基础框架运行中,平台运行时创建一个平台进程、一个诊断进程,平台进程根据配置文件中的平台关键字创建进程管理共享内存、信号灯,创建一个SOCKET管理描述符;对于SOCKET服务场景,额外创建一个SOCKET监听描述符、一组描述符传递通道、一个空闲通道,平台进程通过SOCKET监听描述符等待客户端连接请求,通过SOCKET管理描述符等待用户操作指令或诊断进程的汇报,采用10多路复用技术同时兼顾这两个描述符,再创建一组服务进程,服务进程的数目由配置参数决定。
[0019]进一步的,同步模式SOCKET服务场景中,在配置文件中添加透明转发参数,指定目标的IP及端口,客户端发起连接请求时,首先依然由平台进程接受,通过空闲通道转发给空闲的服务进程,服务进程接收客户端描述符,之后建立与目标的SOCKET连接,得到目标描述符,然后采用10多路复用技术(poll系统调用)同时兼顾这两个描述符;
[0020]其中任何一个描述符具备可以读取的数据时,服务进程读取数据,并发送给另外一个描述符,周而复始;服务进程收到客户端描述符之后,与客户端的后续交互不再通过平台进程,直接对话;任何一方关闭连接时,整个通信流程结束,回到初始状态。
[0021]进一步的,诊断进程运行时,实时检测各个服务进程的运行状态,对于单个周期运行持续时间超过设定时限的服务进程,强行杀死并向平台进程汇报,由平台进程予以重启,避免服务进程的无限期挂起,确保服务行为可控;同时实时检测各个服务进程存活与否,服务进程异常终止时向平台进程汇报,由平台进程予以重启,确保整个平台持续稳定运行;对于SOCKET服务场景,同时实时监控整个平台的繁忙比率,达到设定阈值时向平台进程汇报,在线增减服务进程的数目。
[0022]进一步的,结合SOCKET服务模式与常驻进程管理模式实现异步模式SOCKET服务平台,完整功能的实现包含两个平台:一个异步通信平台、一个业务处理平台,两者通过消息队列与UNIX域SOCKET通信机制交换数据,灵活扩展处理能力,提升交易吞吐量。
[0023]上述适合多种场景的SOCKET通信与进程管理通用方法在框架平台运行前还包括:
[0024]编写编译程序:按照项目要求更改样例代码,编写个性化业务处理逻辑,调用编程接口注册业务逻辑回调函数,调用平台入口函数;编写完毕与开发平台提供的静态库文件联合编译,生成平台程序与运行监视程序;
[0025]程序部署:按照项目要求调整开发平台附带的样例配置文件,提供必需的配置参数,定制平台运行行为。
[0026]进一步的,对于适合多种场景的SOCKET通信与进程管理通用方法还包括运行监视步骤:启动监视界面,从平台的进程管理共享内存中提取平台全局信息以及每个服务进程的运行信息,在屏幕上实时直观显示,采用定时信号驱动周期性自动刷新。
[0027]适合多种场景的SOCKET通信与进程管理通用平台,发布为一个静态库,附带一组头文件、配套资料及代码样例,开发人员可以用来快速开发部署网络通信程序及常驻服务程序,包括:
[0028]适用于SOCKET服务场景及常驻进程管理场景,在SOCKET服务场景中运行SOCKET服务,在常驻进程管理场景中运行插件形式的后台应用,每种场景均包括:
[0029]基础框架模块:创建一组进程,该组进程用于实现业务逻辑的处理,等待并响应用户操作指令及诊断进程的汇报;
[0030]诊断模块:检测所建立的进程的运行状态,自动重启异常终止或僵死的服务进程,确保整个平台持续稳定运行;
[0031]业务逻辑处理模块:在SOCKET服务场景中,服务进程启动时在空闲通道中登记自己的进程编号,并等待读取自己专属的描述符传递通道,客户端请求到达时,由平台进程接受,从空闲通道中提取第一个空闲的服务进程编号,通过进程编号对应的描述符传递通道发送客户端描述符,对应的服务进程接收客户端描述符,处理请求的业务逻辑,之后向客户端返回应答结果,最后再次在空闲通道中登记自己的进程编号;在常驻进程管理场景中,业务逻辑由插件程序承载,平台运行后可以通过用户指令依次启动多个插件程序,采用唯一的进程编号区分,插件程序独立于平台进程自主运行。
[0032]进一步的,基础框架运行模块中,平台运行时创建一个平台进程、一个诊断进程,平台进程根据配置文件中的平台关键字创建进程管理共享内存、信号灯,创建一个SOCKET管理描述符;对于SOCKET服务场景,额外创建一个SOCKET监听描述符、一组描述符传递通道、一个空闲通道,平台进程通过SOCKET监听描述符等待客户端连接请求,通过SOCKET管理描述符等待用户操作指令或诊断进程的汇报,采用10多路复用技术同时兼顾这两个描述符,再创建一组服务进程,服务进程的数目由配置参数决定。
[0033]进一步的,诊断进程运行时,实时检测各个服务进程的运行状态,对于单个周期运行持续时间超过设定时限的服务进程,强行杀死并向平台进程汇报,由平台进程予以重启,避免服务进程的无限期挂起,确保服务行为可控;同时实时检测各个服务进程存活与否,服务进程异常终止时向平台进程汇报,由平台进程予以重启,确保整个平台持续稳定运行;对于SOCKET服务场景,同时实时监控整个平台的繁忙比率,达到设定阈值时向平台进程汇报,在线增减服务进程的数目。
[0034]进一步的,对于适合多种场景的SOCKET通信与进程管理通用方法还包括运行监视模块:启动监视界面,从平台的进程管理共享内存中提取平台全局信息,在屏幕上实时直观显示,采用定时信号驱动周期性自动刷新;
[0035]透明转发模块,对于SOCKET服务场景,在配置文件中添加透明转发参数,指定目标的IP及端口,客户端发起连接请求时,首先依然由平台进程接受,通过空闲通道转发给空闲的服务进程,服务进程接收客户端描述符,之后建立与目标的SOCKET连接,得到目标描述符,然后采用10多路复用技术(poll系统调用)同时兼顾这两个描述符;
[0036]其中任何一个描述符具备可以读取的数据时,服务进程读取数据,并发送给另外一个描述符,周而复始;服务进程收到客户端描述符之后,与客户端的后续交互不再通过平台进程,直接对话;任何一方关闭连接时,整个通信流程结束,回到初始状态。
[0037]本发明融合SOCKET通信与进程管理功能,开发人员用以快速开发部署网络通信程序,无需关心SOCKET通信与进程管理等技术细节,专注于业务逻辑的实现,提高开发效率并降低开发门槛;对于网络服务程序,可以通过配置参数指定服务进程的数目,实现处理能力的灵活扩展;采用多个进程而不是线程并发运行,开发人员无需考虑线程安全,进一步降低开发门槛;平台运行内置诊断模块,实时监控整个平台的繁忙比率,达到设定阈
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1