首页> 中国专利> 同步通信模式下SOCKET通信与进程管理通用平台及方法

同步通信模式下SOCKET通信与进程管理通用平台及方法

摘要

本发明公开了同步通信模式下SOCKET通信与进程管理通用平台及方法,创建一组进程,包括一个平台进程、一个诊断进程、一组服务进程;平台进程通过SOCKET监听描述符等待客户端连接请求,通过SOCKET管理描述符等待用户操作指令、服务进程的交易耗时数据或诊断进程的汇报,采用IO多路复用技术同时兼顾SOCKET监听描述符及SOCKET管理描述符;本发明简化SOCKET通信程序的开发,开发人员无需关心SOCKET通信与进程管理等编程技术细节,专注于业务逻辑的实现,提高开发效率并降低开发门槛。

著录项

  • 公开/公告号CN105138398A

    专利类型发明专利

  • 公开/公告日2015-12-09

    原文格式PDF

  • 申请/专利权人 山东乾云启创信息科技有限公司;

    申请/专利号CN201510642428.0

  • 申请日2015-09-30

  • 分类号G06F9/46(20060101);G06F9/50(20060101);H04L12/24(20060101);H04L29/08(20060101);

  • 代理机构37221 济南圣达知识产权代理有限公司;

  • 代理人张勇

  • 地址 250101 山东省济南市高新区新泺大街2008号银荷大厦B座1001

  • 入库时间 2023-12-18 12:45:22

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2023-08-01

    专利权质押合同登记的注销 IPC(主分类):G06F 9/46 授权公告日:20190927 申请日:20150930 专利号:ZL2015106424280 登记号:Y2022980007550 出质人:山东乾云启创信息科技股份有限公司 质权人:济南农村商业银行股份有限公司润丰支行 解除日:20230717

    专利权质押合同登记的生效、变更及注销

  • 2022-06-28

    专利权质押合同登记的生效 IPC(主分类):G06F 9/46 专利号:ZL2015106424280 登记号:Y2022980007550 登记生效日:20220610 出质人:山东乾云启创信息科技股份有限公司 质权人:济南农村商业银行股份有限公司润丰支行 发明名称:同步通信模式下SOCKET通信与进程管理通用平台及方法 申请日:20150930 授权公告日:20190927

    专利权质押合同登记的生效、变更及注销

  • 2022-06-03

    专利权质押合同登记的注销 IPC(主分类):G06F 9/46 授权公告日:20190927 申请日:20150930 专利号:ZL2015106424280 登记号:Y2021980000858 出质人:山东乾云启创信息科技股份有限公司 质权人:济南农村商业银行股份有限公司润丰支行 解除日:20220517

    专利权质押合同登记的生效、变更及注销

  • 2019-09-27

    授权

    授权

  • 2016-02-24

    著录事项变更 IPC(主分类):G06F9/46 变更前: 变更后: 申请日:20150930

    著录事项变更

  • 2016-01-06

    实质审查的生效 IPC(主分类):G06F9/46 申请日:20150930

    实质审查的生效

  • 2015-12-09

    公开

    公开

查看全部

说明书

技术领域

本发明涉及同步通信模式下SOCKET通信与进程管理通用平台及方法。

背景技术

在TCP/IP网络层次模型中,SOCKET是应用层与传输层之间的一个软件抽象层,是诸多网络通信编程技术的基础,应用广泛,具有低成本、低资源消耗、跨平台等特点而备受青睐。

但是SOCKET编程有其技术门槛,编写稳健的SOCKET通信程序需要了解其技术特点,规避特有的技术风险,融合相关的进程、内存、信号、锁等管理技术,需要一定的技术功底。

为简化SOCKET编程,提高编程效率,业界提供了一些开源的C/C++网络开发库,如ACE、Boost的ASIO、libevent。

ACE是一个大型的中间件产品,过于庞大,SOCKET通信只是其庞大功能集合中的功能之一,学习门槛很高。

ASIO是一个C++版本的异步IO库,封装了SOCKET的常用操作,依赖Boost,要求开发人员熟悉C++、Boost,支持多线程并发处理,但是需要开发人员自行创建与管理线程并考虑线程安全。

