CN105357273B - 异步通信模式下socket通信与进程管理通用平台及方法 - Google Patents

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

Info

Publication number
CN105357273B
CN105357273B CN201510644319.2A CN201510644319A CN105357273B CN 105357273 B CN105357273 B CN 105357273B CN 201510644319 A CN201510644319 A CN 201510644319A CN 105357273 B CN105357273 B CN 105357273B
Authority
CN
China
Prior art keywords
platform
communication
client
request
socket
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201510644319.2A
Other languages
English (en)
Other versions
CN105357273A (zh
Inventor
刘春�
李峰
牛文强
张从国
张辉
程栋
王进
车帅
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shandong Qianyun Qichuang Information Technology Co Ltd
Original Assignee
Shandong Qianyun Qichuang Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shandong Qianyun Qichuang Information Technology Co Ltd filed Critical Shandong Qianyun Qichuang Information Technology Co Ltd
Priority to CN201510644319.2A priority Critical patent/CN105357273B/zh
Publication of CN105357273A publication Critical patent/CN105357273A/zh
Application granted granted Critical
Publication of CN105357273B publication Critical patent/CN105357273B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • H04L41/069Management of faults, events, alarms or notifications using logs of notifications; Post-processing of notifications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/30Profiles

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明公开了异步通信模式下SOCKET通信与进程管理通用平台及方法,简化SOCKET通信程序的开发,开发人员无需关心SOCKET通信与进程管理等编程技术细节,专注于业务逻辑的实现,提高开发效率并降低开发门槛。完整功能的实现包含两个平台:一个异步通信平台、一个业务处理平台,两者通过消息队列与UNIX域SOCKET通信机制交换数据,灵活扩展处理能力,提升交易吞吐量。通信平台中的平台进程接受连接请求,得到连接描述符,通过创建的描述符传递通道传递给通信进程,关闭连接;通信进程接管连接,读取请求消息,绑定进程序号后,放入请求队列;处理平台中的分发进程读取请求,通过创建的数据传输通道分发给处理进程;处理进程处理完成之后,连接通信进程,并发送应答结果。

Description

异步通信模式下SOCKET通信与进程管理通用平台及方法
技术领域
本发明涉及异步通信模式下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(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议;UDP(User Datagram Protocol,用户数据报协议),是一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。
异步通信模式时,允许客户端批量发送一批请求,在上一个请求处理完成之前,客户端可以发送新的请求,从而提升交易请求吞吐量,服务端的应答返回时客户端根据应答结果中的消息标识关联自己的请求消息,辨识应答结果的归属;
异步通信模式下SOCKET通信与进程管理通用方法,包括以下步骤:
异步通信模式场景中,完整功能的实现包含两个平台:一个异步通信平台、一个业务处理平台,两者通过消息队列与UNIX域SOCKET通信机制交换数据,灵活扩展处理能力,提升交易吞吐量;
平台运行前需要编码实现业务逻辑,编译生成最终的执行程序并部署。两个平台需要分别编写编译,分别部署,协作完成客户端请求处理;
通信平台运行时创建一个平台进程、一个诊断进程、一组通信进程,通信进程的数目由配置参数决定,平台进程根据配置文件中的平台关键字创建进程管理共享内存、信号灯,创建一个SOCKET监听描述符、一个SOCKET管理描述符、一组描述符传递通道、一个空闲通道,对于UDP通信协议额外创建一个令牌通道;
业务处理平台运行时创建一个平台进程、一个诊断进程、一个分发进程、一组处理进程,平台进程根据配置文件中的平台关键字创建进程管理共享内存、信号灯,创建一个SOCKET管理描述符;
异步通信平台与业务处理平台运行就绪之后,等待客户端连接请求;
客户端发起连接请求时,由通信平台中的平台进程接受连接请求,得到客户端连接描述符,通过事先创建的描述符传递通道传递给某个空闲的通信进程,平台进程关闭与客户端的连接;
通信进程接管与客户端的连接,读取客户端请求消息,绑定自己的进程序号后,放入请求队列;
处理平台中的分发进程从请求队列中读取请求,分发给某个空闲的处理进程,处理进程处理完成之后,连接请求消息中的进程序号对应的通信进程,并发送应答结果;
通信平台中的通信进程转发应答结果给客户端,从而应答结果由接收该请求消息的通信进程返回。
进一步的,两个平台各自的进程管理共享内存中包含平台全局信息,如:平台类型、服务进程数目、服务进程繁忙比率、平台进程ID、诊断进程ID等,以及一组管理槽位,每个服务进程占用其中一个槽位,存放服务进程的私有信息,包括:进程ID、运行状态、用户ID、组ID、执行时间、执行时限等。
进一步的,一个通信进程可以搭配一组处理进程,通信进程专职通信,处理进程专职业务逻辑处理,两者通过消息队列与UNIX域SOCKET通信机制交换数据。
进一步的,通信平台以SOCKET服务模式运行,处理平台以常驻进程管理模式运行。SOCKET服务模式作为SOCKET服务与客户端通信,通过配置参数指定服务进程的数目,实现处理能力的灵活扩展,具有自我诊断与实时运行监视功能;常驻进程管理模式中,业务逻辑封装为独立的插件程序在平台上运行,每个插件程序可以彼此不同,可以由不同的用户执行,可以单独启动或停止,在单个平台中集中管理多个用户的后台散乱任务,同样具有自我诊断与实时运行监视功能。
进一步的,在通信平台中,客户端请求到达之后由平台进程接受,得到客户端连接描述符,通过描述符传递通道发送给空闲的通信进程,通信进程创建一个UNIX域的监听SOCKET,作为与处理平台中的处理进程交互的通道,之后通信进程通过IO多路复用技术同时兼顾客户端描述符、UNIX域监听SOCKET。
进一步的,在处理平台中,处理进程读取客户端请求消息,处理业务逻辑,根据消息绑定的通信进程序号连接对应的通信进程的UNIX域监听SOCKET并发送应答结果,通信进程接受处理进程连接请求,得到处理进程连接描述符,之后通信进程的IO多路复用操作将兼顾这个新的处理进程连接描述符,从中读取处理进程应答结果并转发给客户端。
进一步的,在处理平台内部,采用分发逻辑,平台启动时创建一个空闲通道与一组数据传输通道,再采用插件程序的方式运行一个分发进程与一组处理进程,处理进程启动时在空闲通道中登记自己的进程编号,并等待读取自己专属的数据传输通道,分发进程从请求队列中提取客户端请求,从空闲通道中提取第一个空闲的处理进程编号,通过进程编号对应的数据通道发送客户端的请求数据,对应的处理进程接收并处理请求的业务逻辑,之后向请求数据对应的通信进程发送应答结果,最后再次在空闲通道中登记自己的进程编号。
异步通信模式下SOCKET通信与进程管理通用平台,包括:
一个异步通信平台及一个业务处理平台,两者协作完成客户端请求的处理;
异步通信平台负责与客户端及处理平台交互;通信平台中的平台进程接受客户端的连接请求,得到客户端连接描述符,通过事先创建的描述符传递通道传递给某个空闲的通信进程,平台进程关闭与客户端的连接;之后通信进程接管与客户端的连接,读取客户端请求消息,绑定自己的进程序号后,放入请求队列,并等待处理平台完成业务逻辑处理之后的应答结果,以便转发给请求的客户端;
业务处理平台负责业务逻辑的处理,与通信平台直接交互。处理平台中的分发进程从请求队列中读取请求,通过事先创建的数据传输通道分发给某个空闲的处理进程;处理进程处理完成之后,连接请求消息中的进程序号对应的通信进程,并发送应答结果;
进一步的,通信平台中的一个通信进程可以搭配处理平台中的一组处理进程,通信进程专职通信,处理进程专职业务逻辑处理,两者通过消息队列与UNIX域SOCKET通信机制交换数据。
进一步的,在通信平台中,客户端请求到达之后由平台进程接受,得到客户端连接描述符,通过描述符传递通道发送给空闲的通信进程,通信进程创建一个UNIX域的监听SOCKET,作为与处理平台中的处理进程交互的通道,之后通信进程通过IO多路复用技术同时兼顾客户端描述符、UNIX域监听SOCKET。
进一步的,在处理平台中,处理进程读取客户端请求消息,处理业务逻辑,根据消息绑定的通信进程序号连接对应的通信进程的UNIX域监听SOCKET并发送应答结果,通信进程接受处理进程连接请求,得到处理进程连接描述符,之后通信进程的IO多路复用操作将兼顾这个新的处理进程连接描述符,从中读取处理进程应答结果并转发给客户端。
进一步的,在处理平台内部,采用分发逻辑,平台启动时创建一个空闲通道与一组数据传输通道,再采用插件程序的方式运行一个分发进程与一组处理进程,处理进程启动时在空闲通道中登记自己的进程编号,并等待读取自己专属的数据传输通道,分发进程从请求队列中提取客户端请求,从空闲通道中提取第一个空闲的处理进程编号,通过进程编号对应的数据通道发送客户端的请求数据,对应的处理进程接收并处理请求的业务逻辑,之后向请求数据对应的通信进程发送应答结果,最后再次在空闲通道中登记自己的进程编号。
异步通信平台及业务处理平台均包括:
配置参数管理模块:平台运行依赖一个配置文件指导自己的运行行为,配置文件中包含一组配置参数,有些参数是必须的,有些参数是可选的,如果可选参数没有配置,平台将使用其缺省值,配置参数包括平台类型、平台关键字、服务进程数目、服务端口、同步异步通信模式、长连接标志、通信报头格式定义、单个报文最大长度、服务进程繁忙比率上限下限、一组日志参数、一组通信超时参数等,通信超时参数用以控制网络通信时限,避免接收或发送报文时长时间阻塞。
用户指令处理模块:通过命令行启动或停止平台,平台启动后可以查看平台运行概要信息,如:平台类型、平台关键字、服务端口、通信模式、服务进程数目、上次增减服务进程的时间、当前日志级别、诊断进程ID、已运行时间等,可以查看单个槽位中服务进程的详细信息,在线更新平台的配置参数;在异步通信平台中,可以在线增减服务进程,可以在线开启关闭统计分析功能,以便跟踪交易请求在服务进程中的处理耗时,可以查看统计结果,如:交易处理最小时间、最大时间、平均时间等,并根据交易请求代码分组,维护人员可以根据耗时最长的交易处理记录进一步定位内在原因;对于业务处理平台,可以根据进程编号单独启动或停止一个插件进程。
日志管理模块:平台中每个进程对应一组日志文件,可以根据日志级别过滤日志信息,减少磁盘空间占用,提高性能并突出重要的日志信息,日志文件可以根据日期命名,可以设定日志文件的上限尺寸,超过设定上限时,自动备份并打开一个新的日志文件,原有备份副本被覆盖,可以设定循环使用的日志文件的数目,避免持续消耗磁盘空间,实现日志文件的自我管理,无需管理员手工定期清理日志信息。
进程管理模块:用于创建一个平台进程、一个诊断进程、一组服务进程;平台进程创建SOCKET通信机制,并根据配置文件中的平台关键字创建基础管理设施,如:进程管理共享内存、信号灯,创建一个SOCKET管理描述符,等待用户操作指令或诊断进程的汇报;服务进程负责具体的通信与业务逻辑处理;
诊断模块:用于将诊断进程与平台进程配合,自动重启异常终止或僵死的插件进程,确保整个平台持续稳定运行;
运行监视模块:用于运行监视时启动监视界面,实时查看平台全局信息与插件程序的运行状态,采用定时信号驱动周期性自动刷新。
本发明的有益效果:
1简化SOCKET通信程序的开发,开发人员无需关心SOCKET通信与进程管理等编程技术细节,专注于业务逻辑的实现,提高开发效率并降低开发门槛。
2支持TCP与UDP协议;支持异步通信模式,异步通信模式下,一个通信进程可以搭配一组处理进程,通信进程专职通信,处理进程专职业务逻辑处理,两者通过消息队列与UNIX域SOCKET通信机制交换数据,灵活扩展处理能力,提升交易吞吐量。
3平台运行支持自我诊断,自动重启异常终止或僵死的服务进程,确保整个平台持续稳定运行;在SOCKET服务场景中实时监控整个平台的繁忙比率,达到设定阈值时在线增减服务进程的数目,实现处理能力的动态扩展。
4运行时可以通过监视界面实时直观查看平台全局信息与每个服务进程的运行信息,采用定时信号驱动周期性自动刷新。
5过载保护功能,服务进程数目达到设定的最大数目并且每个服务进程都处于繁忙状态时,不再接受客户端的新的连接请求,避免整个平台或服务器因过载而异常。
6灵活的日志管理,可以根据日志级别过滤日志信息,可以设定循环使用的日志文件的数目,避免持续消耗磁盘空间,实现日志文件的自我管理,无需管理员手工定期清理日志信息。
7通信报头的格式可灵活配置,报头字段的数据类型支持整型与字符型,开发人员可以根据字段序号读取或设置报头字段的内容,方便编程,支持定长、变长报文。
8开发人员可以在进程管理共享内存中记录交易关键信息,有效控制多个服务进程同时处理相关交易时产生的冲突。
9开发平台自身支持中英文两种语言,通过环境变量控制切换,全面切换屏幕显示与日志记录采用的语言;
附图说明
图1为开发流程示意图;
图2为异步通信模式整体架构示意图;
图3为自我诊断流程图。
具体实施方式:
下面结合附图对本发明进行详细说明:
如图1所示,描述使用开发平台开发应用程序的整体流程。
开发平台发布为一个静态库文件,附带了配套资料、静态库文件、头文件、样例源代码、样例Makefile、样例配置文件,提供编程接口供开发人员编程调用,支持各种类UNIX操作系统,支持C/C++开发语言;
开发人员阅读配套资料,了解开发平台编程接口与运行机制;
结合项目需求完善修改样例源代码,编写个性化业务处理逻辑,调用编程接口注册业务逻辑回调函数,生成最终的源程序;
开发人员可以注册平台初始化逻辑、平台终止逻辑、服务进程初始化逻辑、客户端请求处理逻辑、等待客户端连接请求超时后的处理逻辑等个性化功能逻辑,进一步丰富平台功能,功能逻辑大多是可选的,开发人员按需注册,每个逻辑实现为一个独立的回调函数,注册过程相当于为平台注入了对应的扩展功能,平台运行时,在特定的运行上下文会调用开发人员事先注册的相应功能逻辑。
完善修改样例Makefile,执行make命令编译项目工程,编译源程序并连接静态库文件,生成最终的执行程序;
平台运行依赖一个配置文件指导自己的运行行为,配置文件中包含一组配置参数,完善修改样例配置文件,与执行程序一起发布运行,运行时可以通过运行监视界面实时查看整个平台的运行状态;
make是一个命令工具,它解释Makefile中的指令完成目标工程的编译,在Makefile文件中描述了整个工程所有文件的编译顺序、编译规则。
如图2所示,描述异步通信模式整体架构。
在异步通信模式场景中,完整功能的实现包含两个平台:一个异步通信平台、一个业务处理平台;异步通信平台接收客户端请求消息,放入消息队列,由业务处理平台从中提取并处理,应答结果再次通过异步通信平台返回客户端;一个通信进程可以搭配一组处理进程,通信进程专职通信,处理进程专职业务逻辑处理,两者通过消息队列与UNIX域SOCKET通信机制交换数据,灵活扩展处理能力,提升交易吞吐量。
异步通信平台运行时创建一组进程,包括一个平台进程、一个诊断进程、一组服务进程;平台进程通过SOCKET监听描述符等待客户端连接请求,通过SOCKET管理描述符等待用户操作指令与服务进程的交易耗时数据以及诊断进程的汇报,采用IO多路复用技术同时兼顾这SOCKET监听描述符及SOCKET管理描述符这两个描述符;
两个平台中的诊断进程运行时周期性检测各自平台中各个服务进程的运行状态,对于单个周期运行持续时间超过设定时限的服务进程,强行杀死并向平台进程汇报,由平台进程予以重启;实时监控各个服务进程存活与否,如果服务进程异常终止则向平台进程汇报,由平台进程予以重启;在异步通信平台中同时实时监控整个平台的繁忙比率,达到设定阈值时向平台进程汇报,由平台进程在线增减服务进程;
异步通信平台中服务进程的数目由配置参数决定,平台进程根据配置文件中的平台关键字创建进程管理共享内存、信号灯、消息队列,创建一个SOCKET监听描述符、一个SOCKET管理描述符、一组描述符传递通道、一个空闲通道,对于UDP通信协议额外创建一个令牌通道,描述符传递通道与空闲通道用以传递客户端的连接请求描述符;
异步通信平台中,服务进程启动时在空闲通道中登记自己的进程编号,并等待读取自己专属的描述符传递通道,客户端请求到达时,由平台进程通过SOCKET监听描述符接受,从空闲通道中提取第一个服务进程编号,通过进程编号对应的描述符传递通道发送客户端描述符,对应的服务进程接收客户端描述符,处理请求的业务逻辑,之后向客户端返回应答结果,最后再次在空闲通道中登记自己的进程编号。
异步通信平台中,用户指令要求开启统计分析功能时,平台框架分配一段局部内存,之后从服务进程接收的交易耗时数据在其中记录,用户指令要求显示统计分析结果时,平台框架从中导出所有的交易耗时数据由用户指令进一步加工显示,用户指令要求关闭统计分析功能时,平台框架释放之前分配的内存。
业务处理平台运行时创建一个平台进程及一个诊断进程,平台进程根据配置文件中的平台关键字创建进程管理共享内存、信号灯、一个空闲通道、一组数据传输通道,创建一个SOCKET管理描述符,等待用户操作指令或诊断进程的汇报,之后通过用户操作指令手工增加一个分发进程以及一组处理进程;
运行监视时启动监视界面,两个平台分别监视,启动自己的监视界面,从平台各自的进程管理共享内存中提取平台全局信息与每个服务进程的运行信息,在屏幕上实时直观显示,实时查看平台全局信息与服务程序的运行状态,采用定时信号驱动周期性自动刷新。
在同一台机器上可以同时运行多个平台,通过平台关键字区分,平台关键字唯一标识一个平台;
开发平台自身支持中英文两种语言,通过环境变量控制切换,全面切换屏幕显示与日志记录采用的语言;
两个平台中的共享内存机制采用类UNIX系统内置支持的System V标准的sharedmemory,为协调多个进程对共享内存的同步访问,采用System V标准的信号灯semaphore作为加锁同步机制,异步通信队列采用System V标准的消息队列,支持消息优先级。
两个平台各自的进程管理共享内存中包含平台全局信息,如:平台类型、服务进程数目、服务进程繁忙比率、平台进程ID、诊断进程ID等,以及一组管理槽位,每个服务进程占用其中一个槽位,存放服务进程的私有信息,包括:进程ID、运行状态、用户ID、组ID、执行时间、执行时限等。
两个平台中的信号灯作为各自平台中多个进程同时访问进程管理共享内存时的同步加锁机制,避免共享内存数据读写混乱,只有两个取值0和1(0表示加锁,1表示解锁);
两个平台中,平台进程启动子进程的过程中,平台进程与子进程之间使用了一个临时的同步管道,子进程启动后等待同步管道中的通知,平台进程完成进程管理共享内存中相应槽位的数据维护之后,通过同步管道向子进程发送一个通知,然后子进程才得以继续运行。
在异步通信平台中,客户端请求到达之后由平台进程接受,得到客户端连接描述符,通过描述符传递通道发送给空闲的通信进程,通信进程创建一个UNIX域的监听SOCKET,作为与处理平台中的处理进程交互的通道,之后通信进程通过IO多路复用技术(poll系统调用)同时兼顾客户端描述符、UNIX域监听SOCKET:客户端发送请求数据时,通信进程接收,绑定自己的进程序号后写入请求队列;处理进程读取客户端请求消息,处理业务逻辑,根据消息绑定的通信进程序号连接对应的通信进程的UNIX域监听SOCKET并发送应答结果,通信进程接受处理进程连接请求,得到处理进程连接描述符,之后通信进程的IO多路复用操作将兼顾这个新的处理进程连接描述符,从中读取处理进程应答结果并转发给客户端;
异步通信平台中由平台进程对外统一接受客户端请求,并通过描述符传递通道将客户端的请求描述符转交给空闲的服务进程,而不是多个服务进程同时抢夺客户端请求,可以避免某些版本的类UNIX系统中的惊群效应,所谓惊群效应指多个进程同时等待同一个描述符的事件,当描述符的事件触发时,所有等待这个事件的进程都被唤醒,但是只有一个进程能成功处理这个事件,其他进程都会失败,由此导致无谓的进程调度,降低系统性能;
对于UDP通信协议,平台进程并不接受客户端连接,因为UDP协议是无连接的,平台进程只是探测客户端的请求到达,通过描述符传递通道向空闲的服务进程发送一个通知,由具体的服务进程负责接收客户端请求报文。
在业务处理平台内部,采用了与异步通信平台类似的分发逻辑,避免多个处理进程同时抢夺客户端请求队列,可以避免某些版本的类UNIX系统中的惊群效应;平台启动时创建一个空闲通道与一组数据传输通道,再采用插件程序的方式运行一个分发进程与一组处理进程,处理进程启动时在空闲通道中登记自己的进程编号,并等待读取自己专属的数据传输通道,分发进程从请求队列中提取客户端请求,从空闲通道中提取第一个空闲的处理进程编号,通过进程编号对应的数据通道发送客户端的请求数据,对应的处理进程接收并处理请求的业务逻辑,之后向请求数据对应的通信进程发送应答结果,最后再次在空闲通道中登记自己的进程编号;
随着处理平台中处理进程的增多,通信进程的IO多路复用操作将兼顾更多的描述符,通信平台中每个通信进程都有机会收到所有处理进程的连接请求,因为通信进程接收并写入请求队列的客户端请求可能被任何一个处理进程处理;
异步通信模式时,允许客户端批量发送一批请求,在上一个请求处理完成之前,客户端可以发送新的请求,从而提升交易请求吞吐量,服务端的应答返回时客户端根据应答结果中的消息标识关联自己的请求消息,辨识应答结果的归属;与之相对,同步通信模式时,客户端发送请求后,同步等待服务端的应答,在此之前不会发送新的请求报文。
完整的数据流程包含:
1、客户端发起连接请求;
2、通信平台中的平台进程接受连接请求,得到客户端连接描述符,通过事先创建的描述符传递通道传递给某个空闲的通信进程,关闭与客户端的连接;
3、通信进程接管与客户端的连接,读取客户端请求消息,绑定自己的进程序号后,放入请求队列;
4、处理平台中的分发进程从请求队列中读取请求,通过事先创建的数据传输通道分发给某个空闲的处理进程;
5、处理进程处理完成之后,连接请求消息中的进程序号对应的通信进程,并发送应答结果;
6、通信进程转发应答结果给客户端;
7、最终,请求消息由哪个通信进程接收,应答结果就由哪个通信进程返回。
如图3所示,两个平台都包括各自的自我诊断模块,自我诊断模块运行时读取命令行指定的配置文件,获取管理参数(如平台关键字、睡眠间隔等),之后后台常驻执行,连接进程管理共享内存,从中提取服务进程运行信息,周期性检测各个进程的运行状态;
为避免自我诊断模块重复启动造成的混乱,程序启动后在一个文件(通常放置在/var/run目录下)中记录当前进程的进程ID,并对文件本身加锁,重复启动的自我诊断模块再次对同一个文件加锁时,因失败退出,自我诊断模块退出(无论正常或异常退出)时,文件锁自动释放;
进程管理共享内存中记录着服务进程的进程ID,自我诊断模块据以判断进程存活与否,如果服务进程异常终止,则通知平台进程对其重新启动,确保整个平台持续稳定运行;
进程管理共享内存中记录着服务进程的单个周期运行开始时间、执行时限信息,自我诊断模块据以计算服务进程的单个周期运行持续时间,对于超过设定时限的进程,强行杀死,并通知平台进程对其重新启动,避免进程的无限期挂起,确保服务行为可控;
在异步通信平台中,自我诊断模块还实时监控整个平台的繁忙比率,达到设定阈值时向平台进程汇报,在线增减服务进程的数目,实现处理能力的动态扩展。
上述虽然结合附图对本发明的具体实施方式进行了描述,但并非对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。

Claims (10)

1.异步通信模式下SOCKET通信与进程管理通用方法,其特征是,包括以下步骤:
异步通信模式场景中,完整功能的实现包含两个平台:一个异步通信平台、一个业务处理平台,两者通过消息队列与UNIX域SOCKET通信机制交换数据;
客户端发起连接请求;通信平台中的平台进程接受连接请求,得到客户端连接描述符,通过事先创建的描述符传递通道将客户端连接描述符传递给某个空闲的通信进程,关闭与客户端的连接;
通信平台中的通信进程接管与客户端的连接,读取客户端请求消息,绑定自己的进程序号后,放入请求队列;
处理平台中的分发进程从请求队列中读取请求消息,将请求消息通过事先创建的数据传输通道分发给某个空闲的处理进程;处理进程处理完成之后,连接请求消息中的进程序号对应的通信进程,并发送应答结果;
通信进程转发应答结果给客户端,从而应答结果由接收该请求消息的通信进程返回。
2.如权利要求1所述的异步通信模式下SOCKET通信与进程管理通用方法,其特征是,通信平台中的一个通信进程搭配处理平台中的一组处理进程,通信进程专职通信,处理进程专职业务逻辑处理,两者通过消息队列与UNIX域SOCKET通信机制交换数据;
通信平台以SOCKET服务模式运行,处理平台以常驻进程管理模式运行。
3.如权利要求1所述的异步通信模式下SOCKET通信与进程管理通用方法,其特征是,在通信平台中,客户端请求到达之后由平台进程接受,得到客户端连接描述符,通过描述符传递通道发送给空闲的通信进程,通信进程创建一个UNIX域的监听SOCKET,作为与处理平台中的处理进程交互的通道,之后通信进程通过IO多路复用技术同时兼顾客户端描述符、UNIX域监听SOCKET。
4.如权利要求1或3所述的异步通信模式下SOCKET通信与进程管理通用方法,其特征是,在处理平台中,处理进程读取客户端请求消息,处理业务逻辑,根据消息绑定的通信进程序号连接通信平台中对应的通信进程的UNIX域监听SOCKET并发送应答结果,通信进程接受处理进程连接请求,得到处理进程连接描述符,之后通信进程的IO多路复用操作将兼顾这个新的处理进程连接描述符,从中读取处理进程应答结果并转发给客户端。
5.如权利要求4所述的异步通信模式下SOCKET通信与进程管理通用方法,其特征是,在处理平台内部,采用分发逻辑,平台启动时创建一个空闲通道与一组数据传输通道,再采用插件程序的方式运行一个分发进程与一组处理进程,处理进程启动时在空闲通道中登记自己的进程编号,并等待读取自己专属的数据传输通道,分发进程从请求队列中提取客户端请求,从空闲通道中提取第一个空闲的处理进程编号,通过进程编号对应的数据通道发送客户端的请求数据,对应的处理进程接收并处理请求的业务逻辑,之后向请求数据对应的通信进程发送应答结果,最后再次在空闲通道中登记自己的进程编号。
6.异步通信模式下SOCKET通信与进程管理通用平台,其特征是,包括:
一个异步通信平台及一个业务处理平台,两者协作完成客户端请求的处理;
异步通信平台负责与客户端及处理平台交互;通信平台中的平台进程接受客户端的连接请求,得到客户端连接描述符,通过事先创建的描述符传递通道将客户端连接描述符传递给某个空闲的通信进程,平台进程关闭与客户端的连接;
异步通信平台中的通信进程接管与客户端的连接,读取客户端请求消息,绑定自己的进程序号后,放入请求队列,并等待处理平台完成业务逻辑处理之后的应答结果,以便转发给请求的客户端;
业务处理平台负责业务逻辑的处理,与通信平台直接交互,处理平台中的分发进程从请求队列中读取请求消息,将请求消息通过事先创建的数据传输通道分发给某个空闲的处理进程;处理进程处理完成之后,连接请求消息中的进程序号对应的通信进程,并发送应答结果。
7.如权利要求6所述的异步通信模式下SOCKET通信与进程管理通用平台,其特征是,异步通信平台中的一个通信进程可以搭配业务处理平台中的一组处理进程,通信进程专职通信,处理进程专职业务逻辑处理,两者通过消息队列与UNIX域SOCKET通信机制交换数据;
通信平台以SOCKET服务模式运行,处理平台以常驻进程管理模式运行。
8.如权利要求6或7所述的异步通信模式下SOCKET通信与进程管理通用平台,其特征是,在通信平台中,客户端请求到达之后由平台进程接受,得到客户端连接描述符,通过描述符传递通道发送给空闲的通信进程,通信进程创建一个UNIX域的监听SOCKET,作为与处理平台中的处理进程交互的通道,之后通信进程通过IO多路复用技术同时兼顾客户端描述符、UNIX域监听SOCKET。
9.如权利要求8所述的异步通信模式下SOCKET通信与进程管理通用平台,其特征是,处理平台中的处理进程读取客户端请求消息,处理业务逻辑,根据消息绑定的通信进程序号连接通信平台中对应的通信进程的UNIX域监听SOCKET并发送应答结果,通信进程接受处理进程连接请求,得到处理进程连接描述符,之后通信进程的IO多路复用操作将兼顾这个新的处理进程连接描述符,从中读取处理进程应答结果并转发给客户端。
10.如权利要求9所述的异步通信模式下SOCKET通信与进程管理通用平台,其特征是,在处理平台内部,采用分发逻辑,平台启动时创建一个空闲通道与一组数据传输通道,再采用插件程序的方式运行一个分发进程与一组处理进程,处理进程启动时在空闲通道中登记自己的进程编号,并等待读取自己专属的数据传输通道,分发进程从请求队列中提取客户端请求,从空闲通道中提取第一个空闲的处理进程编号,通过进程编号对应的数据通道发送客户端的请求数据,对应的处理进程接收并处理请求的业务逻辑,之后向请求数据对应的通信进程发送应答结果,最后再次在空闲通道中登记自己的进程编号。
CN201510644319.2A 2015-09-30 2015-09-30 异步通信模式下socket通信与进程管理通用平台及方法 Active CN105357273B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510644319.2A CN105357273B (zh) 2015-09-30 2015-09-30 异步通信模式下socket通信与进程管理通用平台及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510644319.2A CN105357273B (zh) 2015-09-30 2015-09-30 异步通信模式下socket通信与进程管理通用平台及方法

Publications (2)

Publication Number Publication Date
CN105357273A CN105357273A (zh) 2016-02-24
CN105357273B true CN105357273B (zh) 2018-06-19

Family

ID=55333132

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510644319.2A Active CN105357273B (zh) 2015-09-30 2015-09-30 异步通信模式下socket通信与进程管理通用平台及方法

Country Status (1)

Country Link
CN (1) CN105357273B (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105791420B (zh) * 2016-04-15 2018-11-30 烽火通信科技股份有限公司 集群环境下实现异步交互模式通信的系统及方法
CN106886453A (zh) * 2017-02-20 2017-06-23 恒生电子股份有限公司 用于异步多道的信息处理方法、装置和系统
CN107402826B (zh) * 2017-06-30 2018-09-21 武汉斗鱼网络科技有限公司 一种以异步方式进行远程过程调用的方法及装置
CN108319509B (zh) * 2017-12-20 2020-10-23 瑞斯康达科技发展股份有限公司 一种事件管理方法、系统及主控设备
CN108804240B (zh) * 2018-04-25 2021-11-19 天津卓盛云科技有限公司 一种队列数据的分发和处理算法
CN109150719A (zh) * 2018-08-21 2019-01-04 郑州云海信息技术有限公司 一种基于qt的c/s架构消息路由方法及装置
CN109660562A (zh) * 2019-01-30 2019-04-19 苏州德锐特成像技术有限公司 一种用于大数据同步的系统及客户端
CN112199205B (zh) * 2019-07-08 2023-10-27 南京工程学院 一种异构平台间的程序通信方法
CN110532109B (zh) * 2019-08-16 2023-06-30 东南大学 一种共享多通道进程通信内存结构和方法
CN111431735B (zh) * 2020-02-28 2023-04-07 平安科技(深圳)有限公司 连接池的管理方法、设备、装置及存储介质
CN112511636B (zh) * 2020-12-04 2022-04-08 中国建设银行股份有限公司 数据传输系统、方法、装置、计算机设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101087314A (zh) * 2007-05-15 2007-12-12 华为技术有限公司 一种应用程序跨进程使用套接字服务的系统及方法
CN101630272A (zh) * 2009-08-19 2010-01-20 用友软件股份有限公司 进程调度方法和系统
CN103176854A (zh) * 2011-12-26 2013-06-26 腾讯科技(深圳)有限公司 一种进程间通信方法、装置及系统
CN103995751A (zh) * 2014-05-30 2014-08-20 上海斐讯数据通信技术有限公司 一种跨平台通信系统及方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040003085A1 (en) * 2002-06-26 2004-01-01 Joseph Paul G. Active application socket management

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101087314A (zh) * 2007-05-15 2007-12-12 华为技术有限公司 一种应用程序跨进程使用套接字服务的系统及方法
CN101630272A (zh) * 2009-08-19 2010-01-20 用友软件股份有限公司 进程调度方法和系统
CN103176854A (zh) * 2011-12-26 2013-06-26 腾讯科技(深圳)有限公司 一种进程间通信方法、装置及系统
CN103995751A (zh) * 2014-05-30 2014-08-20 上海斐讯数据通信技术有限公司 一种跨平台通信系统及方法

Also Published As

Publication number Publication date
CN105357273A (zh) 2016-02-24

Similar Documents

Publication Publication Date Title
CN105357273B (zh) 异步通信模式下socket通信与进程管理通用平台及方法
CN105138398B (zh) 同步通信模式下socket通信与进程管理通用平台及方法
CN105357266B (zh) 适合多种场景的socket通信与进程管理通用平台及方法
CN109495308B (zh) 一种基于管理信息系统的自动化运维系统
CN101799751B (zh) 一种构建主机监控代理软件的方法
EP2909723B1 (en) Smart error recovery for database applications
CN107508722B (zh) 一种业务监控方法和装置
CN107179879A (zh) 用于存储设备的数据迁移的方法和装置
CN106201811B (zh) 应用程序的故障恢复方法和终端
CN109062590A (zh) 一种游戏sdk在线更新的方法及系统
CN104077199A (zh) 基于共享磁盘的高可用集群的隔离方法和系统
CN109634738A (zh) 基于微服务的异步处理方法、服务器、存储介质及装置
CN107493508A (zh) 基于Android智能终端流媒体播放性能监测的方法
CN105191211A (zh) 服务器集群下的日志提取方法和服务器集群
CN109766201A (zh) 任务分发方法、服务器、客户端和系统
CN111858007A (zh) 一种基于消息中间件的任务调度方法方法和装置
CN112698838B (zh) 多云容器部署系统及其容器部署方法
CN107220102A (zh) 虚拟机的休眠与唤醒方法及系统
CN108965048A (zh) 语音网关的数据采集方法、装置及存储介质、服务器
WO2000047003A1 (en) Method, system and computer program product for adaptive logging
CN110377324B (zh) 一种信息化平台监控系统和构建方法
CN100558142C (zh) 一种改变多个当前服务中应用状态的方法、应用及装置
CN104836831B (zh) 一种用于物联网的物体服务方法
CN111614702B (zh) 一种边缘计算方法以及边缘计算系统
CN101783794A (zh) 一种改善存储服务器通信服务稳定性的方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
CB03 Change of inventor or designer information

Inventor after: Liu Chun

Inventor after: Li Feng

Inventor after: Niu Wenqiang

Inventor after: Zhang Congguo

Inventor after: Zhang Hui

Inventor after: Cheng Dong

Inventor after: Wang Jin

Inventor after: Che Shuai

Inventor before: Zhang Congguo

Inventor before: Cheng Dong

Inventor before: Wang Jin

Inventor before: Che Shuai

Inventor before: Liu Chun

Inventor before: Zhang Hui

CB03 Change of inventor or designer information
GR01 Patent grant
GR01 Patent grant
PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: Universal SOCKET communication and process management platform and method in asynchronous communication mode

Effective date of registration: 20190404

Granted publication date: 20180619

Pledgee: Ji'nan branch of Limited by Share Ltd.

Pledgor: SHANDONG QIANYUN QICHUANG INFORMATION TECHNOLOGY Co.,Ltd.

Registration number: 2019370000069

PE01 Entry into force of the registration of the contract for pledge of patent right
PC01 Cancellation of the registration of the contract for pledge of patent right

Date of cancellation: 20200807

Granted publication date: 20180619

Pledgee: Ji'nan branch of Limited by Share Ltd.

Pledgor: SHANDONG QIANYUN QICHUANG INFORMATION TECHNOLOGY Co.,Ltd.

Registration number: 2019370000069

PC01 Cancellation of the registration of the contract for pledge of patent right
PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: General platform and method for socket communication and process management under asynchronous communication mode

Effective date of registration: 20211227

Granted publication date: 20180619

Pledgee: Jinan Rural Commercial Bank Co.,Ltd. Runfeng sub branch

Pledgor: SHANDONG QIANYUN QICHUANG INFORMATION TECHNOLOGY Co.,Ltd.

Registration number: Y2021980016348

PE01 Entry into force of the registration of the contract for pledge of patent right
PC01 Cancellation of the registration of the contract for pledge of patent right

Date of cancellation: 20230217

Granted publication date: 20180619

Pledgee: Jinan Rural Commercial Bank Co.,Ltd. Runfeng sub branch

Pledgor: SHANDONG QIANYUN QICHUANG INFORMATION TECHNOLOGY Co.,Ltd.

Registration number: Y2021980016348

PC01 Cancellation of the registration of the contract for pledge of patent right