CN103139199A - 以平台消息总线机制实现子系统间信息交互的方法 - Google Patents

以平台消息总线机制实现子系统间信息交互的方法 Download PDF

Info

Publication number
CN103139199A
CN103139199A CN2012105921437A CN201210592143A CN103139199A CN 103139199 A CN103139199 A CN 103139199A CN 2012105921437 A CN2012105921437 A CN 2012105921437A CN 201210592143 A CN201210592143 A CN 201210592143A CN 103139199 A CN103139199 A CN 103139199A
Authority
CN
China
Prior art keywords
subsystem
service
dispenser modules
information
message
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.)
Granted
Application number
CN2012105921437A
Other languages
English (en)
Other versions
CN103139199B (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.)
Jilin Asia Link Technology Development Co.,Ltd.
Original Assignee
SHENZHEN KEYBRIDGE COMMUNICATIONS 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 SHENZHEN KEYBRIDGE COMMUNICATIONS CO Ltd filed Critical SHENZHEN KEYBRIDGE COMMUNICATIONS CO Ltd
Priority to CN201210592143.7A priority Critical patent/CN103139199B/zh
Publication of CN103139199A publication Critical patent/CN103139199A/zh
Application granted granted Critical
Publication of CN103139199B publication Critical patent/CN103139199B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Computer And Data Communications (AREA)

Abstract

一种以平台消息总线机制实现子系统间信息交互的方法,在网络系统内建立一个企业信息构建平台EPIC;该企业信息构建平台EPIC包括消息处理层模块,以及分发器模块。所述各子系统借助各自的消息处理层模块与分发器模块建立连接,并以服务的方式分别向企业信息构建平台EPIC注册。所述分发器模块根据服务处理请求消息向各已注册的子系统转发服务处理请求消息,实现在子系统间建立信息交互。本发明可以有效的降低系统的连接维度,减少各个子系统间的连接数量,简化了系统的配置;减少了开发人员在开发过程中为了创建连接,维护连接,连接配置管理所需要完成的重复开发工作。

Description

