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

文档序号:9600910阅读:来源:国知局
位,存放服务进程的私有信息,如:进程ID、运行状态、用户ID、组ID、执行时间和执行时限信息等;
[0083]信号灯作为多个进程同时访问进程管理共享内存时的同步加锁机制,避免共享内存数据读写混乱,只有两个取值0和1(0表示加锁,1表示解锁);描述符传递通道与空闲通道用以传递客户端的连接请求描述符。
[0084]步骤⑷中具体诊断步骤为:
[0085]步骤(a-Ι):诊断进程读取配置文件,对文件加锁,并记录诊断进程ID ;
[0086]步骤(a-2):判断加锁是否失败,失败则结束,否则进入步骤(a-3);
[0087]步骤(a-3):连接进程管理共享内存;
[0088]步骤(a-4):判断所有服务进程是否检查完毕,是则进入步骤(a-8);否则对信号灯加锁并读取下一个服务进程的相关信息,解锁信号灯,进入步骤(a_5);
[0089]步骤(a-5):判断服务进程是否异常终止,是则通知平台进程对其重新启动,进入步骤(a-4);否则进入步骤(a-6);
[0090]步骤(a-6):获取当前时间,计算服务进程运行的持续时间,进入步骤(a-7);
[0091]步骤(a-7):判断持续时间是否超过设定时限,是则强行杀死服务进程并通知平台进程对其重新启动;进入步骤(a-4);
[0092]步骤(a-8):计算服务进程繁忙比率,判断繁忙比率是否超过设定的上限,是则通知平台进程增加服务进程,进入步骤(a-10);否则进入步骤(a-9);
[0093]步骤(a-9):判断繁忙比率是否小于设定的下限,并且当前服务进程数目大于配置文件中指定的服务进程数目,并且上次增加服务进程的时间在设定的间隔时间之前,是则通知平台进程减少服务进程;进入步骤(a-10);
[0094]步骤(a-10):断开与进程管理共享内存的连接,睡眠一个周期后返回步骤(a-3)。
[0095]步骤(5)中:由平台进程对外统一接受客户端请求,并通过描述符传递通道将客户端的请求描述符转交给空闲的服务进程,而不是多个服务进程同时抢夺客户端请求,可以避免某些版本的类UNIX系统中的惊群效应,所谓惊群效应指多个进程同时等待同一个描述符的事件,当描述符的事件触发时,所有等待这个事件的进程都被唤醒,但是只有一个进程能成功处理这个事件,其他进程都会失败,由此导致无谓的进程调度,降低系统性能;
[0096]对于UDP通信协议,平台进程并不接受客户端连接,因为UDP协议是无连接的,平台进程只是探测客户端的请求到达,通过描述符传递通道向空闲的服务进程发送一个通知,由具体的服务进程负责接收客户端请求报文。
[0097]对于常驻进程管理场景,操作步骤与典型的SOCKET服务场景类似,包括如下步骤:
[0098]步骤(1):开发人员编写编译程序:开发人员编写业务逻辑,与开发平台提供的静态库文件联合编译,生成平台程序与一组插件程序;
[0099]步骤(2):程序部署:按照项目要求调整开发平台附带的样例配置文件,提供必需的配置参数,在配置文件中指定平台类型为常驻进程管理平台;
[0100]步骤(3):基础框架运行:平台运行时创建一个平台进程、一个诊断进程,平台进程根据配置文件中的平台关键字创建进程管理共享内存、信号灯,创建一个SOCKET管理描述符,等待用户操作指令或诊断进程的汇报;
[0101]步骤(4):诊断进程运行:与平台进程配合,自动重启异常终止或僵死的插件进程,确保整个平台持续稳定运行;
[0102]步骤(5):业务逻辑处理:业务逻辑由插件程序承载,平台运行后可以通过用户指令依次启动多个插件程序,采用唯一的进程编号区分,插件程序独立于平台进程自主运行;
[0103]步骤¢):运行监视(可选):启动监视界面,采用定时信号驱动周期性自动刷新。
[0104]步骤(4)中,诊断进程不再监控平台的繁忙比率。
[0105]适合多种场景的SOCKET通信与进程管理通用平台发布为一个静态库,附带一组头文件、配套资料及代码样例,开发人员可以用来快速开发部署网络通信程序,平台内置功能包括:
[0106]配置参数管理模块:平台运行依赖一个配置文件指导自己的运行行为,配置文件中包含一组配置参数,有些参数是必须的,有些参数是可选的,如果可选参数没有配置,平台将使用其缺省值,配置参数包括平台类型(用以区分SOCKET服务场景与常驻进程管理场景)、平台关键字、服务进程数目、服务端口、同步异步通信模式、长连接标志、通信报头格式定义、单个报文最大长度、服务进程繁忙比率上限下限、一组日志参数、一组通信超时参数等,通信超时参数用以控制网络通信时限,避免接收或发送报文时长时间阻塞;
[0107]用户指令处理模块:通过命令行启动或停止平台,平台启动后可以查看平台运行概要信息,如:平台类型、平台关键字、服务端口、通信模式、服务进程数目、上次增减服务进程的时间、当前日志级别、诊断进程ID、已运行时间等,可以查看单个槽位中服务进程的详细信息,在线更新平台的配置参数;在SOCKET服务场景中,可以在线增减服务进程,可以在线开启关闭统计分析功能,以便跟踪交易请求在服务进程中的处理耗时,可以查看统计结果,如:交易处理最小时间、最大时间、平均时间等,并根据交易请求代码分组,维护人员可以根据耗时最长的交易处理记录进一步定位内在原因;对于常驻进程管理平台,可以根据进程编号单独启动或停止一个插件进程;
[0108]基础框架模块:平台运行时创建一个平台进程、一个诊断进程,平台进程根据配置文件中指定的平台关键字创建进程管理共享内存、信号灯、消息队列,创建一个SOCKET管理描述符,等待用户操作指令、服务进程的交易耗时数据或诊断进程的通知,根据诊断进程的通知重新启动异常终止的服务进程,确保整个平台持续稳定运行;在常驻进程管理场景中,接收用户操作指令运行插件程序承载业务逻辑,每个插件程序可以彼此不同,可以由不同的用户执行,可以单独启动或停止,在单个平台中集中管理多个用户的后台散乱任务;在SOCKET服务场景中,平台进程还创建一组服务进程处理具体的业务逻辑,其数目由配置参数决定,创建一个SOCKET监听描述符、一组描述符传递通道、一个空闲通道,对于UDP通信协议额外创建一个令牌通道,采用10多路复用技术(poll系统调用)同时兼顾SOCKET管理描述符与SOCKET监听描述符:对于客户端的连接请求,接受并通过描述符传递通道将客户端的请求描述符转交给空闲的服务进程;根据用户指令在线增减服务进程或开启统计分析功能;接收并记录服务进程的交易耗时数据,前提是开启了统计分析功能;
[0109]诊断模块:实时监控各个服务进程的运行状态,对于单个周期运行持续时间超过设定时限的服务进程,强行杀死并向平台进程汇报,由平台进程予以重启,避免服务进程的无限期挂起,确保服务行为可控;同时实时监控各个服务进程存活与否,如果服务进程异常终止则向平台进程汇报,由平台进程予以重启,确保整个平台持续稳定运行;对于SOCKET服务场景同时实时监控整个平台的繁忙比率,达到设定阈值时向平台进程汇报,在线增减服务进程的数目,实现处理能力的动态扩展。
[0110]运行监视模块:启动监视界面,从平台的进程管理共享内存中提取平台全局信息,如服务进程数目、繁忙比率,以及每个服务进程的运行信息,如:进程编号、进程ID、通信报头信息、当前状态、单个周期运行持续时间、开发人员设定的自定义信息等,在屏幕上实时直观显示,采用定时信号驱动周期性自动刷新,内容较多时,分屏显示,通过按键上下翻屏;
[0111]日志管理模块:平台中每个进程对应一组日志文件,可以根据日志级别过滤日志信息,减少磁盘空间占用,提高性能并突出重要的日志信息,日志文件可以根据日期命名,可以设定日志文件的上限尺寸,超过设定上限时,自动备份并打开一个新的日志文件,原有备份副本被覆盖,可以设定循环使用的日志文件的数目,避免持续消耗磁盘空间,实现日志文件的自我管理,无需管理员手工定期清理日志信息。
[0112]配置参数管理模块中,对于SOCKET服务场景,一个关键的配置参数是通信报头格式定义,只有正确的定义了通信双方约定的通信格式,平台才能自动读取客户端的请求报文,通信报文由两部分组成:报头、报体,其中报头表示通信报文的元数据,报体表示具体的通信数据;报头格式定义通信报头中的字段组成,由逗号分隔的报头字段定义组成,每个报头字段定义由冒号分隔的4部分组成:标识:长度:数据类型:对齐方式;“标识”表示报头字段的含义(如:存放整个通信报文的长度),“长度”表示报头字段自身的长度占用,“数据类型”表示报头字段中携带数据的类型,支持字符型或整型,“对齐方式”表示数据的对齐与补齐方式,平台根据报头中的报文长度字段读取整个通信报文;
[0113]用户指令处理模块中,对于SOCKET服务场景,在线增减服务进程及统计分析相关功能需要平台框架的协助,对于常驻进程管理场景,根据进程编号单独启动一个服务进程需要平台框架的协助;向平台进程发送相应的指令,由平台进程执行请求的操作。
[0114]基础框架模块中:进程管理共享内存包含平台全局信息,如:平台类型、服务进程数目、服务端口、日志级别、服务进程繁忙比率,繁忙比率上限下限、平台进程ID、诊断进程ID、用户ID、启动时间、上次增加进程时间、同步异步通信模式标志等,以及一组管理槽位,每个服务进程占用其中一个槽位,存放服务进程的私有信息,如:进程ID、运行状态、用户ID、组ID、执行时间和执行时限信息等,对于常驻进程管理场景,还包含进程编号、插件程序名称等;
[0115]对于UDP通信协议,令牌通道用以同步平台进程与服务进程对SOCKET监听描述符的争用,令牌通道中初始放入一个令牌,平台进程从中提取令牌,服务进程读取客户端请求报文后再次放入一个令牌,避免多个进程同时读取客户端请求报文;
[0116]平台以异步通信模式运行时所述消息队列作为客户端请求消息的缓存,完整功能的实现需要一个额外的业务处理平台的协助,异步通信平台接收客户端请求消息,放入消息队列,由业务处理平台从中提取并处理,应答结果再次通过异步通信平台返回客户端;一个通信进程可以搭配一组处理进程,通信进程专职通信,处理进程专职业务逻辑处理,两者通过消息队列交换数据,灵活扩展处理能力,提升交易吞吐量。
[0117]用户指令要求开启统计分析功能时,平台框架分配一段局部内存,之后从服务进程接收的交易耗时数据在其中记录,用户指令要求显示统计分析结果时,平台框架从中导出所有的交易耗时数据由用户指令进一步加工显示,用户指令要求关闭统计分析功能时,平台框架释放之前分配的内存;
[0118]对于单纯的常驻进程管理场景,在平台框架中集中管理多个用户的后台散乱任务,每个进程可以以不同的用户身份执行,充分利用操作系统的用户管理功能实现权限隔离,用户
当前第3页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1