CN104219140A - 一种基于epic消息总线基础对特定模块进行群发消息的实现方法 - Google Patents
一种基于epic消息总线基础对特定模块进行群发消息的实现方法 Download PDFInfo
- Publication number
- CN104219140A CN104219140A CN201410420217.8A CN201410420217A CN104219140A CN 104219140 A CN104219140 A CN 104219140A CN 201410420217 A CN201410420217 A CN 201410420217A CN 104219140 A CN104219140 A CN 104219140A
- Authority
- CN
- China
- Prior art keywords
- service
- message
- subsystem
- dispenser modules
- perform
- 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.)
- Pending
Links
Landscapes
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种基于EPIC消息总线基础对特定模块进行群发消息的实现方法,包含以下流程:A)系统服务初始化运行,实现对系统线程池的初始化以及连接端口的初始化操作;B)应用子系统注册操作,由子系统提供注册模式和服务识别码用于EPIC的服务选择和判断;C)应用子系统的心跳连接以及负载均衡机制;D)系统服务的消息分发机制,为服务请求者提供消息传递通道;E)应用子系统主备服务的切换。本发明通过新增TRAP消息类型并在客户端模块下增加了TRAP消息分发机制,实现了面向客户端的群发消息处理,从而简化了系统与多个客户端之间的消息交互和管理过程,提高了消息交互效率。
Description
技术领域
本发明涉及数据传输方法,具体是一种基于EPIC消息总线基础对特定模块进行群发消息的实现方法。
背景技术
统一网管系统平台在实施过程中,需要将某些消息(如设备告警消息)交互给所有在线客户端以及同步关联处理,为了高效和简明处理该消息内容,需要提供相应的消息机制。
企业信息构建平台(Enterprise Platform for Information Constructor,EPIC)支持的多种不同类型的消息机制,其消息类型包括:
广播消息
对所有注册在平台上的子系统提供消息转发,除了发送者以外,所有在平台上注册的子系统均可收到广播消息。该类消息没有返回,平台发送完成后不做等待。
组播消息
该类型的消息在消息体中包含了service_id,只有与该服务识别码匹配的子系统能收到平台转发的消息。主要用于一类服务的消息广播。该类消息没有返回,平台发送完成后不做等待。
指定服务消息
该类型的消息在消息体中包含了service_id,平台分发器模块根据当前注册在平台中该服务识别码匹配的子系统的负载状况进行消息转发。该类型的消息有标志位判断是否子系统会有返回(缺省认为有返回),分发器模块根据标志位判断是否需要等待,如果有返回消息,平台分发器模块等待对端子系统的返回,并将返回消息回送给消息发送者。
定点消息
该类型消息包含service_id,同时该类型消息中包含了指定子系统的IP地址,平台将定点消息发送给指定IP的以及service_id的子系统进行后续处理。该类型的消息有标志位判断是否子系统会有返回(缺省认为有返回),分发器模块根据标志位判断是否需要等待,如果有返回消息,平台分发器模块等待对端子系统的返回,并将返回消息回送给消息发送者。
不过EPIC已有的消息分发机制中,针对与多个客户端进行告警类信息的群发交互及同步关联处理,存在着不足之处:定点消息,只能实现点对点的消息交互过程,无法适应复杂的多对多消息交互模式,其处理过于繁杂和低效,需要软件人员介入消息交互管理过程;广播消息,是针对系统所有模块进行,不能适用于部分模块群(多个客户端)的消息模式;组播消息和指定服务消息,需要对service_id进行匹配,由于多个客户端其service_id各不相同,也不能适用该消息模式。
发明内容
本发明的目的在于提供一种基于EPIC消息总线基础对特定模块进行群发消息的实现方法。
为实现上述目的,本发明提供如下技术方案:
一种基于EPIC消息总线基础对特定模块进行群发信息的实现方法,包含以下流程:
A)系统服务初始化运行,实现对系统线程池的初始化以及连接端口的初始化操作;
B)应用子系统注册操作,由子系统提供注册模式和服务识别码用于EPIC的服务选择和判断;
C)应用子系统的心跳连接以及负载均衡机制;
D)系统服务的消息分发机制,为服务请求者提供消息传递通道;
E)应用子系统主备服务的切换。
作为本发明进一步的方案:所述步骤B)包括如下分步骤:
B1.子系统的寄生层模块从该子系统的配置文件中获取子系统提供的服务的服务识别码service_id,以及该服务要连接的分发器模块网际协议IP地址和端口信息,并封装成注册消息体数据包;
B2.子系统利用分步骤B1中注册消息体数据包中的服务要连接的分发器模块网际协议IP地址和端口信息,依据传输控制协议/用户数据报协议与分发器模块的相应端口建立套接字SOCKET连接,并将注册消息体数据包发送至分发器模块;
B3.分发器模块根据分步骤B2发送的注册消息体数据包,将子系统的服务存储至连接池中;
B4.分发器模块将注册返回消息回传给子系统的寄生层模块;
所述分步骤B3还进一步包括以下分步骤:
B31.分发器模块根据分步骤B2发送的注册消息体数据包中的分发器模块网际协议IP地址,判断该分发器模块要连接的网际协议IP地址是否与在连接池中已注册服务的要连接的分发器模块网际协议IP地址相同;如果相同,分发器模块正常刷新连接池,执行分步骤B33;如果不同,执行分步骤B32;
B32.分发器模块根据分步骤B2发送的注册消息体数据包中的服务识别码service_id,判断该服务识别码service_id是否与在连接池已经注册的服务的服务识别码service_id相同;如果不相同,将分步骤B2发送的注册消息体数据包对应的服务的子系统在连接池存储为该项服务的主用子系统,执行分步骤B34;如果相同,将分步骤B2发送的注册消息体数据包对应的服务的子系统在连接池存储为该项服务的备用子系统,执行分步骤B35;
B33.将注册返回信息设置为重复注册信息,执行步骤B4;
B34.将注册返回信息设置为主用子系统注册信息,执行步骤B4;
B35.将注册返回信息设置为备用子系统注册信息,执行步骤B4。
作为本发明进一步的方案:所述步骤C)包括如下分步骤:
C1.完成步骤B)的已经注册的各子系统借助各自的寄生层模块,每间隔一个心跳数据包发送周期分别向分发器模块发送心跳数据包,所述心跳数据包包括子系统的负载状况信息;
C2.如果分发器模块在3个心跳数据包发送周期内未收到来自子系统的寄生层模块的心跳数据包,执行分步骤C3至C7;
C3.分发器模块判断子系统是主用子系统还是备用子系统;如果是主用子系统执行分步骤C4至C6;如果是备用子系统,执行分步骤C7;
C4.在连接池中查找主用子系统对应的服务在连接池中是否存在备用子系统,如果存在备用子系统,执行分步骤C5;如果不存在备用子系统,执行分步骤C6;
C5.所述分发器模块在连接池中删除主用子系统的对应的服务,并且根据各备用子系统发送的心跳数据包中的负载状况信息,选择负载最轻的备用子系统修改设置为主用子系统;
C6.所述分发器模块在连接池中直接删除主用子系统的对应的服务;
C7.所述分发器模块在连接池中直接删除备用子系统的对应的服务。
作为本发明进一步的方案:所述步骤D)包括如下分步骤:
D1.已注册的子系统借助寄生层模块发送的服务处理请求消息,服务处理请求消息包括请求服务的服务识别码service_id、请求服务的要连接的分发器模块网际协议IP地址和消息分发机制信息;该消息分发机制包括TRAP消息、广播消息、组播消息和指定服务消息;
D2.分发器模块判断服务处理请求消息是否合法;如果合法,执行以下分步骤D3至D10;如果不合法,直接执行分步骤D11;
D3.判断消息分发机制信息是否是TRAP消息;如果是TRAP消息,执行分步骤D4;如果不是TRAP消息,执行分步骤D5;
D4.将消息转发给所有注册的客户端;
D5.判断是否存在已经注册的子系统,且与消息体中的服务识别码service_id匹配;如果存在且匹配,执行分步骤D6;如果不存在或者不匹配,直接执行分步骤D14;
D6.判断消息分发机制信息是否是广播消息;如果是广播消息,执行分步骤D7;如果不是广播消息,执行分步骤D8;
D7.将服务处理请求消息转发给除了发送该服务处理请求消息子系统之外的所有已注册的子系统,然后执行分步骤D15;
D8.在已经注册的子系统中查找是否存在子系统的服务识别码service_id与所属服务处理请求消息的请求服务的服务识别码service_id相同;如果存在,执行步骤D9;如果不存在,执行步骤D14;
D9.判断消息分发机制信息是否是组播消息;如果是组播消息,执行分步骤D10;如果不是组播消息,执行分步骤D11;
D10.将服务处理请求消息转发给子系统的服务识别码service_id与请求服务的服务识别码service_id相同的子系统,然后执行分步骤D15;
D11.判断消息分发机制信息是否是指定服务消息;如果是指定服务消息,执行分步骤D12;如果不是指定服务消息,执行分步骤D13;
D12.根据各子系统发送的心跳数据包中的负载状况信息,在服务识别码service_id与请求服务的服务识别码service_id相同的子系统中选择负载最轻的子系统,将服务处理请求消息转发给该负载最轻的子系统,然后执行分步骤D15;
D13.判断服务处理请求消息中的请求服务的要连接的分发器模块网际协议IP地址是否存在;如果存在,将服务处理请求消息转发给要连接的分发器模块网际协议IP地址对应的子系统,然后执行分步骤D15;如果不存在,执行步骤D14;
D14.返回错误代码;
D15.结束服务处理请求消息转发。
作为本发明进一步的方案:所述消息分发机制处理广播消息、TRAP消息、组播消息和指定服务消息。
作为本发明进一步的方案:所述EPIC包括寄生层模块、分发器模块、服务端模块和客户端模块,所述分发器模块为系统提供各个子系统之间的消息交互处理,是系统的核心消息总线平台,所述服务端模块为系统提供某种类型的资源服务,包括数据库子模块、设备管理服务器模块、站端服务器模块和日志服务器模块,以service_id区别服务类型,所述客户端模块为系统提供前台的操作和业务呈现,不同的客户端采用不同service_id。
作为本发明进一步的方案:所述客户端模块增加了TRAP消息分发机制,用于将特定消息群发给所有客户端以进行后续处理。
与现有技术相比,本发明的有益效果是:通过新增TRAP消息类型并在客户端模块下增加了TRAP消息分发机制,实现了系统与所有在线客户端进行群发消息的交互和处理;大大简化了EPIC与客户端消息处理的过程,使开发人员能够高效率的实现诸如告警类信息对客户端的交互和处理,将开发重心放在了具体业务的实现上。
附图说明
图1是子系统服务注册流程;
图2是消息分发机制处理请求消息的流程示意图。
具体实施方式
下面将结合本发明实施例,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
一种基于EPIC消息总线基础对特定模块进行群发信息的实现方法,包含以下流程:
A)系统服务初始化运行,实现对系统线程池的初始化以及连接端口的初始化操作;
B)应用子系统注册操作,由子系统提供注册模式和服务识别码用于EPIC的服务选择和判断;
所述步骤B)包括如下分步骤:
B1.子系统的寄生层模块从该子系统的配置文件中获取子系统提供的服务的服务识别码service_id,以及该服务要连接的分发器模块网际协议IP地址和端口信息,并封装成注册消息体数据包;
B2.子系统利用分步骤B1中注册消息体数据包中的服务要连接的分发器模块网际协议IP地址和端口信息,依据传输控制协议/用户数据报协议与分发器模块的相应端口建立套接字SOCKET连接,并将注册消息体数据包发送至分发器模块;
B3.分发器模块根据分步骤B2发送的注册消息体数据包,将子系统的服务存储至连接池中;
所述分步骤B3还进一步包括以下分步骤:
B31.分发器模块根据分步骤B2发送的注册消息体数据包中的分发器模块网际协议IP地址,判断该分发器模块要连接的网际协议IP地址是否与在连接池中已注册服务的要连接的分发器模块网际协议IP地址相同;如果相同,分发器模块正常刷新连接池,执行分步骤B33;如果不同,执行分步骤B32;
B32.分发器模块根据分步骤B2发送的注册消息体数据包中的服务识别码service_id,判断该服务识别码service_id是否与在连接池已经注册的服务的服务识别码service_id相同;如果不相同,将分步骤B2发送的注册消息体数据包对应的服务的子系统在连接池存储为该项服务的主用子系统,执行分步骤B34;如果相同,将分步骤B2发送的注册消息体数据包对应的服务的子系统在连接池存储为该项服务的备用子系统,执行分步骤B35;
B33.将注册返回信息设置为重复注册信息,执行步骤B4;
B34.将注册返回信息设置为主用子系统注册信息,执行步骤B4;
B35.将注册返回信息设置为备用子系统注册信息,执行步骤B4。
B4.分发器模块将注册返回消息回传给子系统的寄生层模块;
C)应用子系统的心跳连接以及负载均衡机制;
所述步骤C)包括如下分步骤:
C1.完成步骤B)的已经注册的各子系统借助各自的寄生层模块,每间隔一个心跳数据包发送周期分别向分发器模块发送心跳数据包,所述心跳数据包包括子系统的负载状况信息;
C2.如果分发器模块在3个心跳数据包发送周期内未收到来自子系统的寄生层模块的心跳数据包,执行分步骤C3至C7;
C3.分发器模块判断子系统是主用子系统还是备用子系统;如果是主用子系统执行分步骤C4至C6;如果是备用子系统,执行分步骤C7;
C4.在连接池中查找主用子系统对应的服务在连接池中是否存在备用子系统,如果存在备用子系统,执行分步骤C5;如果不存在备用子系统,执行分步骤C6;
C5.所述分发器模块在连接池中删除主用子系统的对应的服务,并且根据各备用子系统发送的心跳数据包中的负载状况信息,选择负载最轻的备用子系统修改设置为主用子系统;
C6.所述分发器模块在连接池中直接删除主用子系统的对应的服务;
C7.所述分发器模块在连接池中直接删除备用子系统的对应的服务。
D)系统服务的消息分发机制,为服务请求者提供消息传递通道;
所述步骤D)包括如下分步骤:
D1.已注册的子系统借助寄生层模块发送的服务处理请求消息,所述服务处理请求消息包括请求服务的服务识别码service_id、请求服务的要连接的分发器模块网际协议IP地址和消息分发机制信息;该消息分发机制包括TRAP消息、广播消息、组播消息和指定服务消息;
D2.分发器模块判断服务处理请求消息是否合法;如果合法,执行以下分步骤D3至D10;如果不合法,直接执行分步骤D11;
D3.判断消息分发机制信息是否是TRAP消息;如果是TRAP消息,执行分步骤D4;如果不是TRAP消息,执行分步骤D5;
D4.将消息转发给所有注册的客户端;
D5.判断是否存在已经注册的子系统,且与消息体中的服务识别码service_id匹配;如果存在且匹配,执行分步骤D6;如果不存在或者不匹配,直接执行分步骤D14;
D6.判断消息分发机制信息是否是广播消息;如果是广播消息,执行分步骤D7;如果不是广播消息,执行分步骤D8;
D7.将服务处理请求消息转发给除了发送该服务处理请求消息子系统之外的所有已注册的子系统,然后执行分步骤D15;
D8.在已经注册的子系统中查找是否存在子系统的服务识别码service_id与所属服务处理请求消息的请求服务的服务识别码service_id相同;如果存在,执行步骤D9;如果不存在,执行步骤D14;
D9.判断消息分发机制信息是否是组播消息;如果是组播消息,执行分步骤D10;如果不是组播消息,执行分步骤D11;
D10.将服务处理请求消息转发给子系统的服务识别码service_id与请求服务的服务识别码service_id相同的子系统,然后执行分步骤D15;
D11.判断消息分发机制信息是否是指定服务消息;如果是指定服务消息,执行分步骤D12;如果不是指定服务消息,执行分步骤D13;
D12.根据各子系统发送的心跳数据包中的负载状况信息,在服务识别码service_id与请求服务的服务识别码service_id相同的子系统中选择负载最轻的子系统,将服务处理请求消息转发给该负载最轻的子系统,然后执行分步骤D15;
D13.判断服务处理请求消息中的请求服务的要连接的分发器模块网际协议IP地址是否存在;如果存在,将服务处理请求消息转发给要连接的分发器模块网际协议IP地址对应的子系统,然后执行分步骤D15;如果不存在,执行步骤D14;
D14.返回错误代码;
D15.结束服务处理请求消息转发。
E)应用子系统主备服务的切换。
所述消息分发机制处理广播消息、TRAP消息、组播消息和指定服务消息。所述EPIC包括寄生层模块、分发器模块、服务端模块和客户端模块,所述分发器模块为系统提供各个子系统之间的消息交互处理,是系统的核心消息总线平台,所述服务端模块为系统提供某种类型的资源服务,包括数据库子模块、设备管理服务器模块、站端服务器模块和日志服务器模块,以service_id区别服务类型,所述客户端模块为系统提供前台的操作和业务呈现,不同的客户端采用不同service_id。所述客户端模块增加了TRAP消息分发机制,用于将特定消息群发给所有客户端以进行后续处理。
以下结合附图和本发明实施例,作进一步详述。
请参阅图1和步骤B)及其分步骤,注册时,寄生层模块即客户/服务端平台通讯封装模块应用从配置文件中获得相应的注册模式service_type、服务识别码service_id以及要连接的分发器模块IP地址和端口信息。通过传输控制协议/用户数据报协议方式,与分发器模块的服务端口建立套接字SOCKET连接,寄生层模块封装注册消息体,将携带service_type、service_id以及寄生层模块所在服务器IP信息的注册消息发送给分发器模块;分发器模块收到注册消息报文后,判断该注册是否属于重复注册,对于已经同一台IP的机器再次注册同样的service_id,判为重复注册,直接刷新连接池中的内容即可;系统再判断service_id是否已经存在,对于首次注册的服务,系统认为其为主用服务,否则系统认定其为备用服务;分发器模块将服务保存至连接池中,并刷新其心跳信息,将注册返回消息发送回寄生层模块;寄生层模块根据注册结果设定决定子系统的主用或者备用服务的行为模式,并结束注册流程,准备进入心跳发送状态。
注册消息体中,包含了系统的service_type ,service_id,系统IP信息,用于将子系统信息提供给分发器模块。
注册消息体原型请参考:
typedef struct regist_msg
{
unsigned long service_type; //系统注册服务模式
unsigned long service_id; //系统注册服务识别码
char service_ip[16]; //系统IP地址信息
unsigned char encrypt_type; //消息发送加密类型
……
} REG_MSG;
注册模式类型请参考:
enum SERVICE_TYPE
{
CLIENT = 0 //客户端模式
, SERVER //应用服务模式
, DISPATCHER //分发器模块模式
, INVALID_TYPE //非法
};
连接池的流类中,包括流类型STREAM_TYPE信息,用于在消息分发处理过程中发送对象。连接池结构体原型请参考:
class CTCPStream
{
public:
//流类型
enum STREAM_TYPE
{
TCP_SERVER = 0 //服务端
, TCP_CLIENT //客户端
};
private:
STREAM_TYPE m_emType; //流当前角色状态
BaseHeaderList m_listRecv; //接受队列
BaseHeaderList m_listSend; //发送队列
BaseHeaderList m_listTrans; //转发队列
OBJECT_STATE m_objectState; //流当前运行状态
CODER_TYPE m_coderType; //编码格式
ACE_UINT32 m_uiIFID; //IF标识
ACE_UINT32 m_uiNetID; //所属网络模块
ACE_UINT32 m_uiStreamID; //流ID
ACE_UINT32 m_uiServiceID; //服务识别码
BOOL m_bConnected; //是否已连接
BOOL m_bIsBindDispatch; //是否绑定某一调度线程
ACE_SOCK_Stream* m_pStream; //流对象
CTCPCache* m_pInCache; //接受缓冲区
CTCPLoopCache* m_pOutCache; //发送缓冲区
time_t m_uiDelTime; //被要求删除的时间点
…
};
结合步骤C)对本发明实施例进一步说明,子系统通过心跳的方式与平台保持连接状态,分发器模块在系统连接池中记录每一个注册到平台上的会话信息,当子系统的心跳到达后,分发器模块刷新在连接池中的会话信息,并更新各个子系统的负载状况。当子系统与分发器模块失联后,也就是心跳信息未能捕获,平台分发器模块负责将无效的子系统连接从系统连接池中移除。
分发器模块为了维持与子系统的连接,必须通过心跳的方式获得每一个已经注册成功的子系统服务模块的连接确认。子系统的寄生层模块会定期的给分发器模块发送心跳数据包。分发器模块收到心跳数据包后,在连接池汇总刷新对应的连接信息,确认连接维持。分发器模块有独立的线程检查系统连接池中的连接,超过3个心跳周期没有收到子系统的心跳信息,分发器模块认为连接已经中断,将连接从连接池中移出,子系统寄生层模块必须再次注册才能继续提供服务。
寄生层模块发送的心跳数据除了提供连接确认以外,还提供寄生层模块所在服务器及其应用的负载信息,分发器模块通过心跳同时能够获得寄生层模块所在应用及服务器的负载情况,当有调用寄生层模块service_id的消息到达时,分发器模块能够判断当前所有同样服务,即service_id相同的负载状态,选择一个轻量级的负载服务进行消息处理。
具体地,寄生层模块通过以下消息参数判断寄生层模块所在服务器的负载状况:服务器的CPU消耗情况;服务器的I/O读写消耗情况;服务器的内存消耗情况;系统创建的连接数量情况;与应用相关的负载情况。寄生层模块通过注册回调函数的方式,由应用提供负载的判断,允许应用根据自身的运行情况,例如空闲线程数量,应用自身资源消耗情况等,做出负载的判断,将负载情况结合当前计算机操作系统运行状况一起提交给EPIC分发器模块。寄生层模块通过加权的方式对上述负载进行计算,得到系统的负载加权平均值作为服务的负载判断,当有新的服务请求消息到达时,根据系统中所有相同服务的负载状况作出消息分发的选择。EPIC允许应用对负载状况作出自定义的判断。
回调函数的注册原型请参考:
Typedef int _stdcall (*FRegistCallBack)(int(*GetAppLoad)());
请参阅图2和步骤D)及其分步骤,分发器模块得到应用发送的服务处理请求消息,需要将消息发送给相应的子系统进行后续处理。应用在发送服务处理请求消息时,并不能确定所请求的服务存在,也不知道所请求的服务所在的IP地址信息,需要通过EPIC分发器模块来定位服务的会话,通过EPIC来确定最合适处理的负载最轻的服务来进行后续消息处理工作。当发现服务处理请求消息为TRAP类型时,则将该消息发送给连接池中所有其注册模式为CLIENT连接池对象。
综上所述,上述主备切换方案的步骤也可以插入上述消息分发机制方案的各个步骤中,实现有机结合,完成本发明EPIC的所有功能。
本发明通过新增TRAP消息类型并在客户端模块下增加了TRAP消息分发机制,实现了系统与所有在线客户端进行群发消息的交互和处理;大大简化了EPIC与客户端消息处理的过程,使开发人员能够高效率的实现诸如告警类信息对客户端的交互和处理,将开发重心放在了具体业务的实现上。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。
此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。
Claims (7)
1.一种基于EPIC消息总线基础对特定模块进行群发信息的实现方法,其特征在于,包含以下流程:
A)系统服务初始化运行,实现对系统线程池的初始化以及连接端口的初始化操作;
B)应用子系统注册操作,由子系统提供注册模式和服务识别码用于EPIC的服务选择和判断;
C)应用子系统的心跳连接以及负载均衡机制;
D)系统服务的消息分发机制,为服务请求者提供消息传递通道;
E)应用子系统主备服务的切换。
2.根据权利要求1所述的基于EPIC消息总线基础对特定模块进行群发信息的实现方法,其特征在于,所述步骤B)包括如下分步骤:
B1.子系统的寄生层模块从该子系统的配置文件中获取子系统提供的服务的服务识别码service_id,以及该服务要连接的分发器模块网际协议IP地址和端口信息,并封装成注册消息体数据包;
B2.子系统利用分步骤B1中注册消息体数据包中的服务要连接的分发器模块网际协议IP地址和端口信息,依据传输控制协议/用户数据报协议与分发器模块的相应端口建立套接字SOCKET连接,并将注册消息体数据包发送至分发器模块;
B3.分发器模块根据分步骤B2发送的注册消息体数据包,将子系统的服务存储至连接池中;
B4.分发器模块将注册返回消息回传给子系统的寄生层模块;
所述分步骤B3还进一步包括以下分步骤:
B31.分发器模块根据分步骤B2发送的注册消息体数据包中的分发器模块网际协议IP地址,判断该分发器模块要连接的网际协议IP地址是否与在连接池中已注册服务的要连接的分发器模块网际协议IP地址相同;如果相同,分发器模块正常刷新连接池,执行分步骤B33;如果不同,执行分步骤B32;
B32.分发器模块根据分步骤B2发送的注册消息体数据包中的服务识别码service_id,判断该服务识别码service_id是否与在连接池已经注册的服务的服务识别码service_id相同;如果不相同,将分步骤B2发送的注册消息体数据包对应的服务的子系统在连接池存储为该项服务的主用子系统,执行分步骤B34;如果相同,将分步骤B2发送的注册消息体数据包对应的服务的子系统在连接池存储为该项服务的备用子系统,执行分步骤B35;
B33.将注册返回信息设置为重复注册信息,执行步骤B4;
B34.将注册返回信息设置为主用子系统注册信息,执行步骤B4;
B35.将注册返回信息设置为备用子系统注册信息,执行步骤B4。
3.根据权利要求1所述的基于EPIC消息总线基础对特定模块进行群发信息的实现方法,其特征在于,所述步骤C)包括如下分步骤:
C1.完成步骤B)的已经注册的各子系统借助各自的寄生层模块,每间隔一个心跳数据包发送周期分别向分发器模块发送心跳数据包,所述心跳数据包包括子系统的负载状况信息;
C2.如果分发器模块在3个心跳数据包发送周期内未收到来自子系统的寄生层模块的心跳数据包,执行分步骤C3至C7;
C3.分发器模块判断子系统是主用子系统还是备用子系统;如果是主用子系统执行分步骤C4至C6;如果是备用子系统,执行分步骤C7;
C4.在连接池中查找主用子系统对应的服务在连接池中是否存在备用子系统,如果存在备用子系统,执行分步骤C5;如果不存在备用子系统,执行分步骤C6;
C5.所述分发器模块在连接池中删除主用子系统的对应的服务,并且根据各备用子系统发送的心跳数据包中的负载状况信息,选择负载最轻的备用子系统修改设置为主用子系统;
C6.所述分发器模块在连接池中直接删除主用子系统的对应的服务;
C7.所述分发器模块在连接池中直接删除备用子系统的对应的服务。
4.根据权利要求1所述的基于EPIC消息总线基础对特定模块进行群发信息的实现方法,其特征在于,所述步骤D)包括如下分步骤:
D1.已注册的子系统借助寄生层模块发送的服务处理请求消息,所述服务处理请求消息包括请求服务的服务识别码service_id、请求服务的要连接的分发器模块网际协议IP地址和消息分发机制信息;该消息分发机制包括TRAP消息、广播消息、组播消息和指定服务消息;
D2.分发器模块判断服务处理请求消息是否合法;如果合法,执行以下分步骤D3至D10;如果不合法,直接执行分步骤D11;
D3.判断消息分发机制信息是否是TRAP消息;如果是TRAP消息,执行分步骤D4;如果不是TRAP消息,执行分步骤D5;
D4.将消息转发给所有注册的客户端;
D5.判断是否存在已经注册的子系统,且与消息体中的服务识别码service_id匹配;如果存在且匹配,执行分步骤D6;如果不存在或者不匹配,直接执行分步骤D14;
D6.判断消息分发机制信息是否是广播消息;如果是广播消息,执行分步骤D7;如果不是广播消息,执行分步骤D8;
D7.将服务处理请求消息转发给除了发送该服务处理请求消息子系统之外的所有已注册的子系统,然后执行分步骤D15;
D8.在已经注册的子系统中查找是否存在子系统的服务识别码service_id与所属服务处理请求消息的请求服务的服务识别码service_id相同;如果存在,执行步骤D9;如果不存在,执行步骤D14;
D9.判断消息分发机制信息是否是组播消息;如果是组播消息,执行分步骤D10;如果不是组播消息,执行分步骤D11;
D10.将服务处理请求消息转发给子系统的服务识别码service_id与请求服务的服务识别码service_id相同的子系统,然后执行分步骤D15;
D11.判断消息分发机制信息是否是指定服务消息;如果是指定服务消息,执行分步骤D12;如果不是指定服务消息,执行分步骤D13;
D12.根据各子系统发送的心跳数据包中的负载状况信息,在服务识别码service_id与请求服务的服务识别码service_id相同的子系统中选择负载最轻的子系统,将服务处理请求消息转发给该负载最轻的子系统,然后执行分步骤D15;
D13.判断服务处理请求消息中的请求服务的要连接的分发器模块网际协议IP地址是否存在;如果存在,将服务处理请求消息转发给要连接的分发器模块网际协议IP地址对应的子系统,然后执行分步骤D15;如果不存在,执行步骤D14;
D14.返回错误代码;
D15.结束服务处理请求消息转发。
5.根据权利要求1所述的基于EPIC消息总线基础对特定模块进行群发信息的实现方法,其特征在于,所述消息分发机制处理广播消息、TRAP消息、组播消息和指定服务消息。
6.根据权利要求1所述的基于EPIC消息总线基础对特定模块进行群发信息的实现方法,其特征在于,所述EPIC包括寄生层模块、分发器模块、服务端模块和客户端模块,所述分发器模块为系统提供各个子系统之间的消息交互处理,是系统的核心消息总线平台,所述服务端模块为系统提供某种类型的资源服务,包括数据库子模块、设备管理服务器模块、站端服务器模块和日志服务器模块,以service_id区别服务类型,所述客户端模块为系统提供前台的操作和业务呈现,不同的客户端采用不同service_id。
7.根据权利要求6所述的基于EPIC消息总线基础对特定模块进行群发信息的实现方法,其特征在于,所述客户端模块增加了TRAP消息分发机制,用于将特定消息群发给所有客户端以进行后续处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410420217.8A CN104219140A (zh) | 2014-08-25 | 2014-08-25 | 一种基于epic消息总线基础对特定模块进行群发消息的实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410420217.8A CN104219140A (zh) | 2014-08-25 | 2014-08-25 | 一种基于epic消息总线基础对特定模块进行群发消息的实现方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104219140A true CN104219140A (zh) | 2014-12-17 |
Family
ID=52100292
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410420217.8A Pending CN104219140A (zh) | 2014-08-25 | 2014-08-25 | 一种基于epic消息总线基础对特定模块进行群发消息的实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104219140A (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101119268A (zh) * | 2007-06-28 | 2008-02-06 | 杭州东信北邮信息技术有限公司 | 基于通用消息总线的通用业务系统架构的实现方法 |
CN101356545A (zh) * | 2005-12-09 | 2009-01-28 | 想象It公司 | 用于通过消息广播和本地无线系统分发宣传的系统和方法 |
CN103139199A (zh) * | 2012-12-31 | 2013-06-05 | 深圳键桥通讯技术股份有限公司 | 以平台消息总线机制实现子系统间信息交互的方法 |
-
2014
- 2014-08-25 CN CN201410420217.8A patent/CN104219140A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101356545A (zh) * | 2005-12-09 | 2009-01-28 | 想象It公司 | 用于通过消息广播和本地无线系统分发宣传的系统和方法 |
CN101119268A (zh) * | 2007-06-28 | 2008-02-06 | 杭州东信北邮信息技术有限公司 | 基于通用消息总线的通用业务系统架构的实现方法 |
CN103139199A (zh) * | 2012-12-31 | 2013-06-05 | 深圳键桥通讯技术股份有限公司 | 以平台消息总线机制实现子系统间信息交互的方法 |
Non-Patent Citations (1)
Title |
---|
赵围: "基于SNMP网络管理故障模块的分析与设计", 《中国优秀硕士学位论文全文数据库信息科技辑(2011)》 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104620559B (zh) | 用于支持分布式数据网格集群中的可伸缩消息总线的系统和方法 | |
CN112905305B (zh) | 基于vpp的集群式虚拟化数据转发方法、装置及系统 | |
CN103176780B (zh) | 一种多网络接口绑定系统及方法 | |
US20200326989A1 (en) | Building pool-based m2m service layer through nfv | |
US20100077250A1 (en) | Virtualization based high availability cluster system and method for managing failure in virtualization based high availability cluster system | |
CN106452841A (zh) | 在机器人操作系统中使用传输服务质量的方法 | |
CN104468358A (zh) | 分布式虚拟交换机系统的报文转发方法及设备 | |
CN107483390A (zh) | 一种云渲染网络部署子系统、系统及云渲染平台 | |
CN102761864A (zh) | 一种数据传输的方法、系统及设备 | |
CN102333065A (zh) | 云交互协议设计 | |
CN102595208A (zh) | 云端控制网络化视频图像处理流媒体服务系统及方法 | |
US10817327B2 (en) | Network-accessible volume creation and leasing | |
CN106354559A (zh) | 云桌面资源的处理方法及装置 | |
CN109254845A (zh) | 一种应用于分布式通信计算服务端的线性扩展实现方法 | |
CN101510793A (zh) | 一种通过蓝牙服务器实现多个蓝牙设备组网的方法、软件程序及服务器 | |
US8606908B2 (en) | Wake-up server | |
WO2019128647A1 (zh) | 消息传输方法、装置、存储介质及电子装置 | |
CN103139199B (zh) | 以平台消息总线机制实现子系统间信息交互的方法 | |
CN102707997B (zh) | 一种移动宽带设备多pdp数据通讯的驱动装置和方法 | |
CN103812947A (zh) | 数据交互系统及方法 | |
CN106850770A (zh) | 基于云计算服务的高效传输方法和装置 | |
CN117097702A (zh) | 一种基于SIP协议的高并发WebRTC网关处理方法、网关系统、电子装置及存储介质 | |
CN107249038A (zh) | 业务数据转发方法及系统 | |
CN104052723B (zh) | 信息处理方法、服务器和系统 | |
CN103618665A (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20141217 |