libevent是对IO多路复用技术的进一步封装,采用事件驱动的运行机制,本身不包含进程或线程的管理,另外需要开发人员自行创建并管理SOCKET描述符。

上述三个开发库都不适合简单通用的网络程序开发场景:在单位内部或外部,需要开发部署网络通信程序进行数据交换,采用自行约定的通信协议,而开发人员水平一般,不熟悉SOCKET通信机制、进程管理、信号、锁等编程技术,此时快速开发部署稳健的通信程序比较困难。

发明内容

为解决现有技术存在的不足,本发明公开了同步通信模式下SOCKET通信与进程管理通用平台及方法,融合SOCKET通信与进程管理功能,开发人员用以快速开发部署网络通信程序,无需关心SOCKET通信与进程管理等技术细节,专注于业务逻辑的实现,提高开发效率并降低开发门槛;对于网络服务程序,可以通过配置参数指定服务进程的数目,实现处理能力的灵活扩展;采用多个进程而不是线程并发运行,开发人员无需考虑线程安全,进一步降低开发门槛;平台运行内置诊断模块,实时监控整个平台的繁忙比率,达到设定阈值时在线增减服务进程的数目,实现处理能力的动态扩展;实时监控平台的运行状况,对于异常终止或僵死的服务进程自动予以重启,确保整个平台稳定持续运行;另外包含一个直观简易的运行监视界面,可以实时查看平台全局信息与服务进程的处理状态。

为实现上述目的,本发明的具体方案如下:

SOCKET通信与进程管理通用平台发布为一个静态库文件,附带一组头文件、配套资料及代码样例,提供编程接口供开发人员编程调用,支持各种类UNIX操作系统,支持C/C++开发语言。

与客户端的通信协议支持TCP、UDP,采用同步通信模式,支持长连接、短连接。

