发明内容
为了解决现有技术中的问题,本发明提供了一种穿透正向物理隔离装置大数据量实时传输的方法,解决现有技术中存在的大数据量和实时性不能兼顾的问题。
本发明解决现有技术问题所采用的技术方案是:设计和制造一种穿透正向物理隔离装置大数据量实时传输的方法,包括以下步骤,(S1)内网区的需求侧系统采集数据传送给内网隔离程序;(S2)内网隔离程序与物理隔离装置建立连接并传送数据;(S3)物理隔离装置与外网区的外网隔离程序建立连接并传送数据;(S4)外网隔离程序传送数据给外网区的营销系统,并向内网区发送应答标识。
本发明进一步的改进是:所述需求侧系统和所述外网区的营销系统为安装在物理隔离装置两侧的应用系统;所述需求侧系统和内网隔离程序位于内网区;所述外网区的营销系统和外网隔离程序位于外网区。
本发明进一步的改进是:所述物理隔离装置和所述内网隔离程序以及外网隔离程序建立TCP连接;所述物理隔离装置设有SOCKET传输模块、单向TCP连接模块、反向应用层确认限制模块以及返回值模块。
本发明进一步的改进是:所述内网隔离程序作为客户端通过实时监测、智能缓存、批量处理、应用层确认的方式进行实时数据传输,其具体步骤为,(S101)需求侧系统采集数据通过TCP传送给内网隔离程序;(S102)内网隔离程序收到需求侧系统传送的数据后,直接放入智能缓存队列,接收到外网实时数据请求后组织实时状态数据也放入智能缓存队列;(S103)发送线程负责检测智能缓存队列,当检测到队列中有数据时,根据智能算法取出数据并通过隔离通道发送到外网隔离程序;如果隔离通道处于断开状态,则发送线程阻塞至隔离通道恢复连接再次发送数据;(S104)外网隔离程序收到内网传输的数据后,以单字节作出响应,同时进行解包处理,然后继续等待接收步骤(S103)发送的数据。
本发明进一步的改进是:所述内网隔离程序通过正向物理隔离装置与外网隔离程序建立TCP连接,该TCP连接被正向隔离装置割断并通过物理通道重新建立起内网到外网的虚拟连接;该装置为内网隔离程序和外网隔离程序分别配置对应的虚拟IP地址,通过两个虚拟IP地址接起被其分割的两段TCP连接。
本发明进一步的改进是:所述外网隔离程序作为服务端实时接收内网区传递过来的数据,并对接收的数据作出正确的应答,同时也可以对内网隔离程序运行中的实时状态数据作出请求,具体步骤为,(S201)外网隔离程序接收到内网隔离程序传递的数据并放入智能缓存队列;(S202)数据处理线程实时检测智能缓存队列,若检测到有数据存入,立即取出并发送到所述营销系统;同时继续等待接收步骤(S201)获取的数据;(S203)外网隔离程序接收到营销系统发出实时状态数据请求;(S204)外网隔离程序通过正向物理隔离装置发送特殊应用字节到内网隔离程序;(S205)所述外网隔离程序接收到内网隔离程序返回的实时状态数据并放入智能缓存队列。
本发明进一步的改进是:所述智能缓存队列存放数据后能够实时通知其他所有试图从该缓存中取数据的线程;所述智能缓存队列从缓存中取出数据后能够实时通知其他所有试图向缓存中存放数据的线程。
本发明进一步的改进是:所述智能缓存队列根据缓存中当前存储数据数量采取智能打包优化算法一次获取一条或多条数据,以解决从缓存中取数据的速度比存放数据的速度慢而引起的缓存数据增长的问题。
本发明进一步的改进是:所述智能缓存队列预先指定容量;所述智能缓存队列在缓存数据量达到其指定容量后继续存放数据会一直阻塞。
本发明进一步的改进是:所述需求侧系统为电力负荷管理系统,其用于对电力数据的采集;所述营销系统为电力系统档案管理、营销计费系统;所述营销系统从需求侧系统获取计费数据。
本发明的有益效果是:本发明采用实时监测、智能缓存、批量处理等优化算法实现了能够透传正向物理隔离装置的内外网隔离程序,保证了需求侧系统大量采集数据通过正向物理隔离装置到营销系统的实时有效传递,解决了现有系统间通过正向物理隔离装置传输大量数据的阻塞问题,使得营销系统能够及时完整地获取计费等数据,以准确、实时地完成其业务流程。
具体实施方式
下面结合附图对本发明作进一步说明。
如图1及图2所示,一种穿透正向物理隔离装置大数据量实时传输的方法,包括以下步骤,S1内网区的需求侧系统采集数据传送给内网隔离程序;S2内网隔离程序与物理隔离装置建立连接并传送数据;S3物理隔离装置与外网区的外网隔离程序建立连接并传送数据;S4外网隔离程序传送数据给外网区的营销系统,并向内网区发送应答标识。
所述需求侧系统和所述外网区的营销系统为安装在物理隔离装置两侧的应用系统;所述需求侧系统和内网隔离程序位于内网区;所述外网区的营销系统和外网隔离程序位于外网区。
所述物理隔离装置和所述内网隔离程序以及外网隔离程序建立TCP连接;所述物理隔离装置设有SOCKET传输模块、单向TCP连接模块、反向应用层确认限制模块以及返回值模块。
所述内网隔离程序作为客户端通过实时监测、智能缓存、批量处理、应用层确认的方式进行实时数据传输,其具体步骤为,S101需求侧系统采集数据通过TCP传送给内网隔离程序;S102内网隔离程序收到需求侧系统传送的数据后,直接放入智能缓存队列,接收到外网实时数据请求后组织实时状态数据也放入智能缓存队列;S103发送线程负责检测智能缓存队列,当检测到队列中有数据时,根据智能算法取出数据并通过隔离通道发送到外网隔离程序;如果隔离通道处于断开状态,则发送线程阻塞至隔离通道恢复连接再次发送数据;S104外网隔离程序收到内网传输的数据后,以单字节作出响应,如以单字节值0X00作出响应,表示通知内网隔离程序已收到数据,同时进行解包处理,然后继续等待接收步骤S103发送的数据。发送数据成功的标志是收到外网隔离程序的应答标志0X00,如果某数据发送失败,则重试发送此数据,以防丢失。
所述内网隔离程序通过正向物理隔离装置与外网隔离程序建立TCP连接,该TCP连接被正向隔离装置割断并通过物理通道重新建立起内网到外网的虚拟连接;该装置为内网隔离程序和外网隔离程序分别配置对应的虚拟IP地址,通过两个虚拟IP地址接起被其分割的两段TCP连接。
所述外网隔离程序作为服务端实时接收内网区传递过来的数据,并对接收的数据作出正确的应答,同时也可以对内网隔离程序运行中的实时状态数据作出请求,具体步骤为,S201外网隔离程序接收到内网隔离程序传递的数据并放入智能缓存队列;S202数据处理线程实时检测智能缓存队列,若检测到有数据存入,立即取出并发送到所述营销系统;同时继续等待接收步骤S201获取的数据;S203外网隔离程序接收到营销系统发出实时状态数据请求;S204外网隔离程序通过正向物理隔离装置发送特殊应用字节到内网隔离程序;S205所述外网隔离程序接收到内网隔离程序返回的实时状态数据并放入智能缓存队列。
内网隔离程序处理外网隔离程序实时状态请求包括以下步骤:
外网隔离程序接收到营销MIS系统的实时状态数据请求;通过隔离通道将该请求(即特殊应用字节0XFF)发送至内网隔离程序;内网隔离程序接收到外网实时数据请求后组织实时状态数据放入智能缓存队列;发送线程负责检测智能缓存队列,当检测到队列中有数据时,根据智能算法取出数据(包)并通过隔离通道发送到外网隔离程序;如果隔离通道处于断开状态,则循环重连,发送线程一直阻塞,直到隔离通道恢复连接再次发送数据。发送数据成功的标志是收到外网隔离程序的应答标志0X00。
所述智能缓存队列存放数据后能够实时通知其他所有试图从该缓存中取数据的线程;所述智能缓存队列从缓存中取出数据后能够实时通知其他所有试图向缓存中存放数据的线程。
所述智能缓存队列根据缓存中当前存储数据数量采取智能打包优化算法一次获取一条或多条数据,以解决从缓存中取数据的速度比存放数据的速度慢而引起的缓存数据增长的问题。
所述智能缓存队列预先指定容量;所述智能缓存队列在缓存数据量达到其指定容量后继续存放数据会一直阻塞。
所述需求侧系统为电力负荷管理系统,其用于对电力数据的采集;所述营销系统为电力系统档案管理、营销计费系统;所述营销系统从需求侧系统获取计费数据。
在一种实施例中,如步骤S1中需求侧系统作为客户端程序,内网隔离程序作为服务端;两者通过TCP方式传送数据。内网隔离程序接收数据后存入智能缓存队列,该队列只是存在于程序内存中,因此有容量的限制。当存入该缓存的数据量与从该缓存中取出的数据量之差超过该缓存容量时就会阻塞,直到缓存中有数据取出。例如S2步骤中的TCP连接长时间未建立,导致缓存中的数据只增不减最终达到容量限制,这时将会一直阻塞下去,直到TCP连接建立开始发送数据。
步骤S2、S3两步合起来相当于内网隔离程序透过正向物理隔离装置向外网隔离程序建立TCP连接发送数据。但是由于正向隔离装置在反向应答时的次数和间隔的限制,导致了该TCP连接的不稳定。本发明中采用了应用层心跳的方式来监测TCP的连接状态。步骤S4中外网隔离程序同营销MIS系统之间也采用TCP的方式传递数据,数据格式符合XML标准,营销MIS系统负责应用数据的解析。
一种智能缓存队列,所述队列不是采用传统的单一数据处理或打包数据处理方式,而是二者相结合的改进方式,包括以下特性:
(1)向队列中存放数据时候,其他试图从该队列中获取数据的线程能立即被唤醒并获取数据;
(2)当队列中数据达到容量限制后会一直等待;
(3)当该队列中的数据被取出时能唤醒所有试图向其中存放数据的线程;(4)当取数据的速度比存放数据的速度慢时,缓存队列的数据就会增长,能够一次取出多条数据,以平衡存取速度,实现打包发送和实时发送;
(5)取数据时如果队列中现有的数据量不超过指定值M,则一次全部取出,如果超过指定值M则一次只取出M条。
一种比较完善的监测TCP连接的方法以及断开实时重连的方法,包括以下方面:
(1)监测隔离通道TCP连接状态的方法是通过心跳的方式来维护的。正向物理隔离装置只允许0X00和0XFF两个值反向通过(实际上是正向隔离装置反向应答只能有两种状态0和1),其中应用层传输数据以0X00作为应答标志,外网实时状态数据请求以0XFF为标志,所以心跳应答也只能以0XFF表示。
(2)内网隔离程序作为心跳发起端,外网隔离程序作为心跳接收响应端。
(3)可配置的心跳周期。心跳的周期不能太长,默认设置30秒比较合理。
(4)如果客户端未能收到外网服务端的心跳应答,则销毁原来的TCP连接,重新建立新连接。
(5)外网服务端监测到隔离通道的TCP连接断开或接收到新连接,则销毁原有连接。
在本发明实施例中,抛弃了传统的单一数据处理或打包数据处理方式,应用智能缓存队列一次可取一条或多条数据的特性,减少了通过隔离通道传输数据的次数,最大程度地保证了对大量数据传输的实时性。采用心跳机制实时监测隔离通道TCP连接的状态,保证了该通道的实时可用性,以及从外网服务端主动发送请求到内网客户端的可行性。
在本发明实施例中,通过使用java.net api的ServerSocket服务器套接字功能,实现对大量客户端Socket连接的监听;针对每个Socket连接创建一个可用以收发数据的通道;针对每个通道在服务器端和客户端分别创建一个可监测、维护其状态的线程;当通道断开失效时,基于该通道的服务器端线程和客户端线程也自动销毁。采用上述多线程的方式实现了服务器端异步监听多个客户端连接、多通道并发传送数据的问题。采用智能缓存队列一次有选择的取出一条或多条数据进行打包传送数据,以减少网络传输的次数,即当内网隔离程序缓存中数据量较多的时候一次取出多条一起打包发送,当缓存中数据较少的时候一次取出一条发送。这样通过监测缓存中数据量的大小,有针对性的地减少网络交互次数,不但提高了通过隔离通道进行网络传输的实时性,而且最大程度的提高了对大量数据的处理能力。
图2示出了本发明实施例提供的穿透正向物理隔离装置进行大数据量传输的完整的实现流程,详述如下:
步骤S1中需求侧系统采用J2EE+JBOSS+EJB平台为依托,利用XML规范同内网隔离程序交换应用数据。内网隔离程序将XML标准字符串数据以对象的方式进行缓存,其缓存队列中最大能存储其初始化容量大小的数据。
步骤S2中采用java.net api的客户端Socket套接字向正向隔离装置的外网虚拟地址发起连接。
步骤S3中正向隔离装置在接收到内网隔离程序对其外网虚拟地址的连接请求后也立即向外网隔离程序发起TCP连接。其连接的方式不一定采用java.net api,可以有多种方式,但是必须遵循TCP/IP协议标准。
以上S2和S3中的两个TCP连接由正向隔离装置维护其可用性,即只有两个连接都处于连接状态时整个隔离通道才可用,否则不可用。目前市场上流行的正向隔离装置都具有比较丰富的配置功能,可以配置多种不同的任务以满足用户的需要。
步骤S4中外网隔离程序同营销MIS系统之间也以XML规范来交互应用数据,营销MIS系统负责应用数据的解析。
在S1和S4中数据交互都遵循XML规范是为了保证内外网隔离程序的可扩展性和应用的广泛性。本发明只是以需求侧系统和营销MIS系统作为例子,并不只限于此两系统间的应用。
作为本发明一优选实施例,电力需求侧系统采集数据的频率比较高,数据采集间隔可以在15分钟-1个月之间,不同的数据具有不同的采集频率。营销MIS系统需要的计费数据一月一条即可,但是居民用户较多,一般都有几十万乃至上百万,且需要在很短的时间内将如此大量的数据传送到MIS系统用以计费结算。
图3示出了本发明实施例提供的智能缓存队列的工作流程,详述如下:
程序为该缓存队列分配了一把锁,所有线程在试图操作该缓存队列之前都必须先获得这把锁。当某线程释放该锁之后,所有试图获取该锁的线程都将被唤醒,多个线程之间通过竞争的方式获取该锁。
当某线程向队列中存放数据之后,释放缓存队列持有的锁,其他试图从该队列中获取数据的线程能将被唤醒并获取数据;
当队列中数据达到容量限制后会一直等待;
当该队列中的数据被取出时能唤醒所有试图向其中存放数据的线程;
当取数据的速度比存放数据的速度慢时,缓存队列的数据就会增长,
能够一次取出多条数据,以平衡存取速度,实现打包发送和实时发送;
取数据时如果队列中现有的数据量不超过指定值M,则一次全部取出,如果超过指定值M则一次只取出M条。
本发明利用先进的通讯技术、计算机及网络技术、优化的算法,解决了各企业引入正向物理隔离装置而导致的数据不能实时共享问题。
本发明旨在为各企业提供一套高效、客观、稳定、准实时的隔离传输系统,保证各应用系统间数据交互的可持续性,并为重点解决数据安全与共享的冲突问题,提供技术支撑平台。本发明的应用对象为所有应用正向隔离装置来解决数据安全问题的企业。
综上所述,本发明提供了一种能够穿透正向物理隔离装置进行大量数据实时传输的方法,为数据安全管理比较严格的单位提供了一种既能保证数据安全又能保证数据实时传输的解决方案。采用根据数据量大小智能地获取一条或多条数据的方式进行打包传送,以减少网络交互传输的次数,进而提高数据传输的实时性和提高处理大量数据时的性能。采用心跳的方式来维护内外网隔离程序之间的TCP连接,以保证隔离通道的实时可用性,进而保证了从外网服务端向内网客户端发送请求的可行性,为外网应用程序通过正向隔离装置向内网应用程序请求实时状态数据奠定了基础。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。