一种虚拟实验平台的数据通信方法

文档序号:7704717阅读:169来源:国知局
专利名称:一种虚拟实验平台的数据通信方法
技术领域
本发明属于计算机应用领域,针对计算机虚拟实验开发和应用,主要实现了一种在虚拟实验环境上开发虚拟实验程序、进行实验数据统一通信的方法。该方法将不同学科领域、不同类型的虚拟实验程序和数据流进行整合统一,为虚拟实验的开发和应用提供了良好的技术支撑。
背景技术
虚拟实验平台(又称虚拟实验环境)是为虚拟实验程序提供载入、管理、运行和批改等等功能的软件基础设施,虚拟实验平台由多种服务组合而成,具体说来包括应用服务、计算服务和存储服务。应用服务主要实现虚拟实验程序的载入和管理功能,计算服务对实验进行仿真,形成实验结果,存储服务则提供实验过程中的存储支持。虚拟实验程序通过使用这三种服务,进行各种实验操作,生成实验结果,完成实验任务。为了使三种服务能够相互配合,共同为虚拟实验程序提供完整的、通用的功能和服务,需要在三种服务和虚拟实验程序之间建立一种可行、高效且实用的通信方法。虚拟实验平台上的三种服务都构建在hternet上,用户使用web浏览器登录虚拟实验平台,打开虚拟实验程序,进行实验操作。传统的Web数据通信方法主要是基于HTTP 协议,采用HTTP同步提交或者异步提交的方式,实现和web服务器的通信。但是这种通信方法有这样一些缺陷首先,HTTP协议是一种请求——网应”类型的协议,一次数据请求完成,连接就会终止。服务器无法保持当前用户连接的状态,但是对于虚拟实验来说,实验仿真计算结果的实时性非常重要,当计算服务更新实验仿真计算结果时,由于计算服务没有用户状态信息,无法将实验仿真计算结果数据及时的更新给用户web浏览器。对用户来说, 实验运行缓慢,实验效果不佳。其次,HTTP协议是浏览器默认的标准传输协议,其数据传输过程由浏览器进行控制,虚拟实验平台无法对传输的数据进行中间处理以及控制操作,灵活性不足。虚拟实验平台中的计算服务,由于是计算密集型服务,常采用服务器集群的方式统一对外提供服务,服务由多个计算机节点组成,采用星形结构进行连接,即一个中心节点和若干个子节点,中心节点对外提供服务,接收数据,并将数据转发到子节点。传统的通信方法将各种数据服务请求都发送中心节点,由中心节点负责接收这些数据,对数据进行编码解码最后将数据发送到合适的子节点上进行仿真计算。这种通信方式的缺点就是存在中心节点性能瓶颈,由于中心节点需要进行大量数据处理操作,当大量用户并发访问计算服务时,由于计算机硬件的限制,很快就会超出中心节点的服务能力,此时会有大量的数据请求在中心节点堆积,从而使得中心节点的压力急剧上升,大量的数据服务请求被中心节点延迟或者抛弃,整个计算服务的服务能力下降。

