异步通信模式下socket通信与进程管理通用平台及方法_3

文档序号:9600917阅读:来源:国知局
的运行状态;
[0069]make是一个命令工具,它解释Makefile中的指令完成目标工程的编译,在Makefile文件中描述了整个工程所有文件的编译顺序、编译规则。
[0070]如图2所示,描述异步通信模式整体架构。
[0071]在异步通信模式场景中,完整功能的实现包含两个平台:一个异步通信平台、一个业务处理平台;异步通信平台接收客户端请求消息,放入消息队列,由业务处理平台从中提取并处理,应答结果再次通过异步通信平台返回客户端;一个通信进程可以搭配一组处理进程,通信进程专职通信,处理进程专职业务逻辑处理,两者通过消息队列与UNIX域SOCKET通信机制交换数据,灵活扩展处理能力,提升交易吞吐量。
[0072]异步通信平台运行时创建一组进程,包括一个平台进程、一个诊断进程、一组服务进程;平台进程通过SOCKET监听描述符等待客户端连接请求,通过SOCKET管理描述符等待用户操作指令与服务进程的交易耗时数据以及诊断进程的汇报,采用10多路复用技术同时兼顾这SOCKET监听描述符及SOCKET管理描述符这两个描述符;
[0073]两个平台中的诊断进程运行时周期性检测各自平台中各个服务进程的运行状态,对于单个周期运行持续时间超过设定时限的服务进程,强行杀死并向平台进程汇报,由平台进程予以重启;实时监控各个服务进程存活与否,如果服务进程异常终止则向平台进程汇报,由平台进程予以重启;在异步通信平台中同时实时监控整个平台的繁忙比率,达到设定阈值时向平台进程汇报,由平台进程在线增减服务进程;
[0074]异步通信平台中服务进程的数目由配置参数决定,平台进程根据配置文件中的平台关键字创建进程管理共享内存、信号灯、消息队列,创建一个SOCKET监听描述符、一个SOCKET管理描述符、一组描述符传递通道、一个空闲通道,对于UDP通信协议额外创建一个令牌通道,描述符传递通道与空闲通道用以传递客户端的连接请求描述符;
[0075]异步通信平台中,服务进程启动时在空闲通道中登记自己的进程编号,并等待读取自己专属的描述符传递通道,客户端请求到达时,由平台进程通过SOCKET监听描述符接受,从空闲通道中提取第一个服务进程编号,通过进程编号对应的描述符传递通道发送客户端描述符,对应的服务进程接收客户端描述符,处理请求的业务逻辑,之后向客户端返回应答结果,最后再次在空闲通道中登记自己的进程编号。
[0076]异步通信平台中,用户指令要求开启统计分析功能时,平台框架分配一段局部内存,之后从服务进程接收的交易耗时数据在其中记录,用户指令要求显示统计分析结果时,平台框架从中导出所有的交易耗时数据由用户指令进一步加工显示,用户指令要求关闭统计分析功能时,平台框架释放之前分配的内存。
[0077]业务处理平台运行时创建一个平台进程及一个诊断进程,平台进程根据配置文件中的平台关键字创建进程管理共享内存、信号灯、一个空闲通道、一组数据传输通道,创建一个SOCKET管理描述符,等待用户操作指令或诊断进程的汇报,之后通过用户操作指令手工增加一个分发进程以及一组处理进程;
[0078]运行监视时启动监视界面,两个平台分别监视,启动自己的监视界面,从平台各自的进程管理共享内存中提取平台全局信息与每个服务进程的运行信息,在屏幕上实时直观显示,实时查看平台全局信息与服务程序的运行状态,采用定时信号驱动周期性自动刷新。
[0079]在同一台机器上可以同时运行多个平台,通过平台关键字区分,平台关键字唯一标识一个平台;
[0080]开发平台自身支持中英文两种语言,通过环境变量控制切换,全面切换屏幕显示与日志记录采用的语言;
[0081]两个平台中的共享内存机制采用类UNIX系统内置支持的System V标准的sharedmemory,为协调多个进程对共享内存的同步访问,采用System V标准的信号灯semaphore作为加锁同步机制,异步通信队列采用System V标准的消息队列,支持消息优先级。
[0082]两个平台各自的进程管理共享内存中包含平台全局信息,如:平台类型、服务进程数目、服务进程繁忙比率、平台进程ID、诊断进程ID等,以及一组管理槽位,每个服务进程占用其中一个槽位,存放服务进程的私有信息,包括:进程ID、运行状态、用户ID、组ID、执行时间、执行时限等。
[0083]两个平台中的信号灯作为各自平台中多个进程同时访问进程管理共享内存时的同步加锁机制,避免共享内存数据读写混乱,只有两个取值0和1 (0表示加锁,1表示解锁);
[0084]两个平台中,平台进程启动子进程的过程中,平台进程与子进程之间使用了一个临时的同步管道,子进程启动后等待同步管道中的通知,平台进程完成进程管理共享内存中相应槽位的数据维护之后,通过同步管道向子进程发送一个通知,然后子进程才得以继续运行。
[0085]在异步通信平台中,客户端请求到达之后由平台进程接受,得到客户端连接描述符,通过描述符传递通道发送给空闲的通信进程,通信进程创建一个UNIX域的监听SOCKET,作为与处理平台中的处理进程交互的通道,之后通信进程通过10多路复用技术(poll系统调用)同时兼顾客户端描述符、UNIX域监听SOCKET:客户端发送请求数据时,通信进程接收,绑定自己的进程序号后写入请求队列;处理进程读取客户端请求消息,处理业务逻辑,根据消息绑定的通信进程序号连接对应的通信进程的UNIX域监听SOCKET并发送应答结果,通信进程接受处理进程连接请求,得到处理进程连接描述符,之后通信进程的10多路复用操作将兼顾这个新的处理进程连接描述符,从中读取处理进程应答结果并转发给客户端;
[0086]异步通信平台中由平台进程对外统一接受客户端请求,并通过描述符传递通道将客户端的请求描述符转交给空闲的服务进程,而不是多个服务进程同时抢夺客户端请求,可以避免某些版本的类UNIX系统中的惊群效应,所谓惊群效应指多个进程同时等待同一个描述符的事件,当描述符的事件触发时,所有等待这个事件的进程都被唤醒,但是只有一个进程能成功处理这个事件,其他进程都会失败,由此导致无谓的进程调度,降低系统性會κ ;
[0087]对于UDP通信协议,平台进程并不接受客户端连接,因为UDP协议是无连接的,平台进程只是探测客户端的请求到达,通过描述符传递通道向空闲的服务进程发送一个通知,由具体的服务进程负责接收客户端请求报文。
[0088]在业务处理平台内部,采用了与异步通信平台类似的分发逻辑,避免多个处理进程同时抢夺客户端请求队列,可以避免某些版本的类UNIX系统中的惊群效应;平台启动时创建一个空闲通道与一组数据传输通道,再采用插件程序的方式运行一个分发进程与一组处理进程,处理进程启动时在空闲通道中登记自己的进程编号,并等待读取自己专属的数据传输通道,分发进程从请求队列中提取客户端请求,从空闲通道中提取第一个空闲的处理进程编号,通过进程编号对应的数据通道发送客户端的请求数据,对应的处理进程接收并处理请求的业务逻辑,之后向请求数据对应的通信进程发送应答结果,最后再次在空闲通道中登记自己的进程编号;
[0089]随着处理平台中处理进程的增多,通信进程的10多路复用操作将兼顾更多的描述符,通信平台中每个通信进程都有机会收到所有处理进程的连接请求,因为通信进程接收并写入请求队列的客户端请求可能被任何一个处理进程处理;
[0090]异步通信模式时,允许客户端批量发送一批请求,在上一个请求处理完成之前,客户端可以发送新的请求,从而提升交易请求吞吐量,服务端的应答返回时客户端根据应答结果中的消息标识关联自己的请求消息,辨识应答结果的归属;与之相对,同步通信模式时,客户端发送请求后,同步等待服务端的应答,在此之前不会发送新的请求报文。
[0091]完整的数据流程包含:
[0092]1、客户端发起连接请求;
[0093]2、通信平台中的平台进程接受连接请求,得到客户端连接描述符,通过事先创建的描述符传递通道传递给某个空闲的通信进程,关闭与客户端的连接;
[0094]3、通信进程接管与客户端的连接,读取客户端请求消息,绑定自己的进程序号后,放入请求队列;
[0095]4、处理平台中的分发进程从请求队列中读取请求,通过事先创建的数据传输通道分发给某个空闲的处理进程;
[0096]5、处理进程处理完成之后,连接请求消息中的进程序号对应的通信进程,并发送应答结果;
[0097]6、通信进程转发应答结果给客户端
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1