以平台消息总线机制实现子系统间信息交互的方法
技术领域
本发明涉及数据传输方法,特别是涉及基于网络管理的大型网络或者具有复杂网络结构的大型网络的数据传输方法。
背景技术
统一网管系统平台在实施过程中,需要多个子模块来协调工作,包括数据库子模块,设备管理服务器模块,站端服务器模块,日志服务器模块,客户端模块等等。为了让各个子模块间能够协调工作,需要建立相应的数据通道完成模块间的数据交互。现有技术常用数据交互模式包括基于SOCKET的纯应用型数据交互模式,以及DDE动态数据交换技术。如图1所示,服务端创建SOCKET,并通过绑定的方式与服务端的端口实现绑定,通过监听的方式监听指定端口上的数据连接请求;客户端创建SOCKET后,通过CONNECT的方法连接服务端指定端口,服务端接受连接请求后,与客户端的连接完成,可以进行数据交换。套接字的连接以及数据交换是一种非常经典而且基础的连接方式,是目前所有TCP/IP应用交换数据的基础。应用与具体的项目中时,适用于解决点对点的通讯问题,用于完成两个模块之间的数据交互。SOCKET技术能够解决点对点的数据交换,但是需要明确确定对端的IP地址以及端口号,建立SOCKET连接后方能进行数据交互。这种模式在复杂系统应用中存在明显的缺陷。多对多的连接模式,为了实现系统的各个功能,同时考虑分布式的实现模式,在不同模块之间建立多个SOCKET连接,每个模块的开发人员必须为连接以及连接管理编写独立的代码进行连接管理以及数据处理机制,这样存在大量重复性的开发工作,一方面连接管理复杂,另一方面,对于需要容灾处理的关键服务和组件存在大量的SOCKET连接,随着分布式服务的增加,系统内的连接将呈几何级数上升。如图2所示,DDE是一种动态数据交换机制(Dynamic Data Exchange,DDE)。使用DDE通讯需要两个Windows应用程序,其中一个作为服务器处理信息,另外一个作为客户机从服务器获得信息。客户机应用程序向当前所激活的服务器应用程序发送一条消息请求信息,服务器应用程序根据该信息作出应答,从而实现两个程序之间的数据交换。但是DDE动态数据交换用于16位的WINDOWS平台下应用,目前使用的场景已经很少,且不适用于企业级分布式应用系统的开发工作。
发明内容
本发明要解决的技术问题在于避免现有技术的不足之处而提出一种克服现有技术存在的缺陷,降低系统的连接维度,减少各个子系统间的连接数量,简化了系统的配置的以平台消息总线机制实现子系统间信息交互的方法。
本发明解决所述技术问题可以通过采用以下技术方案来实现:
实施一种以平台消息总线机制实现子系统间信息交互的方法,基于包括至少一个客户端,以及至少一个服务器端的网络系统;尤其是,
所述方法在网络系统内建立一个企业信息构建平台 Enterprise Platform for Information Constructor;该企业信息构建平台EPIC包括分别设置在各服务器端和客户端的消息处理层模块,以及借助传输控制协议Transmission Control Protocol/用户数据报协议User Datagram Protocol与各消息处理层模块实现数据传输的分发器模块;所述企业信息构建平台EPIC按照以下步骤完成各子系统间的信息交互,
A. 系统按照配置文件完成系统运行状态初始化;
B. 所述各子系统借助各自的消息处理层模块与分发器模块建立连接,并以服务的方式分别向企业信息构建平台EPIC注册;
D. 已注册的子系统借助消息处理层模块发送的服务处理请求消息,所述分发器模块根据服务处理请求消息向各已注册的子系统转发服务处理请求消息,实现在子系统间建立信息交互。
所述消息处理层模块是分别寄生于各自对应的服务器端和客户端的寄生层模块,用于对要发送的来自服务器端或者客户端的应用层消息实施封装处理,对服务器端或者客户端的应用层要接收的消息实施解包处理;
所述分发器模块包括数据链路层模块和网络连接层;所述数据链路层用于完成对来自消息处理层模块的数据的分帧处理,确认接收和发送数据完整性验证;所述网络连接层完成网络物理连接初始化,按照数据链路层的要求完成数据的传输控制协议Transmission Control Protocol/用户数据报协议User Datagram Protocol传输、完成网络物理连接管理。
为保证系统准确及时更新平台连接情况,所述步骤A包括如下分步骤,
A11. 系统按照配置文件完成系统运行状态初始化,所述系统运行状态初始化包括设置心跳数据包发送周期;
那么在步骤B与步骤D之间还包括如下步骤,
C. 完成步骤B的已经注册的各子系统借助各自的消息处理层模块,按照分步骤A11设置的心跳数据包发送周期,每间隔一个心跳数据包发送周期分别向分发器模块发送心跳数据包;如果分发器模块在N个心跳数据包发送周期内未收到来自子系统的消息处理层模块的心跳数据包,所述分发器模块取消该子系统的注册。所述N=3。
所述分发器模块包括用于存储各子系统与分发器模块注册信息及数据连接状态的连接池,那么子系统的注册过程具体为所述步骤B包括如下分步骤,
B21. 子系统的消息处理层模块从该子系统的配置文件中获取所述子系统提供的服务的服务识别号Service ID,以及该服务要连接的分发器模块网际协议IP地址和端口信息,并封装成注册消息体数据包;
B22. 步骤B21所述子系统依据注册消息体数据包中的服务要连接的分发器模块网际协议IP地址和端口信息,依据传输控制协议TCP/用户数据报协议UDP与分发器模块的相应端口建立套接字SOCKET连接,并将所述注册消息体数据包发送至分发器模块;
B23. 分发器模块根据分步骤B22发送的注册消息体数据包,将所述子系统的服务存储至所述连接池中;
B24. 分发器模块将注册返回消息回传给所述子系统的消息处理层模块。
上述方法中还可以实现主备子系统注册,所述分步骤B23还进一步包括以下分步骤,
B2311. 分发器模块根据分步骤B22发送的注册消息体数据包中的所述服务要连接的分发器模块网际协议IP地址,判断该分发器模块要连接的网际协议IP地址是否与在连接池中已注册服务的要连接的分发器模块网际协议IP地址相同;如果相同,分发器模块正常刷新连接池,执行分步骤B2313;如果不相同,执行分步骤2312;
B2312. 分发器模块根据分步骤B22发送的注册消息体数据包中的服务识别码Service ID,判断该服务识别码Service ID是否与在连接池已经注册的服务的服务识别码Service ID相同;如果不相同,将分步骤B22发送的注册消息体数据包对应的服务的子系统在连接池存储为该项服务的主用子系统,执行分步骤2314;如果相同,将分步骤B22发送的注册消息体数据包对应的服务的子系统在连接池存储为该项服务的备用子系统,执行分步骤2315;
B2313. 将注册返回信息设置为重复注册信息;
B2314. 将注册返回信息设置为主用子系统注册信息;
B2315. 将注册返回信息设置为备用子系统注册信息。
本发明还可以通过心跳数据包实施传送子系统负载情况,A21. 系统按照配置文件完成系统运行状态初始化,所述系统运行状态初始化包括设置心跳数据包发送周期;
那么在步骤B与步骤D之间还包括如下步骤,
C21. 完成步骤B的已经注册的各子系统借助各自的消息处理层模块按照分步骤A21设置的心跳数据包发送周期,每间隔一个心跳数据包发送周期分别向分发器模块发送心跳数据包;所述心跳数据包包括子系统的负载状况信息;
C22. 如果分发器模块在N个心跳数据包发送周期内未收到来自子系统的消息处理层模块的心跳数据包,执行分步骤C23至C27,
C23. 分发器模块判断所述子系统是主用子系统还是备用子系统;如果是主用子系统执行分步骤C24至C26;如果是备用子系统,执行分步骤C27;
C24. 在连接池中查找所述主用子系统对应的服务在连接池中是否存在备用子系统,如果存在备用子系统,执行分步骤C25;如果不存在备用子系统,执行分步骤C26;
C25. 所述分发器模块在连接池中删除所述主用子系统的对应的服务,并且根据各备用子系统发送的心跳数据包中的负载状况信息,选择负载最轻的备用子系统修改设置为主用子系统; 
C26. 所述分发器模块在连接池中直接删除所述主用子系统的对应的服务;
C27. 所述分发器模块在连接池中直接删除所述备用子系统的对应的服务。
综合上述方案本发明还支持多重消息传播方式,所述步骤A包括如下分步骤,
A31. 系统按照配置文件完成系统运行状态初始化,所述系统运行状态初始化包括设置心跳数据包发送周期;
那么,所述步骤B包括如下分步骤,
B31. 子系统的消息处理层模块从该子系统的配置文件中获取所述子系统提供的服务的服务识别号Service ID,以及该服务要连接的分发器模块网际协议IP地址和端口信息,并封装成注册消息体数据包;
B32. 步骤B21所述子系统依据注册消息体数据包中的服务要连接的分发器模块网际协议IP地址和端口信息,依据传输控制协议TCP/用户数据报协议UDP与分发器模块的相应端口建立套接字SOCKET连接,并将所述注册消息体数据包发送至分发器模块;
B33. 分发器模块根据分步骤B22发送的注册消息体数据包,将所述子系统的服务存储至所述连接池中;
B34. 分发器模块将注册返回消息回传给所述子系统的消息处理层模块。
所述步骤C包括如下分步骤,
C31. 完成分步骤B31至B34的已经注册的各子系统借助各自的消息处理层模块按照分步骤A31设置的心跳数据包发送周期,每间隔一个心跳数据包发送周期分别向分发器模块发送心跳数据包;所述心跳数据包包括子系统的负载状况信息;如果分发器模块在N个心跳数据包发送周期内未收到来自子系统的消息处理层模块的心跳数据包,所述分发器模块取消该子系统的注册。
所述步骤D包括如下分步骤,
D301. 已注册的子系统借助消息处理层模块发送的服务处理请求消息,所述服务处理请求消息包括请求服务的服务识别码Service ID、请求服务的要连接的分发器模块网际协议IP地址和消息转发机制信息;该消息转发机制包括广播消息、组播消息、指定服务消息和定点消息;
D302. 分发器模块判断服务处理请求消息是否合法;如果合法,执行以下分步骤D33至D3;如果不合法,直接执行分步骤D311;
D303. 判断消息转发机制信息是否是广播消息;如果是广播消息,执行分步骤D304;如果不是广播消息,执行分步骤D305;
D304. 将服务处理请求消息转发给除了发送该服务处理请求消息子系统之外的所有已注册的子系统,然后执行分步骤D312;
D305. 在已经注册的子系统中查找是否存在子系统的服务识别码Service ID与所述服务处理请求消息的请求服务的服务识别码Service ID相同;如果存在,执行步骤D306;如果不存在,执行步骤D311;
D306. 判断消息转发机制信息是否是组播消息;如果是组播消息,执行分步骤D307;如果不是组播消息,执行分步骤D308;
D307. 将服务处理请求消息转发给子系统的服务识别码ID与请求服务的服务识别码Service ID相同子系统,然后执行分步骤D312;
D308. 判断消息转发机制信息是否是指定服务消息;如果是指定服务消息,执行分步骤D309;如果不是指定服务消息,执行分步骤D310;
D309. 根据各子系统发送的心跳数据包中的负载状况信息,在服务识别码ID与请求服务的服务识别码Service ID相同的子系统中选择负载最轻的子系统,将服务处理请求消息转发给该负载最轻的子系统,然后执行分步骤D312;
D310. 判断服务处理请求消息中的请求服务的要连接的分发器模块网际协议IP地址是否存在;如果存在,将服务处理请求消息转发给所述要连接的分发器模块网际协议IP地址对应的子系统,然后执行分步骤D312;如果不存在,执行步骤D311;
D311. 返回错误代码;
D312. 结束服务处理请求消息转发。
同现有技术相比较,本发明“以平台消息总线机制实现子系统间信息交互的方法”的技术效果在于:
本发明可以有效的降低系统的连接维度,减少各个子系统间的连接数量,简化了系统的配置;减少了开发人员在开发过程中为了创建连接,维护连接,连接配置管理所需要完成的重复开发工作。EPIC平台作为基础的系统承载功能,完成连接管理,消息分发,负载均衡,主备切换等企业级应用的抽象,能够为企业级的应用提供框架基础。EPIC平台在整个企业级应用的开发过程中,实现了模块级的复用,能够有效的提高产品的研发效率。
附图说明
图1是现有技术基于SOCKET的纯应用型数据交互模式示意图;
图2是现有技术DDE动态数据交换技术示意图;
图3是本发明“以平台消息总线机制实现子系统间信息交互的方法”优选实施例的企业信息构建平台EPIC分层处理模型示意图;
图4是所述优选实施例企业信息构建平台EPIC服务注册流程;
图5是所述优选实施例心跳数据包处理时序示意图;
图6是所述优选实施例分发器模块转发服务处理请求消息流程示意图。
具体实施方式
以下结合附图所示实施例作进一步详述。
本发明通过平台数据总线的模式,抽象出了一般企业级信息化应用中必须涉及到的几个环节,我们称之为EPIC(Enterprise Platform for Information Constructor,企业信息构建平台),通过EPIC的实施,实现了一些上层应用所应该包含的基础功能,简化了上层应用的开发模式,使开发人员不用再关心一些基础功能的实现,将开发重心放在了具体业务的实现上。本发明提出一种以平台消息总线机制实现子系统间信息交互的方法,基于包括至少一个客户端,以及至少一个服务器端的网络系统;尤其是,
所述方法在网络系统内建立一个企业信息构建平台 Enterprise Platform for Information Constructor;该企业信息构建平台EPIC包括分别设置在各服务器端和客户端的消息处理层模块,以及借助传输控制协议Transmission Control Protocol/用户数据报协议User Datagram Protocol与各消息处理层模块实现数据传输的分发器模块;所述企业信息构建平台EPIC按照以下步骤完成各子系统间的信息交互,
A. 系统按照配置文件完成系统运行状态初始化;
B. 所述各子系统借助各自的消息处理层模块与分发器模块建立连接,并以服务的方式分别向企业信息构建平台EPIC注册;
D. 已注册的子系统借助消息处理层模块发送的服务处理请求消息,所述分发器模块根据服务处理请求消息向各已注册的子系统转发服务处理请求消息,实现在子系统间建立信息交互。
如图3所示,EPIC平台的实现内容在分层中,定义为:消息处理层,数据链路层以及网络连接层。其中消息处理层为客户/服务端的寄生层,通常通过DLL实现,实现了平台的通讯规范,将应用消息按照EPIC平台规范实现消息的封装,对接收的消息进行完整性判断和消息的解封,将应用层消息提交上层应用进行处理,同时能够实现平台心跳消息的发送,判断与平台系统服务的连接状态;数据链路层和网络连接层属于EPIC平台的系统服务,其实现方式为系统平台分发器,为客户/服务端连接进行消息的分帧处理以及连接管理与消息分发操作。
也就是,所述消息处理层模块是分别寄生于各自对应的服务器端和客户端的寄生层模块,用于对要发送的来自服务器端或者客户端的应用层消息实施封装处理,对服务器端或者客户端的应用层要接收的消息实施解包处理;所述分发器模块包括数据链路层模块和网络连接层;所述数据链路层用于完成对来自消息处理层模块的数据的分帧处理,确认接收和发送数据完整性验证;所述网络连接层完成网络物理连接初始化,按照数据链路层的要求完成数据的传输控制协议Transmission Control Protocol/用户数据报协议User Datagram Protocol传输、完成网络物理连接管理。
本发明所述子系统的实际体现形式可以是网络模块,还可以是一组网络组件。本发明实现了不同模块,组件,子系统间的数据交互与传递。实现了消息的群发,组播,定点转发以及服务转发消息类型。通过心跳模式实现独立模块的注册,解注册与连接管理。通过心跳包传递应用的负载情况给EPIC平台,平台实现负载均衡处理。通过主备服务之间的状态判断,判断模块的可用性,平台实现了主备的热切换。以下将详述上述功能实现方案。
为保证系统准确及时更新平台连接情况,所述步骤A包括如下分步骤,
A11. 系统按照配置文件完成系统运行状态初始化,所述系统运行状态初始化包括设置心跳数据包发送周期;
那么在步骤B与步骤D之间还包括如下步骤,
C. 完成步骤B的已经注册的各子系统借助各自的消息处理层模块,按照分步骤A11设置的心跳数据包发送周期,每间隔一个心跳数据包发送周期分别向分发器模块发送心跳数据包;如果分发器模块在N个心跳数据包发送周期内未收到来自子系统的消息处理层模块的心跳数据包,所述分发器模块取消该子系统的注册。所述N=3。
关于各子系统的注册过程,EPIC平台中,每个具有多个功能集合的服务,需要进行负载均衡,容余备份的子系统,都可以以服务的方式注册到EPIC平台中。注册时,寄生层,即客户/服务端平台通讯封装模块应用从配置文件中获得相应的服务识别码Service ID以及要连接的分发器IP地址和端口信息。通过TCP/UDP方式,与分发器的服务端口建立SOCKET连接,寄生层封装注册消息体,将携带Service ID以及寄生层所在服务器IP信息的注册消息发送给分发器。分发器收到注册消息报文后,判断该注册是否属于重复注册,对于已经同一台IP的机器再次注册同样的Service ID,判为重复注册,直接刷新连接池中的内容即可。系统再判断Service ID是否已经存在,对于首次注册的服务,系统认为其为主用服务,否则系统认定其为备用服务。分发器将服务保存至连接池中,并刷新其心跳信息,将注册返回消息发送回寄生层。寄生层根据注册结果设定决定子系统的行为模式,即主用或者备用服务,并结束注册流程,准备进入心跳发送状态。
注册消息体中,包含了系统的Service ID,系统IP信息,用于将子系统信息提供给分发器。注册消息体原型参考如下:
typedef struct regist_msg
{
   unsigned long service_id;                    //系统注册服务ID
  char service_ip[16];                          //系统IP地址信息  
  unsigned char encrypt_type;                   //消息发送加密类型
 ……
}  REG_MSG;
本发明优选实施例通过以下方案实现上述功能,所述步骤B包括如下分步骤,如图4所示,
B21. 子系统的消息处理层模块从该子系统的配置文件中获取所述子系统提供的服务的服务识别号Service ID,以及该服务要连接的分发器模块网际协议IP地址和端口信息,并封装成注册消息体数据包;
B22. 步骤B21所述子系统依据注册消息体数据包中的服务要连接的分发器模块网际协议IP地址和端口信息,依据传输控制协议TCP/用户数据报协议UDP与分发器模块的相应端口建立套接字SOCKET连接,并将所述注册消息体数据包发送至分发器模块;
B23. 分发器模块根据分步骤B22发送的注册消息体数据包,将所述子系统的服务存储至所述连接池中;
B24. 分发器模块将注册返回消息回传给所述子系统的消息处理层模块。
为实现主备子系统注册,所述分步骤B23还进一步包括以下分步骤,
B2311. 分发器模块根据分步骤B22发送的注册消息体数据包中的所述服务要连接的分发器模块网际协议IP地址,判断该分发器模块要连接的网际协议IP地址是否与在连接池中已注册服务的要连接的分发器模块网际协议IP地址相同;如果相同,分发器模块正常刷新连接池,执行分步骤B2313;如果不相同,执行分步骤2312;
B2312. 分发器模块根据分步骤B22发送的注册消息体数据包中的服务识别码Service ID,判断该服务识别码Service ID是否与在连接池已经注册的服务的服务识别码Service ID相同;如果不相同,将分步骤B22发送的注册消息体数据包对应的服务的子系统在连接池存储为该项服务的主用子系统,执行分步骤2314;如果相同,将分步骤B22发送的注册消息体数据包对应的服务的子系统在连接池存储为该项服务的备用子系统,执行分步骤2315;
B2313. 将注册返回信息设置为重复注册信息;
B2314. 将注册返回信息设置为主用子系统注册信息;
B2315. 将注册返回信息设置为备用子系统注册信息。
子系统通过心跳的方式与平台保持连接状态,平台分发器在系统连接池中记录每一个注册到平台上的会话信息,当子系统的心跳到达后,分发器刷新在连接池中的会话信息,并更新各个子系统的负载状况。当子系统与平台分发器失联后,也就是心跳消息未能捕获,平台分发器负责将无效的子系统连接从系统连接池中移除。
在一个企业级的应用中,经常会遇到主用系统与备用系统并存的情况。一方面,主用系统承担了一些基础性的工作,例如网管中,主用服务负责完成系统设备的轮询操作,备用系统在主用系统正常工作的情况下,主要负责负担主用系统的负载,无需承担基础工作;另一方面,当主用系统发生异常中断后,备用系统需要能够完成切换工作,承担主用的基础工作,确保服务能够正常运行。
EPIC将企业级应用中经常需要解决的主备倒换问题通过平台的方式提供了一个解决方案。EPIC平台分发器能够通过注册的方式,将第一个接入系统平台的子系统作为主用服务,后续接入的同样Service ID的子系统作为备用子系统存在。当主用服务中断后,EPIC能够通过选举的方式,通常选举一个负载最轻的子系统,在其他备用服务中,找到一个新的主用服务子系统,并通知到相应的备用子系统升级为主用子系统。
本发明还可以通过心跳数据包实施传送子系统负载情况,A21. 系统按照配置文件完成系统运行状态初始化,所述系统运行状态初始化包括设置心跳数据包发送周期;
那么在步骤B与步骤D之间还包括如下步骤,
C21. 完成步骤B的已经注册的各子系统借助各自的消息处理层模块按照分步骤A21设置的心跳数据包发送周期,每间隔一个心跳数据包发送周期分别向分发器模块发送心跳数据包;所述心跳数据包包括子系统的负载状况信息;
C22. 如果分发器模块在N个心跳数据包发送周期内未收到来自子系统的消息处理层模块的心跳数据包,执行分步骤C23至C27,
C23. 分发器模块判断所述子系统是主用子系统还是备用子系统;如果是主用子系统执行分步骤C24至C26;如果是备用子系统,执行分步骤C27;
C24. 在连接池中查找所述主用子系统对应的服务在连接池中是否存在备用子系统,如果存在备用子系统,执行分步骤C25;如果不存在备用子系统,执行分步骤C26;
C25. 所述分发器模块在连接池中删除所述主用子系统的对应的服务,并且根据各备用子系统发送的心跳数据包中的负载状况信息,选择负载最轻的备用子系统修改设置为主用子系统; 
C26. 所述分发器模块在连接池中直接删除所述主用子系统的对应的服务;
C27. 所述分发器模块在连接池中直接删除所述备用子系统的对应的服务。
如图5所示,分发器为了维持与每一个服务网络层连接,必须通过心跳的方式获得每一个已经注册成功的子系统服务模块的连接确认。子系统的寄生层模块会定期的给分发器发送心跳数据包。分发器收到心跳数据包后,在连接池中刷新对应的连接信息,确认连接维持。分发器有独立的线程检查系统连接池中的连接,超过3个心跳周期没有收到子系统的心跳信息,分发器认为连接已经中断,将连接从连接池中移出,子系统寄生层必须再次注册才能继续提供服务。
寄生层模块发送的心跳数据除了提供连接确认以外,还提供寄生层所在服务器及其应用的负载信息,分发器通过心跳同时能够获得寄生层所在应用及服务器的负载情况,当有调用寄生层Service ID的消息到达时,分发器能够判断当前所有同样服务,即Service ID相同的负载状态,选择一个轻量级的负载服务进行消息处理。
寄生模块通过以下消息参数判断寄生层所在服务器的负载状况:
服务器的CPU消耗情况;
服务器的I/O读写消耗情况;
服务器的内存消耗情况;
系统创建的连接数量情况
与应用相关的负载情况
寄生层通过注册回调函数的方式,由应用提供负载的判断,允许应用根据自身的运行情况,例如空闲线程数量,应用自身资源消耗情况等等,做出负载的判断,将负载情况结合当前计算机操作系统运行状况一起提交给EPIC平台分发器。寄生层通过加权的方式对上述负载进行计算,得到系统的负载加权平均值作为服务的负载判断,当有新的服务请求消息到达时,根据系统中所有相同服务的负载状况作出消息分发的选择。EPIC平台允许应用对负载状况做出自定义的判断。
回调函数的注册原型请参考:
typedef int _stdcall(*FRegistCallBack)(int( *GetAppLoad)()); 
分发器得到应用发送的服务处理请求消息,需要将消息发送给相应的子系统进行后续处理。应用在发送服务处理请求消息时,并不能确定所请求的服务存在,也不知道所请求的服务所在的IP地址信息,需要通过EPIC平台分发器来定位服务的会话,通过EPIC平台来确定最合适处理的服务,也就是负载最轻的服务,来进行后续消息处理工作。
EPIC平台支持多种不同类型的消息机制,需要处理的消息类型包括:
广播消息
对所有注册在平台上的子系统提供消息转发,除了发送者以外,所有在平台上注册的子系统均可收到广播消息。该类消息没有返回,平台发送完成后不做等待。
组播消息
该类型的消息在消息体中包含了Service ID,只有与该服务ID匹配的子系统能收到平台转发的消息。主要用于一类服务的消息广播。该类消息没有返回,平台发送完成后不做等待。
指定服务消息
该类型的消息在消息体中包含了Service ID,平台分发器根据当前注册在平台中该服务识别码Service ID匹配的子系统的负载状况进行消息转发。该类型的消息有标志位判断是否子系统会有返回,缺省认为有返回,分发器根据标志位判断是否需要等待,如果有返回消息,平台分发器等待对端子系统的返回,并将返回消息回送给消息发送者。
定点消息
该类型消息包含Service ID,同时该类型消息中包含了指定子系统的IP地址,平台将定点消息发送给指定IP的以及Service ID的子系统进行后续处理。该类型的消息有标志位判断是否子系统会有返回,缺省认为有返回,分发器根据标志位判断是否需要等待,如果有返回消息,平台分发器等待对端子系统的返回,并将返回消息回送给消息发送者。
如图6所示,综合上述方案本发明还支持多重消息传播方式,所述步骤A包括如下分步骤,
A31. 系统按照配置文件完成系统运行状态初始化,所述系统运行状态初始化包括设置心跳数据包发送周期;
那么,所述步骤B包括如下分步骤,
B31. 子系统的消息处理层模块从该子系统的配置文件中获取所述子系统提供的服务的服务识别号Service ID,以及该服务要连接的分发器模块网际协议IP地址和端口信息,并封装成注册消息体数据包;
B32. 步骤B21所述子系统依据注册消息体数据包中的服务要连接的分发器模块网际协议IP地址和端口信息,依据传输控制协议TCP/用户数据报协议UDP与分发器模块的相应端口建立套接字SOCKET连接,并将所述注册消息体数据包发送至分发器模块;
B33. 分发器模块根据分步骤B22发送的注册消息体数据包,将所述子系统的服务存储至所述连接池中;
B34. 分发器模块将注册返回消息回传给所述子系统的消息处理层模块。
所述步骤C包括如下分步骤,
C31. 完成分步骤B31至B34的已经注册的各子系统借助各自的消息处理层模块按照分步骤A31设置的心跳数据包发送周期,每间隔一个心跳数据包发送周期分别向分发器模块发送心跳数据包;所述心跳数据包包括子系统的负载状况信息;如果分发器模块在N个心跳数据包发送周期内未收到来自子系统的消息处理层模块的心跳数据包,所述分发器模块取消该子系统的注册。所述N=3。
所述步骤D包括如下分步骤,
D301. 已注册的子系统借助消息处理层模块发送的服务处理请求消息,所述服务处理请求消息包括请求服务的服务识别码Service ID、请求服务的要连接的分发器模块网际协议IP地址和消息转发机制信息;该消息转发机制包括广播消息、组播消息、指定服务消息和定点消息;
D302. 分发器模块判断服务处理请求消息是否合法;如果合法,执行以下分步骤D33至D3;如果不合法,直接执行分步骤D311;
D303. 判断消息转发机制信息是否是广播消息;如果是广播消息,执行分步骤D304;如果不是广播消息,执行分步骤D305;
D304. 将服务处理请求消息转发给除了发送该服务处理请求消息子系统之外的所有已注册的子系统,然后执行分步骤D312;
D305. 在已经注册的子系统中查找是否存在子系统的服务识别码Service ID与所述服务处理请求消息的请求服务的服务识别码Service ID相同;如果存在,执行步骤D306;如果不存在,执行步骤D311;
D306. 判断消息转发机制信息是否是组播消息;如果是组播消息,执行分步骤D307;如果不是组播消息,执行分步骤D308;
D307. 将服务处理请求消息转发给子系统的服务识别码ID与请求服务的服务识别码Service ID相同子系统,然后执行分步骤D312;
D308. 判断消息转发机制信息是否是指定服务消息;如果是指定服务消息,执行分步骤D309;如果不是指定服务消息,执行分步骤D310;
D309. 根据各子系统发送的心跳数据包中的负载状况信息,在服务识别码ID与请求服务的服务识别码Service ID相同的子系统中选择负载最轻的子系统,将服务处理请求消息转发给该负载最轻的子系统,然后执行分步骤D312;
D310. 判断服务处理请求消息中的请求服务的要连接的分发器模块网际协议IP地址是否存在;如果存在,将服务处理请求消息转发给所述要连接的分发器模块网际协议IP地址对应的子系统,然后执行分步骤D312;如果不存在,执行步骤D311;
D311. 返回错误代码;
D312. 结束服务处理请求消息转发。
显然,上述主备切换方案的步骤也可以插入上述消息转发方案的各步骤中,主要是分步骤C31中,实现有机结合,完成本发明所述EPIC平台的所有功能。