发明内容
本发明的目的在于提供一种虚拟实验平台的数据通信方法,该数据通信方法通过采用统一的数据接口,能够保证虚拟实验的数据实时传输。本发明提供了一种虚拟实验平台的数据通信方法,包括以下步骤(1)加载虚拟实验程序及其配置,创建虚拟实验程序到服务端的连接;(2)将虚拟实验程序的请求经过封装和处理后,经所述连接发送到服务端;(3)服务端接收请求并进行处理,将处理结果经所述连接发送到虚拟实验程序;(4)反复执行步骤( 和步骤(3),直至虚拟实验程序终止。进一步的,所述服务端为应用服务端、计算服务端或者存储服务端中的至少一种。进一步的,所述计算服务端与虚拟实验程序之间创建的连接为TCP连接或者TCP 虚拟连接。进一步的,所述TCP虚拟连接创建的方法为(a)虚拟实验程序建立与计算服务端的中心节点之间的TCP连接;(b)虚拟实验程序通过所述TCP连接将计算标识发送到所述中心节点;(c)所述中心节点接收所述计算标识,并将与该计算标识匹配的计算服务端的子节点信息发送到虚拟实验程序;(d)虚拟实验程序根据所述子节点信息,建立与计算服务端的子节点之间的TCP 连接,该TCP连接即为TCP虚拟连接。进一步的,在步骤C3)之后,还执行下述步骤(A)计算所述服务端向虚拟实验程序发送数据的第一瞬时速率;(B)计算虚拟实验程序处理数据的第二瞬时速率;(C)如果第一瞬时速率大于第二瞬时速率,通知计算服务端增加实验仿真单位时间;否则,不做任何操作。本发明所述的数据通信方法通过采用统一的数据接口,为虚拟实验程序提供了一种标准化、规范化的数据流程,使得各个学科开发的虚拟实验程序能够无缝的集成到端平台。针对各种不同的数据传输量、传输速率的通信要求;通过使用灵活的数据通信方式,能够满足不同学科的虚拟实验程序对数据传输的要求,满足了计算机、电工电子、机械工程、 控制工程等学科的虚拟实验程序的数据通信要求。本发明所述的数据通信方法针对计算服务中心节点的压力问题,通过采用数据传输流量控制机制,控制虚拟实验程序发送和接收数据的频率,避免数据中心节点吞吐量过大,造成数据拥塞。通过采用TCP虚拟连接,在虚拟实验程序和计算服务子节点建立直接连接,一定程度上绕过中心节点进行数据传输,减轻了中心节点的负载,提高了计算服务的服务能力。