TCP(TransmissionControlProtocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议;UDP(UserDatagramProtocol,用户数据报协议),是一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。

长连接表示通信连接的持续性,通信双方在单个连接中交换多个报文;与之相对,短连接表示通信双方在单个连接中只交换一次报文,交换完毕关闭当前连接,下次交换报文时重新创建网络连接;

同步通信模式时,客户端发送请求后,同步等待服务端的应答,在此之前不会发送新的请求报文。

同步通信模式下SOCKET通信与进程管理通用方法,包括以下步骤:

平台运行时创建一组进程,包括一个平台进程、一个诊断进程、一组服务进程;

平台进程通过SOCKET监听描述符等待客户端连接请求,通过SOCKET管理描述符等待用户操作指令与服务进程的交易耗时数据以及诊断进程的汇报,采用IO多路复用技术同时兼顾SOCKET监听描述符及SOCKET管理描述符这两个描述符;

诊断进程运行时周期性检测各个服务进程的运行状态,对于单个周期运行持续时间超过设定时限的服务进程,强行杀死并向平台进程汇报,由平台进程予以重启;实时监控各个服务进程存活与否,如果服务进程异常终止则向平台进程汇报,由平台进程予以重启;同时实时监控整个平台的繁忙比率,达到设定阈值时向平台进程汇报,由平台进程在线增减服务进程。

同步通信模式下SOCKET通信与进程管理通用方法在平台运行创建进程前还包括:

编写编译程序:按照项目要求更改样例代码,编写个性化业务处理逻辑,调用编程接口注册业务逻辑回调函数,调用平台入口函数;编写完毕与开发平台提供的静态库文件联合编译,生成平台程序与运行监视程序;

程序部署:按照项目要求调整开发平台附带的样例配置文件,提供必需的配置参数,定制平台运行行为。

进一步的,服务进程的数目由配置参数决定,平台进程根据配置文件中的平台关键字创建进程管理共享内存、信号灯,创建一个SOCKET监听描述符、一个SOCKET管理描述符、一组描述符传递通道、一个空闲通道,对于UDP通信协议额外创建一个令牌通道。

进一步的,在通信平台的配置文件中添加透明转发参数,指定目标的IP及端口,客户端发起连接请求时,首先依然由平台进程接受,通过空闲通道转发给空闲的服务进程,服务进程接收客户端描述符,之后建立与目标的SOCKET连接,得到目标描述符,然后采用IO多路复用技术(poll系统调用)同时兼顾这两个描述符;

其中任何一个描述符具备可以读取的数据时,服务进程读取数据,并发送给另外一个描述符,周而复始;服务进程收到客户端描述符之后,与客户端的后续交互不再通过平台进程,而是直接对话;任何一方关闭连接时,整个通信流程结束,回到初始状态。

进一步的,同步通信模式下SOCKET通信与进程管理通用方法,还包括运行监视的步骤,运行时启动监视界面,从平台的进程管理共享内存中提取平台全局信息,在屏幕上实时直观显示,采用定时信号驱动周期性自动刷新,其中,平台全局信息包括:服务进程数目、繁忙比率,以及每个服务进程的运行信息,每个服务进程的运行信息包括:进程编号、进程ID、通信报头信息、当前状态、单个周期运行持续时间、开发人员设定的自定义信息。

进一步的,服务进程启动时在空闲通道中登记自己的进程编号,并等待读取自己专属的描述符传递通道,客户端请求到达时,由平台进程通过SOCKET监听描述符接受,从空闲通道中提取第一个服务进程编号,通过进程编号对应的描述符传递通道发送客户端描述符,对应的服务进程接收客户端描述符,处理请求的业务逻辑,之后向客户端返回应答结果,最后再次在空闲通道中登记自己的进程编号。

进一步的,用户指令要求开启统计分析功能时,平台框架分配一段局部内存,之后从服务进程接收的交易耗时数据在其中记录,用户指令要求显示统计分析结果时,平台框架从中导出所有的交易耗时数据由用户指令进一步加工显示,用户指令要求关闭统计分析功能时,平台框架释放之前分配的内存。

同步通信模式下SOCKET通信与进程管理通用平台,包括:

进程管理模块,用于创建一组进程,包括一个平台进程、一个诊断进程、一组服务进程;平台进程通过SOCKET监听描述符等待客户端连接请求,通过SOCKET管理描述符等待用户操作指令与服务进程的交易耗时数据以及诊断进程的汇报,采用IO多路复用技术同时兼顾SOCKET监听描述符及SOCKET管理描述符这两个描述符;

诊断模块,用于诊断进程运行时周期性检测各个服务进程的运行状态,对于单个周期运行持续时间超过设定时限的服务进程,强行杀死并向平台进程汇报,由平台进程予以重启;实时监控各个服务进程存活与否,如果服务进程异常终止则向平台进程汇报,由平台进程予以重启;同时实时监控整个平台的繁忙比率,达到设定阈值时向平台进程汇报,由平台进程在线增减服务进程。

上述同步通信模式下SOCKET通信与进程管理通用平台,还包括:

配置参数管理模块:平台运行依赖一个配置文件指导自己的运行行为,配置文件中包含一组配置参数,有些参数是必须的,有些参数是可选的,如果可选参数没有配置,平台将使用其缺省值,配置参数包括平台类型、平台关键字、服务进程数目、服务端口、同步异步通信模式、长连接标志、通信报头格式定义、单个报文最大长度、服务进程繁忙比率上限下限、一组日志参数、一组通信超时参数等,通信超时参数用以控制网络通信时限,避免接收或发送报文时长时间阻塞。

用户指令处理模块:通过命令行启动或停止平台,平台启动后可以查看平台运行概要信息,如:平台类型、平台关键字、服务端口、通信模式、服务进程数目、上次增减服务进程的时间、当前日志级别、诊断进程ID、已运行时间等,可以查看单个槽位中服务进程的详细信息,在线更新平台的配置参数;在SOCKET服务场景中,可以在线增减服务进程,可以在线开启关闭统计分析功能,以便跟踪交易请求在服务进程中的处理耗时,可以查看统计结果,如:交易处理最小时间、最大时间、平均时间等,并根据交易请求代码分组,维护人员可以根据耗时最长的交易处理记录进一步定位内在原因。

日志管理模块,平台中每个进程对应一组日志文件,可以根据日志级别过滤日志信息,减少磁盘空间占用,提高性能并突出重要的日志信息,日志文件可以根据日期命名,可以设定日志文件的上限尺寸,超过设定上限时,自动备份并打开一个新的日志文件,原有备份副本被覆盖,可以设定循环使用的日志文件的数目,避免持续消耗磁盘空间,实现日志文件的自我管理,无需管理员手工定期清理日志信息。

透明转发模块,用于在通信平台的配置文件中添加透明转发参数,指定目标的IP及端口,客户端发起连接请求时,首先依然由平台进程接受,通过空闲通道转发给空闲的服务进程,服务进程接收客户端描述符,之后建立与目标的SOCKET连接,得到目标描述符,然后采用IO多路复用技术(poll系统调用)同时兼顾这两个描述符;

其中任何一个描述符具备可以读取的数据时,服务进程读取数据,并发送给另外一个描述符,周而复始;服务进程收到客户端描述符之后,与客户端的后续交互不再通过平台进程,而是直接对话;任何一方关闭连接时,整个通信流程结束,回到初始状态。

进一步的,进程管理模块中服务进程的数目由配置参数决定,平台进程根据配置文件中的平台关键字创建进程管理共享内存、信号灯,创建一个SOCKET监听描述符、一个SOCKET管理描述符、一组描述符传递通道、一个空闲通道,对于UDP通信协议额外创建一个令牌通道。

进一步的,同步通信模式下SOCKET通信与进程管理通用平台,还包括运行监视模块,用于运行时启动监视界面,从平台的进程管理共享内存中提取平台全局信息,在屏幕上实时直观显示,采用定时信号驱动周期性自动刷新,其中,平台全局信息包括:服务进程数目、繁忙比率,以及每个服务进程的运行信息,每个服务进程的运行信息包括:进程编号、进程ID、通信报头信息、当前状态、单个周期运行持续时间、开发人员设定的自定义信息。

进一步的,进程管理模块中的服务进程启动时在空闲通道中登记自己的进程编号,并等待读取自己专属的描述符传递通道,客户端请求到达时,由平台进程通过SOCKET监听描述符接受,从空闲通道中提取第一个服务进程编号,通过进程编号对应的描述符传递通道发送客户端描述符,对应的服务进程接收客户端描述符,处理请求的业务逻辑,之后向客户端返回应答结果,最后再次在空闲通道中登记自己的进程编号。

进一步的,同步通信模式下SOCKET通信与进程管理通用平台,还包括统计分析模块,用于用户指令要求开启统计分析功能时,平台框架分配一段局部内存,之后从服务进程接收的交易耗时数据在其中记录,用户指令要求显示统计分析结果时,平台框架从中导出所有的交易耗时数据由用户指令进一步加工显示,用户指令要求关闭统计分析功能时,平台框架释放之前分配的内存。

本发明的有益效果:

1简化SOCKET通信程序的开发,开发人员无需关心SOCKET通信与进程管理等编程技术细节,专注于业务逻辑的实现,提高开发效率并降低开发门槛。

2平台运行支持自我诊断,自动重启异常终止或僵死的服务进程,确保整个平台持续稳定运行;在SOCKET服务场景中实时监控整个平台的繁忙比率,达到设定阈值时在线增减服务进程的数目,实现处理能力的动态扩展。

3运行时可以通过监视界面实时直观查看平台全局信息与每个服务进程的运行信息,采用定时信号驱动周期性自动刷新。

4过载保护功能,服务进程数目达到设定的最大数目并且每个服务进程都处于繁忙状态时,不再接受客户端的新的连接请求,避免整个平台或服务器因过载而异常。

5支持TCP与UDP协议;支持长连接、短连接通信模式。

6内置透明转发模块,充当代理的角色,可以将客户端的请求透明转发到指定的目标地址与端口,从客户端的角度来看,自己是直接连接目标地址与端口。

7灵活的日志管理,可以根据日志级别过滤日志信息,可以设定循环使用的日志文件的数目,避免持续消耗磁盘空间,实现日志文件的自我管理,无需管理员手工定期清理日志信息。

8通信报头的格式可灵活配置,报头字段的数据类型支持整型与字符型,开发人员可以根据字段序号读取或设置报头字段的内容,方便编程,支持定长、变长报文。

9开发人员可以在进程管理共享内存中记录交易关键信息,有效控制多个服务进程同时处理相关交易时产生的冲突。

10支持通过SOCKET端口传递文件内容,便于开发人员编程通过同一个通道传递文件;

11开发平台自身支持中英文两种语言,通过环境变量控制切换,全面切换屏幕显示与日志记录采用的语言。

附图说明

图1为开发流程示意图;

图2为同步通信模式SOCKET服务整体架构示意图;

图3为自我诊断流程图;

图4为透明转发示意图。

具体实施方式:

下面结合附图对本发明进行详细说明:

如图1所示,描述使用开发平台开发应用程序的整体流程。

开发平台发布为一个静态库文件,附带了配套资料、静态库文件、头文件、样例源代码、样例Makefile、样例配置文件,提供编程接口供开发人员编程调用,支持各种类UNIX操作系统,支持C/C++开发语言。

开发人员阅读配套资料,了解开发平台编程接口与运行机制。

结合项目需求完善修改样例源代码,编写个性化业务处理逻辑,调用编程接口注册业务逻辑回调函数,生成最终的源程序。

开发人员可以注册平台初始化逻辑、平台终止逻辑、服务进程初始化逻辑、客户端请求处理逻辑、等待客户端连接请求超时后的处理逻辑等个性化功能逻辑,进一步丰富平台功能,功能逻辑大多是可选的,开发人员按需注册,每个逻辑实现为一个独立的回调函数,注册过程相当于为平台注入了对应的扩展功能,平台运行时,在特定的运行上下文会调用开发人员事先注册的相应功能逻辑。

完善修改样例Makefile,执行make命令编译项目工程,编译源程序并连接静态库文件,生成最终的执行程序。

平台运行依赖一个配置文件指导自己的运行行为,配置文件中包含一组配置参数,完善修改样例配置文件,与执行程序一起发布运行,运行时可以通过运行监视界面实时查看整个平台的运行状态。

make是一个命令工具,它解释Makefile中的指令完成目标工程的编译,在Makefile文件中描述了整个工程所有文件的编译顺序、编译规则。

如图2所示,描述同步通信模式SOCKET服务整体架构示意图。

在同一台机器上可以同时运行多个平台,通过平台关键字区分,平台关键字唯一标识一个平台。

开发平台自身支持中英文两种语言,通过环境变量控制切换,全面切换屏幕显示与日志记录采用的语言;

平台运行依赖一个配置文件指导自己的运行行为,上述平台关键字、平台类型、通信协议、通信模式作为配置参数在配置文件中定义。

共享内存机制采用类UNIX系统内置支持的SystemV标准的sharedmemory,为协调多个进程对共享内存的同步访问,采用SystemV标准的信号灯semaphore作为加锁同步机制。

平台程序运行时,控制逻辑由开发平台接管,创建管理设施,如:进程管理共享内存、信号灯等,启用自我诊断功能,此后整个平台进入自我管理的运行状态,在特定的运行上下文会调用开发人员事先注册的相应功能逻辑,此时可以通过运行监视界面实时查看整个平台的运行状态。

平台运行时创建一组进程(一个平台进程、一个诊断进程、一组服务进程),服务进程的数目由配置参数决定,平台进程根据配置文件中的平台关键字创建进程管理共享内存、信号灯,创建一个SOCKET监听描述符、一个SOCKET管理描述符、一组描述符传递通道、一个空闲通道,对于UDP通信协议额外创建一个令牌通道,平台进程通过SOCKET监听描述符等待客户端连接请求,通过SOCKET管理描述符等待用户操作指令、服务进程的交易耗时数据或诊断进程的汇报,采用IO多路复用技术(poll系统调用)同时兼顾这两个描述符。

配置文件中包含一组配置参数,有些参数是必须的,有些参数是可选的,如果可选参数没有配置,平台将使用其缺省值,配置参数包括平台关键字、服务进程数目、服务端口、通信报头格式定义、单个报文最大长度、服务进程繁忙比率上限下限、一组日志参数、一组通信超时参数等。

一个关键的配置参数是通信报头格式定义,只有正确的定义了通信双方约定的通信格式,平台才能自动读取客户端的请求报文,通信报文由两部分组成:报头、报体,其中报头表示通信报文的元数据,报体表示具体的通信数据;报头格式定义通信报头中的字段组成,由逗号分隔的报头字段定义组成,每个报头字段定义由冒号分隔的4部分组成:标识:长度:数据类型:对齐方式;“标识”表示报头字段的含义(如:存放整个通信报文的长度),“长度”表示报头字段自身的长度占用,“数据类型”表示报头字段中携带数据的类型,支持字符型或整型,“对齐方式”表示数据的对齐与补齐方式,平台根据报头中的报文长度字段读取整个通信报文;

进程管理共享内存包含平台全局信息,如:平台类型、服务进程数目、服务端口、日志级别、服务进程繁忙比率,繁忙比率上限下限、平台进程ID、诊断进程ID、用户ID、启动时间、上次增加进程时间、同步异步通信模式标志等,以及一组管理槽位,每个服务进程占用其中一个槽位,存放服务进程的私有信息,如:进程ID、运行状态、用户ID、组ID、执行时间和执行时限信息等;

信号灯作为多个进程同时访问进程管理共享内存时的同步加锁机制,避免共享内存数据读写混乱,只有两个取值0和1(0表示加锁,1表示解锁);

描述符传递通道与空闲通道协作,用以传递客户端的连接请求描述符,描述符传递通道采用UNIX域SOCKET机制实现,空闲通道可以采用普通的管道机制实现;

服务进程启动时在空闲通道中登记自己的进程编号,并等待读取自己专属的描述符传递通道,客户端请求到达时,由平台进程通过SOCKET监听描述符接受,从空闲通道中提取第一个服务进程编号,通过进程编号对应的描述符传递通道发送客户端描述符,对应的服务进程接收客户端描述符,处理请求的业务逻辑,之后向客户端返回应答结果,最后再次在空闲通道中登记自己的进程编号;

空闲通道空时,表示每个服务进程都处于繁忙状态时,整个平台的繁忙比率达到100%,此时诊断进程会驱使平台进程增加服务进程,但是如果服务进程数目达到设定的最大数目时,将不再新增服务进程,此时不再接受客户端的新的连接请求,实现过载保护功能,避免整个平台或服务器因过载而异常;

对于UDP通信协议,令牌通道用以同步平台进程与服务进程对SOCKET监听描述符的争用,令牌通道中初始放入一个令牌,平台进程从中提取令牌,服务进程读取客户端请求报文后再次放入一个令牌,避免多个进程同时读取客户端请求报文;

由平台进程对外统一接受客户端请求,并通过描述符传递通道将客户端的请求描述符转交给空闲的服务进程,而不是多个服务进程同时抢夺客户端请求,可以避免某些版本的类UNIX系统中的惊群效应,所谓惊群效应指多个进程同时等待同一个描述符的事件,当描述符的事件触发时,所有等待这个事件的进程都被唤醒,但是只有一个进程能成功处理这个事件,其他进程都会失败,由此导致无谓的进程调度,降低系统性能;

对于UDP通信协议,平台进程并不接受客户端连接,因为UDP协议是无连接的,平台进程只是探测客户端的请求到达,通过描述符传递通道向空闲的服务进程发送一个通知,由具体的服务进程负责接收客户端请求报文。

用户操作指令通过命令行启动或停止平台,在线控制平台行为;平台运行时查看运行概要信息,如:平台类型、平台关键字、服务端口、通信模式、服务进程数目、上次增减服务进程的时间、当前日志级别、诊断进程ID、已运行时间等,查看单个槽位中服务进程的详细信息,在线更新平台的配置参数,在线增减服务进程,在线开启关闭交易统计分析功能,以便跟踪交易请求在服务进程中的处理耗时,查看交易统计分析结果,如:交易处理最小时间、最大时间、平均时间等,并根据交易请求代码分组,维护人员可以根据耗时最长的交易处理记录进一步定位内在原因;

其中,在线增减服务进程及交易统计分析相关功能需要平台进程的协助,向平台进程发送相应的指令,由平台进程执行请求的操作;

用户指令要求开启统计分析功能时,平台框架分配一段局部内存,之后从服务进程接收的交易耗时数据在其中记录,用户指令要求显示统计分析结果时,平台框架从中导出所有的交易耗时数据由用户指令进一步加工显示,用户指令要求关闭统计分析功能时,平台框架释放之前分配的内存;

诊断进程运行时周期性检测各个服务进程的运行状态,对于单个周期运行持续时间超过设定时限的服务进程,强行杀死并向平台进程汇报,由平台进程予以重启,避免服务进程的无限期挂起,确保服务行为可控;实时监控各个服务进程存活与否,如果服务进程异常终止则向平台进程汇报,由平台进程予以重启,确保整个平台持续稳定运行;同时实时监控整个平台的繁忙比率,达到设定阈值时向平台进程汇报,在线增减服务进程的数目,实现处理能力的动态扩展;

运行监视程序运行时启动监视界面,从平台的进程管理共享内存中提取平台全局信息,如服务进程数目、繁忙比率,以及每个服务进程的运行信息,如:进程编号、进程ID、通信报头信息、当前状态、单个周期运行持续时间、开发人员设定的自定义信息等,在屏幕上实时直观显示,采用定时信号驱动周期性自动刷新。

如图3所示,自我诊断模块运行时读取命令行指定的配置文件,获取管理参数(如平台关键字、睡眠间隔等),之后后台常驻执行,连接进程管理共享内存,从中提取服务进程运行信息,周期性检测各个进程的运行状态;自我诊断模块的表现形式就是诊断进程。

为避免自我诊断模块重复启动造成的混乱,程序启动后在一个文件(通常放置在/var/run目录下)中记录当前进程的进程ID,并对文件本身加锁,重复启动的自我诊断模块再次对同一个文件加锁时,因失败退出,自我诊断模块退出(无论正常或异常退出)时,文件锁自动释放;

进程管理共享内存中记录着服务进程的进程ID,自我诊断模块据以判断进程存活与否,如果服务进程异常终止,则通知平台进程对其重新启动,确保整个平台持续稳定运行;

进程管理共享内存中记录着服务进程的单个周期运行开始时间、执行时限信息,自我诊断模块据以计算服务进程的单个周期运行持续时间,对于超过设定时限的进程,强行杀死,并通知平台进程对其重新启动,避免进程的无限期挂起,确保服务行为可控;

在SOCKET服务场景中,自我诊断模块实时监控整个平台的繁忙比率,达到设定阈值时向平台进程汇报,在线增减服务进程的数目,实现处理能力的动态扩展。

如图4所示,透明转发平台以SOCKET服务同步通信模式运行,为了突出与客户端及目标之间的协作关系,图中简化了通信平台自身的一些细节。

在通信平台的配置文件中添加透明转发参数,指定目标的IP及端口,客户端发起连接请求时,首先依然由平台进程接受,通过空闲通道转发给空闲的服务进程,服务进程接收客户端描述符,之后建立与目标的SOCKET连接,得到目标描述符,然后采用IO多路复用技术(poll系统调用)同时兼顾这两个描述符;

其中任何一个描述符具备可以读取的数据时,服务进程读取数据,并发送给另外一个描述符,周而复始。

服务进程收到客户端描述符之后,与客户端的后续交互不再通过平台进程,而是直接对话。

任何一方关闭连接时,整个通信流程结束,回到初始状态。

上述虽然结合附图对本发明的具体实施方式进行了描述,但并非对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号