Claims (8)

1.一种以平台消息总线机制实现子系统间信息交互的方法,基于包括至少一个客户端,以及至少一个服务器端的网络系统;其特征在于:
所述方法在网络系统内建立一个企业信息构建平台 Enterprise Platform for Information Constructor;该企业信息构建平台EPIC包括分别设置在各服务器端和客户端的消息处理层模块,以及借助传输控制协议Transmission Control Protocol/用户数据报协议User Datagram Protocol与各消息处理层模块实现数据传输的分发器模块;所述企业信息构建平台EPIC按照以下步骤完成各子系统间的信息交互,
A. 系统按照配置文件完成系统运行状态初始化;
B. 所述各子系统借助各自的消息处理层模块与分发器模块建立连接,并以服务的方式分别向企业信息构建平台EPIC注册;
D. 已注册的子系统借助消息处理层模块发送的服务处理请求消息,所述分发器模块根据服务处理请求消息向各已注册的子系统转发服务处理请求消息,实现在子系统间建立信息交互。
2.根据权利要求1所述的以平台消息总线机制实现子系统间信息交互的方法,其特征在于:
所述消息处理层模块是分别寄生于各自对应的服务器端和客户端的寄生层模块,用于对要发送的来自服务器端或者客户端的应用层消息实施封装处理,对服务器端或者客户端的应用层要接收的消息实施解包处理;
所述分发器模块包括数据链路层模块和网络连接层;所述数据链路层用于完成对来自消息处理层模块的数据的分帧处理,确认接收和发送数据完整性验证;所述网络连接层完成网络物理连接初始化,按照数据链路层的要求完成数据的传输控制协议Transmission Control Protocol/用户数据报协议User Datagram Protocol传输、完成网络物理连接管理。
3.根据权利要求1所述的以平台消息总线机制实现子系统间信息交互的方法,其特征在于:
所述步骤A包括如下分步骤,
A11. 系统按照配置文件完成系统运行状态初始化,所述系统运行状态初始化包括设置心跳数据包发送周期;
那么在步骤B与步骤D之间还包括如下步骤,
C. 完成步骤B的已经注册的各子系统借助各自的消息处理层模块,按照分步骤A11设置的心跳数据包发送周期,每间隔一个心跳数据包发送周期分别向分发器模块发送心跳数据包;如果分发器模块在N个心跳数据包发送周期内未收到来自子系统的消息处理层模块的心跳数据包,所述分发器模块取消该子系统的注册。
4.根据权利要求1所述的以平台消息总线机制实现子系统间信息交互的方法,其特征在于:
所述分发器模块包括用于存储各子系统与分发器模块注册信息及数据连接状态的连接池,那么所述步骤B包括如下分步骤,
B21. 子系统的消息处理层模块从该子系统的配置文件中获取所述子系统提供的服务的服务识别号Service ID,以及该服务要连接的分发器模块网际协议IP地址和端口信息,并封装成注册消息体数据包;
B22. 步骤B21所述子系统依据注册消息体数据包中的服务要连接的分发器模块网际协议IP地址和端口信息,依据传输控制协议TCP/用户数据报协议UDP与分发器模块的相应端口建立套接字SOCKET连接,并将所述注册消息体数据包发送至分发器模块;
B23. 分发器模块根据分步骤B22发送的注册消息体数据包,将所述子系统的服务存储至所述连接池中;
B24. 分发器模块将注册返回消息回传给所述子系统的消息处理层模块。
5.根据权利要求5所述的以平台消息总线机制实现子系统间信息交互的方法,其特征在于:
所述分步骤B23还进一步包括以下分步骤,
B2311. 分发器模块根据分步骤B22发送的注册消息体数据包中的所述服务要连接的分发器模块网际协议IP地址,判断该分发器模块要连接的网际协议IP地址是否与在连接池中已注册服务的要连接的分发器模块网际协议IP地址相同;如果相同,分发器模块正常刷新连接池,执行分步骤B2313;如果不相同,执行分步骤2312;
B2312. 分发器模块根据分步骤B22发送的注册消息体数据包中的服务识别码Service ID,判断该服务识别码Service ID是否与在连接池已经注册的服务的服务识别码Service ID相同;如果不相同,将分步骤B22发送的注册消息体数据包对应的服务的子系统在连接池存储为该项服务的主用子系统,执行分步骤2314;如果相同,将分步骤B22发送的注册消息体数据包对应的服务的子系统在连接池存储为该项服务的备用子系统,执行分步骤2315;
B2313. 将注册返回信息设置为重复注册信息,执行步骤B24;
B2314. 将注册返回信息设置为主用子系统注册信息,执行步骤B24;
B2315. 将注册返回信息设置为备用子系统注册信息,执行步骤B24。
6.根据权利要求5所述的以平台消息总线机制实现子系统间信息交互的方法,其特征在于:
A21. 系统按照配置文件完成系统运行状态初始化,所述系统运行状态初始化包括设置心跳数据包发送周期;
那么在步骤B与步骤D之间还包括如下步骤,
C21. 完成步骤B的已经注册的各子系统借助各自的消息处理层模块按照分步骤A21设置的心跳数据包发送周期,每间隔一个心跳数据包发送周期分别向分发器模块发送心跳数据包;所述心跳数据包包括子系统的负载状况信息;
C22. 如果分发器模块在N个心跳数据包发送周期内未收到来自子系统的消息处理层模块的心跳数据包,执行分步骤C23至C27,
C23. 分发器模块判断所述子系统是主用子系统还是备用子系统;如果是主用子系统执行分步骤C24至C26;如果是备用子系统,执行分步骤C27;
C24. 在连接池中查找所述主用子系统对应的服务在连接池中是否存在备用子系统,如果存在备用子系统,执行分步骤C25;如果不存在备用子系统,执行分步骤C26;
C25. 所述分发器模块在连接池中删除所述主用子系统的对应的服务,并且根据各备用子系统发送的心跳数据包中的负载状况信息,选择负载最轻的备用子系统修改设置为主用子系统; 
C26. 所述分发器模块在连接池中直接删除所述主用子系统的对应的服务;
C27. 所述分发器模块在连接池中直接删除所述备用子系统的对应的服务。
7.根据权利要求1所述的以平台消息总线机制实现子系统间信息交互的方法,其特征在于:
所述步骤A包括如下分步骤,
A31. 系统按照配置文件完成系统运行状态初始化,所述系统运行状态初始化包括设置心跳数据包发送周期;
那么,所述步骤B包括如下分步骤,
B31. 子系统的消息处理层模块从该子系统的配置文件中获取所述子系统提供的服务的服务识别号Service ID,以及该服务要连接的分发器模块网际协议IP地址和端口信息,并封装成注册消息体数据包;
B32. 步骤B21所述子系统依据注册消息体数据包中的服务要连接的分发器模块网际协议IP地址和端口信息,依据传输控制协议TCP/用户数据报协议UDP与分发器模块的相应端口建立套接字SOCKET连接,并将所述注册消息体数据包发送至分发器模块;
B33. 分发器模块根据分步骤B22发送的注册消息体数据包,将所述子系统的服务存储至所述连接池中;
B34. 分发器模块将注册返回消息回传给所述子系统的消息处理层模块;
所述步骤C包括如下分步骤,
C31. 完成分步骤B31至B34的已经注册的各子系统借助各自的消息处理层模块按照分步骤A31设置的心跳数据包发送周期,每间隔一个心跳数据包发送周期分别向分发器模块发送心跳数据包;所述心跳数据包包括子系统的负载状况信息;如果分发器模块在N个心跳数据包发送周期内未收到来自子系统的消息处理层模块的心跳数据包,所述分发器模块取消该子系统的注册;
所述步骤D包括如下分步骤,
D301. 已注册的子系统借助消息处理层模块发送的服务处理请求消息,所述服务处理请求消息包括请求服务的服务识别码Service ID、请求服务的要连接的分发器模块网际协议IP地址和消息转发机制信息;该消息转发机制包括广播消息、组播消息、指定服务消息和定点消息;
D302. 分发器模块判断服务处理请求消息是否合法;如果合法,执行以下分步骤D303至D310;如果不合法,直接执行分步骤D311;
D303. 判断消息转发机制信息是否是广播消息;如果是广播消息,执行分步骤D304;如果不是广播消息,执行分步骤D305;
D304. 将服务处理请求消息转发给除了发送该服务处理请求消息子系统之外的所有已注册的子系统,然后执行分步骤D312;
D305. 在已经注册的子系统中查找是否存在子系统的服务识别码Service ID与所述服务处理请求消息的请求服务的服务识别码Service ID相同;如果存在,执行步骤D306;如果不存在,执行步骤D311;
D306. 判断消息转发机制信息是否是组播消息;如果是组播消息,执行分步骤D307;如果不是组播消息,执行分步骤D308;
D307. 将服务处理请求消息转发给子系统的服务识别码ID与请求服务的服务识别码Service ID相同子系统,然后执行分步骤D312;
D308. 判断消息转发机制信息是否是指定服务消息;如果是指定服务消息,执行分步骤D309;如果不是指定服务消息,执行分步骤D310;
D309. 根据各子系统发送的心跳数据包中的负载状况信息,在服务识别码ID与请求服务的服务识别码Service ID相同的子系统中选择负载最轻的子系统,将服务处理请求消息转发给该负载最轻的子系统,然后执行分步骤D312;
D310. 判断服务处理请求消息中的请求服务的要连接的分发器模块网际协议IP地址是否存在;如果存在,将服务处理请求消息转发给所述要连接的分发器模块网际协议IP地址对应的子系统,然后执行分步骤D312;如果不存在,执行步骤D311;
D311. 返回错误代码;
D312. 结束服务处理请求消息转发。
8.根据权利要求3或者7所述的以平台消息总线机制实现子系统间信息交互的方法,其特征在于:
所述N=3。
CN201210592143.7A 2012-12-31 2012-12-31 以平台消息总线机制实现子系统间信息交互的方法 Active CN103139199B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210592143.7A CN103139199B (zh) 2012-12-31 2012-12-31 以平台消息总线机制实现子系统间信息交互的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210592143.7A CN103139199B (zh) 2012-12-31 2012-12-31 以平台消息总线机制实现子系统间信息交互的方法