图1为虚拟实验平台的总体结构图;图2为本发明所述数据通信方法的流程图;图3为TCP虚拟连接的建立流程图;图4为数据发送之前的处理流程图;图5为流量控制及数据接收过程流程图。
具体实施例方式下面结合附图对本发明作详细的说明。本发明为了连接虚拟实验程序、应用服务、计算服务和存储服务,使四者能够紧密协作,通过统一的数据接口、灵活的数据通信方式以及数据传输流量控制等机制为虚拟实验程序的各种操作提供了支撑良好的环境。统一的数据接口是指本发明对所有学科的虚拟实验提供了统一的数据传输通道,即虚拟实验程序到服务端的连接。灵活的数据通信方式是指根据不同虚拟实验程序对数据大小、传输时间的要求,提出了三种面向不同服务的通信连接方式。如图1所示,本发明所述的虚拟实验平台的服务端包括应用服务端、计算服务端和存储服务端,虚拟实验程序运行在虚拟实验平台之上,虚拟实验程序和三种服务之间通过数据通信模块进行交互。数据通信模块就是本发明所述的数据通信方法的具体表现形式。本发明所述的数据通信方法,如图2所示,包括如下步骤(1)加载虚拟实验程序及其配置,创建虚拟实验程序到服务端的连接。具体的讲, 包括以下子步骤(1. 1)加载虚拟实验程序及其配置。虚拟实验平台根据虚拟实验程序的URL进行下载虚拟实验程序。下载完成后,开始加载虚拟实验程序的配置。配置信息由虚拟实验平台根据当前加载的虚拟实验程序预先生成。配置信息的主要内容包括应用服务、存储服务和计算服务的地址、虚拟实验程序的编号以及虚拟实验程序的文件类型。配置信息以XML 格式的形式进行组织,放置在虚拟实验平台的固定位置。(1. 2)创建到服务端的连接。根据1. 1步骤中获取的虚拟实验程序的配置信息,创建到相应服务的通信连接。所有的虚拟实验程序都是需要应用服务和存储服务支撑的,因为应用服务的一个重要功能就是对虚拟实验程序进行配置和管理,而存储服务则用于存储实验状态信息和实验最终结果。因此,必须创建面向应用服务和存储服务的连接,由于虚拟实验平台运行在web浏览器上,所以创建的连接类型可以是ffeb Service连接,或者是HTTP 连接。根据1.1中加载的应用服务和存储服务的地址,会创建若干个连接对象集合。对应用服务,根据应用服务提供的不同功能,创建匹配相应功能的连接对象,例如对用于获取当前实验描述信息的应用服务,创建实验描述功能连接对象。对于存储服务,同样根据存储服务提供的功能,创建若干连接对象。所不同于应用服务的是,存储服务的连接对象是Web Service对象的格式,该对象通过Wfeb Service描述文档(WSDL)生成。计算服务对于小部分演示性的虚拟实验程序来说,不是必须的,但是对于操作性强、重用性高的虚拟实验程序来说,计算服务是必要的。计算服务由于对数据的实时性要求高,而且需要虚拟实验程序和服务端共同维护连接的状态,因此需要创建TCP连接。TCP连接的创建可以采用传统的方法,但是为了减轻计算服务中心节点的压力,可以采用TCP虚拟连接的方法,在逻辑上建立虚拟实验程序和计算服务内部子节点的一种直接连接。TCP虚拟连接方法的建立过程如下, 如图3所示(1.2. 1)根据1. 1中获取的计算服务地址(包括IP地址和端口号),创建传统的 TCP连接。(1. 2. 2)TCP连接建立后,根据当前已加载的虚拟实验程序对计算服务的要求,生
5成一个字符串的标识,计算标识表征了虚拟实验程序所使用的具体计算程序的类型。计算标识通过1. 2. 1中建立的TCP连接发送到计算服务端。计算服务端会自动维护计算标识和具体部署有对应计算程序的子节点的映射关系,根据传递的标识,查找映射关系表,确定和标识匹配的计算服务子节点,并将该计算服务子节点的描述返网给虚拟实验程序。同时,中心节点会作为客户端,建立和计算服务子节点的TCP连接,并将生成的连接对象和计算标识绑定。(1. 2. 3)虚拟实验程序解析计算服务发回的子节点描述信息,包括子节点的标识和映射端口。然后根据这两个信息建立和计算服务子节点的TCP连接。实际上,再次建立的TCP连接还是在计算服务的中心节点和虚拟实验程序之间,但是此时中心节点会根据计算标识,将1. 2. 3步骤中建立的连接上的所有数据请求都通过1. 2. 2中建立的中心节点和计算服务子节点的TCP连接直接转发到计算服务的子节点,避免数据在中心节点上的编码转换。解压缩以及数据校验等操作,减少数据在中心节点的逗留,从而减轻中心节点数据处理的压力。1. 2. 3中的TCP连接如果建立成功,1. 2. 2中建立的连接会被关闭,后续的数据传输采用1. 2. 3中建立的连接。如果1. 2. 3中的TCP连接建立失败,后续的数据传输就会采用1.2. 2中建立的连接。(1. 3)创建会话。各种面向服务的连接建立成功后,会为当前实验创建一个会话, 该会话相当于一个对象池,全程管理虚拟实验过程中的数据通信过程。会话包括会话标识、 实验的基本描述、以及各种连接的集合。会话标识和实验的基本描述信息会在后续数据通信过程中用于生成各种数据传输命令。(2)等待虚拟实验程序发起数据通信请求,将虚拟实验程序的请求经所述连接发送到服务端。具体的讲,首先按照预先设定的格式将虚拟实验程序的请求进行封装,即根据请求的服务类型,按照服务所要求的格式,封装请求的数据,封装的格式一般是会话标识、 实验基本描述(从1.3步中创建的会话中获取)、请求数据的长度以及请求的数据。封装后的数据以字符串的形式呈现,形成通信过程中一个基本的发送单位。每一个封装后的数据包都会根据请求服务的不同,绑定一个从会话中获取的对应的连接对象,如果是应用服务请求,则绑定的是应用服务的连接;如果是计算服务请求,则绑定的是计算服务的连接等等。之后,将封装形成的数据包由绑定的连接对象进行发送。在发送数据包之前,根据不同的服务类型,还有一些预处理的工作需要完成,如图4所示,详述如下(2. 1)如果数据包是应用服务请求或者存储服务请求,字符串格式的数据包首先会进行编码转换,将虚拟实验程序或者客户端浏览器的编码统一转换成UTF-8的编码格式,保证应用服务和存储服务在进行数据解码时不会出错。然后将编码后的数据包通过连接对象发送到应用服务端或者存储服务端。(2. 2)如果数据包是计算服务请求,则除了进行2. 1步中所述的编码转换外,还会进行数据的压缩处理。因为对计算服务请求,发送的是虚拟实验场景XML数据以及虚拟实验参数,数据量大(最多达到400KB),而且采用XML传输,数据的冗余比较多。进行数据压缩后,可以明显降低数据量(压缩倍数达到25倍),加快传输速度。数据压缩主要采用的是 ZLIB函数库的DEFLATE算法。(2. 3)如果数据包是计算服务请求,在2. 2步对数据进行压缩后,产生的是二进制格式的数据,为保证计算服务端能对数据进行解压缩,需要进行数据校验,生成校验位,置于二进制格式数据的末尾。这样计算服务进行解压之前,需要通过校验位判定数据包是否正确,如果正确,则进行数据解压操作,如果错误,则丢弃该数据。数据校验算法采用的是奇偶校验。(2. 4) 2. 3步骤中生成的二进制格式数据包,通过TCP连接或者TCP虚拟连接,发送到提供对应计算服务的子节点。(3)服务端接收请求数据包并进行处理后,将处理结果经所述连接发送到虚拟实验程序。具体的讲,服务端在接收数据请求后,对数据进行处理并生成处理结果,处理结果会通过连接对象建立的通信链路传递到虚拟实验平台,平台会对结果数据包进行数据校验、解压缩、编码转换,最后通过统一数据接口将数据传递给虚拟实验程序,完成整个数据通信过程。对于计算服务生成的结果数据,由于结果数据的数据量大,数据产生频率很高, 很可能数据产生的速率大于虚拟实验程序解析处理数据的速率,这样会造成虚拟实验程序的计算结果数据包被丢弃,影响实验效果,甚至引起虚拟实验程序崩溃。因此,针对计算服务产生的结果数据,还需要进行流量控制处理。数据的处理接收过程以及流量控制的具体方法如下(如图5所示)(3. 1)计算服务产生的结果数据,连接对象会首先将其放入数据缓存中,每一个结果数据包的头部都会有一个包的长度信息,通过包长度,判断连接对象是否已经将一个结果数据包接收完整。如果没有完整,则连接对象继续等待接收,直到数据量达到包长度。同时,数据缓存会根据它接收到的结果数据包的大小和两个结果数据包接收的时间间隔,计算出结果数据到达的瞬时速率。所谓结果数据到达的瞬时速率是指单位时间内到达虚拟实验程序的数据量,单位是字节。(3. 2)通过3. 1步中接收到完整的数据包后,执行数据奇偶校验,判断数据包是否被修改,如果没有修改,则将数据进行解压缩,然后编码转换,最后提取出结果数据通过连接通道发送给虚拟实验程序。如果数据校验出错,则丢弃该数据包。虚拟实验程序接收到结果数据后,对结果进行解析,渲染形成实验现象。与此同时,虚拟实验程序会对结果解析和渲染实验现象的时间进行计时,得到结果数据的处理时间,最后根据当前解析的结果数据量,计算出数据的瞬时处理速率。瞬时处理速率即单位时间内,虚拟实验程序进行解析渲染的数据量,单位是字节。(3. 3)将3. 2步骤中生成的数据瞬时处理速率与3. 1中产生的数据瞬时到达速率进行比较,如果数据的瞬时处理速率大于数据的瞬时到达速率,则不进行任何操作。如果数据的瞬时处理速率小于数据的瞬时到达速率,则进行流量控制。平台会创建一个小的、特殊的流量控制数据包,并通过TCP虚拟连接发送给计算服务。特殊的数据包内容包括会话标识和实验仿真单位时间。以XML格式组织。会话标识确定哪一个虚拟实验程序需要进行流量控制,而实验仿真单位时间决定了计算服务多长时间发回一个结果数据包,也就是计算服务端发送结果数据包的速率。当需要流量控制时,特殊包中的实验仿真单位时间会是前一个数据包的实验仿真单位时间的两倍,这样,数据的瞬时到达速率就会变为原来的二分之一,如果此时,数据的到达速率仍大于数据的处理速率,则会继续发送进行流量控制的特殊数据包,实验仿真单位时间再次加倍,直到数据的瞬时处理速率大于数据瞬时到达速率, 保证数据不会被丢弃。(4)反复执行步骤(2)和步骤(3),直至虚拟实验程序终止。
7
本发明不仅局限于上述具体实施方式
,本领域一般技术人员根据本发明公开的内容,可以采用其它多种具体实施方式
实施本发明,因此,凡是采用本发明的设计结构和思路,做一些简单的变化或更改的设计,都落入本发明保护的范围。
权利要求
1.一种虚拟实验平台的数据通信方法,包括以下步骤(1)加载虚拟实验程序及其配置,创建虚拟实验程序到服务端的连接;(2)将虚拟实验程序的请求经过封装和处理后,经所述连接发送到服务端;(3)服务端接收请求并进行处理,将处理结果经所述连接发送到虚拟实验程序;(4)反复执行步骤( 和步骤(3),直至虚拟实验程序终止。
2.根据权利要求1所述的数据通信方法,其特征在于,所述服务端为应用服务端、计算服务端或者存储服务端中的至少一种。
3.根据权利要求2所述的数据通信方法,其特征在于,所述计算服务端与虚拟实验程序之间创建的连接为TCP连接或者TCP虚拟连接。
4.根据权利要求3所述的数据通信方法,其特征在于,所述TCP虚拟连接创建的方法为;(a)虚拟实验程序建立与计算服务端的中心节点之间的TCP连接;(b)虚拟实验程序通过所述TCP连接将计算标识发送到所述中心节点;(c)所述中心节点接收所述计算标识,并将与该计算标识匹配的计算服务端的子节点信息发送到虚拟实验程序;(d)虚拟实验程序根据所述子节点信息,建立与计算服务端的子节点之间的TCP连接, 该TCP连接即为TCP虚拟连接。
5.根据权利要求1所述的数据通信方法,其特征在于,在步骤C3)之后,还执行下述步骤(A)计算所述服务端向虚拟实验程序发送数据的第一瞬时速率;(B)计算虚拟实验程序处理数据的第二瞬时速率;(C)如果第一瞬时速率大于第二瞬时速率,通知计算服务端增加实验仿真单位时间; 否则,不做任何操作。
全文摘要
本发明提供了一种虚拟实验平台的数据通信方法,该数据通信方法首先,加载虚拟实验程序,创建虚拟实验程序到服务端的连接;之后,将虚拟实验程序的请求经所述连接发送到服务端;最后,服务端接收请求并进行处理,将处理结果经所述连接发送到虚拟实验程序。所述服务端为应用服务端、计算服务端或存储服务端中的至少一个。该数据通信方法通过采用统一的数据接口,能够保证虚拟实验的数据实时传输。同时本发明中所述计算服务端与虚拟实验程序之间创建的连接为TCP连接或者TCP虚拟连接,并且采用数据传输流量控制机制,减轻了中心节点的负载,提高了计算服务的服务能力。
文档编号H04L29/06GK102231738SQ20111017284
公开日2011年11月2日 申请日期2011年6月24日 优先权日2011年6月24日
发明者刘超, 张磊, 王曙光, 童围, 董浩, 蒋文斌, 金海 , 马潇 申请人:华中科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1