【发明内容】
为了解决现有技术中的问题,本发明提供了一种多级转发服务系统,解决了跨多个网段的交互数据的通道传输问题。
本发明解决现有技术问题所采用的技术方案是:提供一种多级转发服务系统,包括第一应用服务器,第一服务接口,多个转发服务器,第二服务接口与第二应用服务器。第一应用服务器用于组织交互数据的数据请求;第一服务接口用于接收数据请求,并将路由注册信息添加到所述数据请求的头部进行发送;多个转发服务器用于依次接收服务接口发送的数据请求,并将多个转发服务器中的注册信息依次添加到数据请求的头部中,然后将数据请求进行发送;第二服务接口用于接收来自多个转发服务器的数据请求,并将数据请求进行发送;第二应用服务器用于接收来自第二服务接口的数据请求,并执行数据请求,将执行的结果数据以附件形式添加到数据请求的数据区中,添加了结果数据的数据请求为数据请求的响应,第二应用服务器将响应回传至第二服务接口;第二服务接口还用于进行反向回传, 将响应回传至多个转发服务器,多个转发服务器接收到响应后根据数据请求头部中的多个服务器的注册信息依次传输后依次删除所述注册信息,并根据响应中组织信息寻找到第一服务接口,通过第一服务接口将响应发送到第一应用服务器,第一应用服务器获取响应的数据区附件中的结果数据,并对结果数据进行处理。
本发明进一步的改进是:多个转发服务器包括第一级至第N级转发服务器,形成多级级联通道,其中N大于等于二,在传输过程中,所述数据请求的头部中依次添加所述第一级转发服务器的注册信息至所述第N级转发服务器的注册信息,回传过程中,所述数据请求的响应根据所述第N级转发服务器的注册信息传送至所述第N级转发服务器,所述第N级转发服务器删除所述第N级转发服务器的注册信息并根据数据请求响应的所述多级服务器的注册信息传输,当所述第一级转发服务器接收到所述数据请求的响应时,删除所述第一级转发服务器的注册信息。
本发明进一步的改进是:在各级转发服务中传递的请求命令格式必须包含注册信息头和数据区。
本发明进一步的改进是:所述第一服务器与所述第二服务器位于两个不同的网段,所述两个不同的网段不能直接进行传输控制协议连接。
本发明进一步的改进是:所述多级转发服务器为开放源代码的应用服务器,且所述开放源代码的应用服务器具有双网卡或者能够同时连通两个网段。
本发明进一步的改进是:所述第一应用服务器为客户端,所述第二应用服务器为服务端,所述客户端通过多个转发服务器发送注册信息至所述服务端,若1秒之内收到注册成功应答,则多级级联通道可用,否则此所述多级级联通道对应的连接将自动销毁;所述多级级联通道建立后,立即为所述多级级联通道建立事件监听器,数据处理器与通道服务器,其中事件监听器用于监听所述多级级联通道的重连事件与所述多级级联通道的连接断开事件,数据处理器用于处理所述多级级联通道中传输的应用数据,通道服务器用于发送与接收所述服务端与所述客户端的数据;所述多级级联通道建立所述事件监听器,所述数据处理器与所述通道服务器后,所述客户端和所述服务端立即针对所述多级级联通道创建对应的服务线程,以发送应用数据和接收通道中传输的数据。
本发明还提供了一种多级转发服务方法,第一应用服务器组织所述交 互数据的数据请求,并将组织信息添加到所述数据请求的头部中;第一服务接口接收所述数据请求,并将所述数据请求进行发送;多个转发服务器接收所述服务接口发送的所述数据请求,并将所述多级转发服务器中每个转发服务器的注册信息依次添加到所述数据请求的头部中,然后将所述数据请求进行发送;第二服务接口接收来自所述多个转发服务器的数据请求,并将所述数据请求进行发送;第二应用服务器接收来自所述第二服务接口的数据请求,并执行所述数据请求,将执行的结果数据以附件形式添加到所述数据请求的数据区中,其中,所述添加了结果数据的数据请求为所述数据请求的响应,所述第二应用服务器将所述响应回传至所述第二服务接口;所述第二服务接口还用于进行反向回传,将所述响应回传至所述多个转发服务器;所述多个转发服务器接收到所述响应后根据所述数据请求头部中的所述多个服务器的注册信息依次传输后并依次删除所述注册信息,根据所述响应中所述组织信息寻找到所述第一服务接口;所述第一服务接口将所述数据请求的响应发送到所述第一应用服务器,所述第一应用服务器获取所述响应的数据区附件中的结果数据,并对所述结果数据进行处理。
本发明的有益效果是:采用本发明的多级转发服务系统及方法,可以在不同的网段间交互数据的实时转发,并通过事件监听器,数据处理器与通道服务器的处理策略,可有效的降低系统的维护成本。
【具体实施方式】
下面结合附图说明及具体实施方式对本发明进一步说明。
请参阅图1为本发明多级转发服务系统的模块图,在本实施方式中,多级转发服务系统1,包括第一应用服务器10,第一服务接口20,多个转发服务器30,第二服务接口40与第二应用服务器50。第一应用服务器10用于组织交互数据的数据请求。第一服务接口20用于接收数据请求,并将路由注册信息添加到所述数据请求的头部进行发送。多个转发服务器30 用于依次接收服务接口发送的数据请求,并将多个转发服务器中的注册信息依次添加到数据请求的头部中,然后将数据请求进行发送。第二服务接口40用于接收来自多个转发服务器的数据请求,并将数据请求进行发送。第二应用服务器50用于接收来自第二服务接口的数据请求,并执行数据请求,将执行的结果数据以附件形式添加到数据请求的数据区中,添加了结果数据的数据请求为数据请求的响应,第二应用服务器50将响应回传至第二服务接口40。第二服务接口40还用于进行反向回传,将响应回传至多个转发服务器30,多个转发服务器30接收到响应后根据数据请求头部中的多个转发服务器30的注册信息依次传输后依次删除注册信息,并根据响应中组织信息寻找到第一服务接口20,通过第一服务接口20将响应发送到第一应用服务器10,第一应用服务器10获取响应的数据区附件中的结果数据,并对结果数据进行处理。
在本实施方式中,多个转发服务器30包括第一级转发服务器300至第N级转发服务器400,形成多级级联通道3,其中N大于等于二,在传输过程中,数据请求的头部中添加第一级转发服务器300的注册信息并进行发送,第二级转发服务器(未示出)接收第一级转发服务器300所发送的数据请求,并在数据请求的头部中添加第二级转发服务器的注册信息并进行发送,直至第N级转发服务器(最后一级转发服务器)接收到数据请求,并在数据请求的头部添加第N级转发服务器的注册信息。回传过程中,数据请求的响应根据第N级转发服务器的注册信息传送至第N级转发服务器,第N级转发服务器删除第N级转发服务器的注册信息并根据数据请求响应的第N-1级转发服务器(未示出)的注册信息传输至第N-1级转发服务器,第N-1级转发服务器删除第N-1级转发服务器的注册信息并继续回传,直至第一级转发服务器300接收到数据请求的响应时,删除第一级转发服务器300的注册信息。
在本实施方式中,第一应用服务器10与所述第应用二服务器50位于两个不同的网段,这两个不同的网段不能直接进行传输控制协议连接。多级转发服务器30为开放源代码的应用服务器,且所述开放源代码的应用服务器具有双网卡或者能够同时连通这两个网段。
在本实施方式中,交互数据的服务采用TCP/IP互联协议进行JAVA对象的传输,所述交互数据的服务采用传输控制协议打开配置端口,且所述配置端口与开放源代码的应用服务器的打开端口不同。交互数据的服务 采用配置的方式预先指定打开的IP地址/服务端口及其下一级服务打开的IP地址/服务端口,提供访问所述交互数据的服务的接口,并通过所述访问交互数据的服务的借口下载占用的IP地址和端口。
请参阅图2是多级转发服务系统的多级级联通模块图。在本实施方式中,第一应用服务器10为客户端,所述第二应用服务器50为服务端,所述客户端通过多个转发服务器30发送注册信息至所述服务端,若1秒之内收到注册成功应答,则多级级联通道可用,否则此所述多级级联通道对应的连接将自动销毁。多级级联通道建立后,立即建立事件监听器60,数据处理器70与通道服务器80,其中事件监听器用于监听所述多级级联通道的连接事件600与所述多级级联通道的断开事件602,数据处理器用于处理所述多级级联通道3中传输的应用数据,通道服务器用于发送与接收所述服务端与所述客户端的数据。所述多级级联通道建立所述事件监听器60,所述数据处理器70与所述通道服务器80后,所述客户端和所述服务端立即针对所述多级级联通道3创建对应的服务线程,以发送应用数据和接收通道中传输的数据。
在本实施方式中,通过使用java.net api的ServerSocket服务器套接字功能,实现对客户端Socket连接的监听,针对每个Socket连接创建一个可用以收发数据的多级级联通道3对象,多级级联通道3对象一经创建,立即为其注册各种事件监听器,包括通道连接事件600听器、通道断开事件602、其他异常事件604。在事件监听器60注册之后需要为通道对象设置添加数据处理器70,包括应用数据处理器700和日志处理器702数据处理器70负责通道中正常传输的应用数据处理700,日志处理器702负责记录、打印应用层日志信息,以便监测系统的运行状况。最后为通道对象创建通道服务器80,其包括一对服务端线程802和客户端线程800,分别运行在服务端和客户端。
当通道断开失效时,断开事件602会被触发,基于该通道的服务端线程会被断开事件602自动销毁,而客户端线程800则会自动向服务端发起重连和注册请求;当通道重新连接成功时,连接事件600会被触发,服务端线程被重新建立,所有通讯操作变得可持续;当通道中没有数据通讯超过预定时间时,客户端服务负责维护的心跳机制会自动触发心跳命令,根据是否收到心跳应答来断定通道对象是否仍然可用,如果不可用则会强制销毁原通道对象以及基于该通道对象的服务端线程802。
在本实施方式中,为了实时监测通道中传输的数据与发生的事件,为了能异步监测多个客户端的连接,同时维护多个通道,采用了多线程的设计方法。在本发明中为每个多级级联通道3都创建了一对服务端服务线程和客户端服务线程,分别运行于服务器端和客户端程序中。其中服务器端服务线程的生存期限依赖于通道对象的生命周期,如果通道对象一经销毁,则服务端服务线程也就立即销毁。但是客户端服务线程却不依赖于通道存在,当通道对象断开或销毁时,该服务线程通过通道对象的断开监听器触发重新连接;同时该线程会通过心跳机制来监测通道的通讯状况,当监测到通道中没有数据通讯超过预定时间时,自动触发心跳命令,根据是否收到心跳应答来断定通道对象是否仍然可用,如果不可用则会强制销毁原通道对象,并发起重连/注册请求。
另外,通过上述多级级联通道3进行数据传输时,为保证应答数据正常回到请求的发起方,必须对请求命令的格式作出如下约定:
(1)必须包含注册信息集合,每经过一级转发节点,该节点相应的服务信息会自动地添加到该信息集合中;
(2)必须包含数据区,该数据区可存储大量应用数据与附件,且应用数据易被获取但不能被修改。
本发明实施例采用心跳机制保证了服务端与客户端的长连接,采用针对多级级联通道3的事件监听机制确保了数据的实时传输,采用基于通道对象的设计方法提供了易用的客户端接口,为跨多网段进行数据的传输创造了良好的通讯技术条件。
请参阅图3是多级转发服务方法的流程图,
在步骤S100中,第一应用服务器10组织交互数据的数据请求,并将组织信息添加到数据请求的头部中。
在步骤S102中,第一服务接口20接收并发送数据请求。
在步骤S104中,多个转发服务器30接收第一服务接口20发送的数据请求,并将多级转发服务器30中每个转发服务器的注册信息依次添加到数据请求的头部中,然后将数据请求进行发送。
在步骤S106中,第二服务接口40接收并转发来自多个转发服务器30中的数据请求。
在步骤S108中,第二应用服务器50接收来自第二服务接口40的数据请求,并执行数据请求并将数据请求的响应回传至第二服务接口40。
在步骤S110中,第二服务接口40还用于进行反向回传,将响应回传 至多个转发服务器30。
在步骤S112中,多个转发服务器30接收到响应后根据数据请求头部中的多个转发服务器30的注册信息依次传输,并根据所述响应中所述组织信息寻找到第一服务接口20。
在步骤S114中,第一服务接口20将数据请求的响应发送到第一应用服务器10,第一应用服务器10获取响应的数据区附件中的结果数据,并对所述结果数据进行处理。
将本实施方式应用于电力系统时,第一应用服务器10为需求侧系统,组织获取电网对象档案的请求命令,其中,该请求必须实现java.io.Serializable接口。然后调用EJB服务提供的接口,通过EJB服务接口下载转发服务的IP地址/端口配置等信息;最后根据配置信息调用接口创建与第二应用服务器50(客户端)的通道,并通过该通道发送请求响应。
第一应用服务器10接收到数据请求,将本级服务节点的注册信息(包括IP地址、端口、注册通道名等)添加到该数据请求头部注册信息集合中,然后根据本级服务配置指定的下一级服务的地址,创建本级服务到下一级服务之间的通道,并将该修改过的数据请求发送到下一级EJB转发服务,即第一级转发服务器300。
EJB服务N接收到其前一级服务转发的数据请求,将本级服务的注册信息也添加到该REQ头部中,然后根据本级服务配置的第二接口服务器40或第二应用服务器50(营销MIS系统),创建通道,并将该修改过的数据请求发送到最终的第二应用服务器50(营销MIS系统);
第二应用服务器50(营销MIS系统)接收到数据请求,根据数据请求的条件获取组织相应的结果数据,并将所得结果数据以附件形式添加到数据请求的数据区作为数据请求的响应,最后调用EJB服务接口进行反向传送;
第N级转发服务器400(EJB服务N)接收到响应RES,首先获取并删除RES头部的最近一次注册信息,然后根据注册信息找到对应的通道,发送响应RES到本级服务的上一级EJB转发服务;
第一级转发服务器300(EJB服务1)接收到响应RES,首先获取并删除RES头部的最近一次注册信息,然后根据注册信息找到对应的通道,发送响应RES到第一应用服务器10(电力需求侧系统);
第一应用服务器10(电力需求侧系统)接收数据请求的响应,获取数据区的附件数据进行处理。
请参阅图4为本发明多级转发系统及方法应用于电力部门的需求侧与营销系统网络分布结构示意图。
作为本发明一优选实施例,电力需求侧系统不仅需要从营销MIS系统获取电网对象档案等静态信息用以采集,同时销MIS系统也需要从需求侧系统获取用电数据用以完成计费、统计等业务。这两套系统之间互有数据的交换,且位于不同的网段,因此更能体现本发明的各个环节。
本发明所提供的多级转发服务系统及方法,实现了不同网段间的交互数据的服务,既能保证数据完整又能保证数据实时传输,并且增强了系统安全性而引发的网络隔离问题。本发明采用心跳机制保证了服务端与客户端的长连接,采用针对通道的事件监听机制确保了数据的实时传输,采用基于通道对象的设计方法提供了易用的客户端接口,同时为传输对象分配注册信息区和附件数据缓存区,保证了信息在多级转发服务中传递的安全性,为跨多网段进行数据的传输提供了技术支撑平台。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。