Publications (2)

Publication Number Publication Date
CN103139199A true CN103139199A (zh) 2013-06-05
CN103139199B CN103139199B (zh) 2016-02-10

Family

ID=48498505

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210592143.7A Active CN103139199B (zh) 2012-12-31 2012-12-31 以平台消息总线机制实现子系统间信息交互的方法

Country Status (1)

Country Link
CN (1) CN103139199B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103873472A (zh) * 2014-03-18 2014-06-18 广州市纬志电子科技有限公司 一种自动连接网络的方法
CN104219140A (zh) * 2014-08-25 2014-12-17 深圳键桥通讯技术股份有限公司 一种基于epic消息总线基础对特定模块进行群发消息的实现方法
CN105893041A (zh) * 2016-03-31 2016-08-24 努比亚技术有限公司 一种应用程序管理方法及装置
CN107525207A (zh) * 2016-06-20 2017-12-29 Lg电子株式会社 空气调节器及其通信方法
CN108667576A (zh) * 2018-08-06 2018-10-16 百度在线网络技术(北京)有限公司 消息服务器的主备切换方法、装置和消息服务系统

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101119268A (zh) * 2007-06-28 2008-02-06 杭州东信北邮信息技术有限公司 基于通用消息总线的通用业务系统架构的实现方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101119268A (zh) * 2007-06-28 2008-02-06 杭州东信北邮信息技术有限公司 基于通用消息总线的通用业务系统架构的实现方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
王晶: "业务网络智能化及其关键技术研究", 《中国博士学位论文全文数据库》, 15 March 2010 (2010-03-15) *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103873472A (zh) * 2014-03-18 2014-06-18 广州市纬志电子科技有限公司 一种自动连接网络的方法
CN104219140A (zh) * 2014-08-25 2014-12-17 深圳键桥通讯技术股份有限公司 一种基于epic消息总线基础对特定模块进行群发消息的实现方法
CN105893041A (zh) * 2016-03-31 2016-08-24 努比亚技术有限公司 一种应用程序管理方法及装置
CN107525207A (zh) * 2016-06-20 2017-12-29 Lg电子株式会社 空气调节器及其通信方法
CN107525207B (zh) * 2016-06-20 2021-05-25 Lg电子株式会社 空气调节器及其通信方法
CN108667576A (zh) * 2018-08-06 2018-10-16 百度在线网络技术(北京)有限公司 消息服务器的主备切换方法、装置和消息服务系统

Also Published As

Publication number Publication date
CN103139199B (zh) 2016-02-10

Similar Documents

Publication Publication Date Title
US7526549B2 (en) Cluster data port services for clustered computer system
CN104620559B (zh) 用于支持分布式数据网格集群中的可伸缩消息总线的系统和方法
US10341196B2 (en) Reliably updating a messaging system
JP3254405B2 (ja) ホスト間の接続を維持する方法
US8914521B2 (en) System and method for providing active-passive routing in a traffic director environment
CN103139199A (zh) 以平台消息总线机制实现子系统间信息交互的方法
US20150146716A1 (en) Communication System Architecture
US9325768B2 (en) System and method for clustered transactional interoperability of multiple messaging providers using a single connector mechanism
CN107040406A (zh) 一种端云协同计算系统及其容错方法
WO2018077284A1 (zh) 通信方法和系统、电子设备和计算机集群
CN102025783A (zh) 集群系统及其消息处理方法和协议转发网关
CN102064954A (zh) 一种分布式容错系统、设备和方法
US20200356549A1 (en) Distributed transaction processing method and related apparatus
WO2023046088A1 (zh) 一种应用于音视频数据传输的端到端系统解决方法
CN114237937A (zh) 一种多线程的数据传输方法和装置
US20120005063A1 (en) Fix proxy server
CN114942845A (zh) 跨集群资源调度方法及装置
US20140143592A1 (en) Client based high availability method for message delivery
US9116761B2 (en) System and method for preventing single-point bottleneck in a transactional middleware machine environment
WO2020252724A1 (zh) 日志处理方法、设备及计算机可读存储介质
KR20090017595A (ko) 통신 네트워크에서 데이터 처리 장치를 분배하는 방법 및 시스템
US20170048169A1 (en) Message queue replication with message ownership migration
CN103701788A (zh) 一种跨平台软总线的通信装置及软总线
CN104657240B (zh) 多内核操作系统的失效控制方法及装置
CN116192863A (zh) 微服务流量处理方法、dpu服务网格部署方法及系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CP03 Change of name, title or address

Address after: 518057, 24th Floor, Yihua Financial Science and Technology Building, 2388 Houhai Avenue, Nanshan High-tech Park, Shenzhen City, Guangdong Province

Patentee after: Shenzhen Asian Union Development Technology Co.,Ltd.

Address before: 518057 Building 6, R3-A, Nanshan High-tech Industrial Village, Shenzhen, Guangdong Province

Patentee before: SHENZHEN KEYBRIDGE COMMUNICATIONS TECHNOLOGY Co.,Ltd.

CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: Room 1205, Chuangye Building, Liaoyuan Hi tech Industrial Development Zone, Jilin Province, 136299

Patentee after: Jilin Asia Link Technology Development Co.,Ltd.

Address before: 518057, 24th Floor, Yihua Financial Science and Technology Building, 2388 Houhai Avenue, Nanshan High-tech Park, Shenzhen City, Guangdong Province

Patentee before: Shenzhen Asian Union Development Technology Co.,Ltd.

CP03 Change of name, title or address