面向瘦客户端的实时数据主动发布系统及方法

文档序号:7613965阅读:244来源:国知局
专利名称:面向瘦客户端的实时数据主动发布系统及方法
技术领域
本发明涉及一种面向瘦客户端的实时数据主动发布系统及方法。
背景技术
实时数据是指在生产系统中随着系统的运行而随时产生并需要即时处理的数据,对该数据处理的时效性要求较高,一般将实时数据从产生到处理的时间延迟作为衡量实时系统的重要指标之一。由于实时数据随着系统运行大量产生,因此通常在设计系统时尽量减少单条实时数据的数据量,一般控制在几百字节之内。在整个生产系统环境中,产生实时数据的模块称为实时数据生产方,处理该实时数据的模块称为实时数据消费方。
实时系统在各个行业中的应用日趋广泛,同时行业的强地域分布性又使得这些实时系统还需要具备分布性的特点。在这种情况下,实时数据生产方和实时数据消费方分布于地理上的不同地点,两者异步运行,如何将实时系统所赖以运转的实时数据及时准确地从数据生产方发布到数据消费方,称为系统能否满足实时性要求的一个关键和重要度量标准。
目前实时数据的传输方式主要有两种,基于C/S(客户端/服务器)结构的主动发布和基于B/S(浏览器/服务器)结构即面向瘦客户端被动发布两种。其中,主动发布方式实时性较高,由数据生产方在实时数据产生后立即主动发布给数据消费方,双方的数据延迟主要为数据的传输延迟,此类延迟在分布式系统无可避免;而被动发送方式的实时性较低,数据生产方在实时数据产生后首先缓存,由数据消费方定期的向数据生产方请求数据(刷新),这种方式造成的数据延迟,除了分布式系统固有的网络延迟,还要平均附加数据消费方相邻两次请求的时间间隔的1/2。另一方面,基于C/S(客户端/服务器)结构的系统需要单独开发、部署并维护专用的客户端,而B/S(浏览器/服务器)系统其利用普通Web浏览器作为客户端,比较通用和方便。

发明内容
本发明的目的在于将上述两种目前普遍使用的方法相结合,提出一种面向瘦客户端的实时数据主动发布系统及方法,即面向浏览器的实时数据主动发送方式。
为达上述目的,本发明采用如下技术方案一种面向瘦客户端的实时数据主动发布系统,包括实时数据生产方、实时数据消费方和实时数据转发模块,所述实时数据转发模块包括实时数据接收模块、实时数据发送模块、数据消费方注册模块,所述实时数据接收模块接收数据生产方所生成数据,所述数据消费方注册模接受实时数据消费方的注册和注销,所述实时数据发送模块根据数据消费方注册模块的信息,将数据发向各个当前已经注册的数据消费方。
一种面向瘦客户端的实时数据主动发布方法,采用上述面向瘦客户端的实时数据主动发布系统,包括以下步骤,1)数据消费方向数据转发模块注册及注销步骤;2)实时数据接收模块接收实时数据生产方产生的实时数据;3)当为注册请求时,实时数据发送模块将实时数据发送至该实时数据消费方;当为注销请求时,将该数据消费方的注册信息清除,停止向该数据消费方发送实时数据。
本发明技术方案使得实时数据的发送即具有主动发送的高实时性和低延迟性,又具备B/S(浏览器/服务器)结构系统的方便性和通用性。且瘦客户端便于系统开发、部署和维护。支持同时多个实时数据消费方,同时实时数据消费方数量对实时数据生产方不产生影响,并可以在系统运行过程中动态变化。通过Internet和HTTP协议,可以使实时数据的生产方和消费方不受地域限制。
以下结合附图及实施例进一步说明本发明。


图1面向瘦客户端的实时数据主动发布系统结构示意图;图2数据消费方向数据转发模块注册及注销的技术流程图;图3数据生产方向数据转发模块发送实时数据的技术流程图;图4数据转发模块向数据消费方发送实时数据的技术流程图;图5数据监视服务流程。
具体实施例方式
如图1所示,一种面向瘦客户端的实时数据主动发布系统,包括实时数据生产方、实时数据消费方和实时数据转发模块,所述实时数据转发模块包括实时数据接收模块、实时数据发送模块、数据消费方注册模块,所述实时数据接收模块接收数据生产方所生成数据,所述数据消费方注册模接受实时数据消费方的注册和注销,所述实时数据发送模块根据数据消费方注册模块的信息,将数据发向各个当前已经注册的数据消费方。
其中,实时数据接收模块负责从实时数据生产方接收实时数据,以便发送给数据消费方。实时数据生产方向该功能发送数据时可以即时发送,即数据产生后立即发送,不需要对数据进行缓冲。
数据消费方注册模块由实时数据消费方在需要接收实时数据时,首先向实时数据转发模块的数据消费方注册模块进行注册,以使得实时数据转发模块将后续收到的实时数据向该数据消费方发送。每个数据消费方在其生命期内只需向实时数据转发模块注册一次,即可不断接收后续所有的实时数据。亦可实现实时数据消费方向实时数据转发模块的注销功能,即向转发模块提出注销请求,以便转发模块不再将后续的实时数据发往该数据消费方。由于本系统所针对的是瘦客户端即Web浏览器,在浏览器被关闭或者用户点了停止按钮后,该数据消费端与实时数据转发模块间的HTTP连接关闭,实时数据转发模块在检测到该情况后,自动将该数据消费方的注册信息清除,也就不会再将后续的实时数据发往该数据消费方。
实时数据发送根据数据消费方的注册信息,在数据接收功能接收到数据生产方发送的实时数据后,将数据发向各个当前已经注册的数据消费方。如果在向某个数据发送方发送数据的过程出现错误,则认为该数据消费方已经关闭,使数据消费方注册信息清除,以便不再将后续信息发向该数据消费方。
一种面向瘦客户端的实时数据主动发布方法,采用上述面向瘦客户端的实时数据主动发布系统,包括以下步骤,1.数据消费方(浏览器)启动后,向数据转发模块对应URL地址发送普通HTTP请求。
可以附带URL参数,以指明期望接收实时数据的详细信息;2.数据发送模块中的数据消费方注册功能为该数据消费方创建一个独立的线程,该线程将在数据消费方的生命期内,负责其注册,数据发送和注销的工作;3.该线程创建一个专属于该数据消费方的管道(PIPE),用于将实时数据的传输;4.线程将管道的输入端互斥加入到系统全局的管道链表中。互斥是指在该操作进行过程中,不允许其它线程对该管道链表进行插入和删除等操作;5.线程保留管道的输出端,并进入等待状态直到管道的输出端有数据输出;6.当线程在向其对应的数据消费方发送数据过程中出现错误时,认为该数据消费方已经关闭不再需要实时数据。进入注销过程;
7.以互斥的方式将对应的管道输入端自系统全局的管道链表中删除。互斥是指在该操作进行过程中,不允许其它线程对该管道链表进行插入和删除等操作;8.将管道析构,释放其所占资源;9.线程本身退出,针对该数据消费方的处理至此结束;10.收到数据生产方发来的实时数据;11.对全局管道链表中现有的所有管道数据端,发送本次收到的实时数据;12.向所有管道输入端发送完成后,进入等待状态,等待后续实时数据;13.管道中有新的实时数据;14.从管道数出端读取新的实时数据;15.通过之前已建立并一直保持的HTTP连接,将该实时数据发送到实时数据消费方;16.检查在上一步发送过程中是否发生错误,如果有错误发生,认为该消费方已关闭,通知消费方注册功能进入注销过程;17.如果发送没有发生错误,进入等待状态,等待管道中新的数据。
其中,步骤1至5对应图2中的注册过程。当线程在向其对应的数据消费方发送数据过程中出现错误或有中止请求时,则认为该数据消费方已经关闭不再需要实时数据,进入步骤6至9,其对应图2中所示的注销过程。
步骤10至12为实时数据接收模块接收实时数据生产方产生的实时数据过程;其如图3所示。
步骤10至12为数据转发模块向数据消费方发送实时数据的过程一,如图4所示。
上述实施例应用于上海城市交通信息服务网格项目中,通过Servlet(Java服务器应用程序)技术,实现了车辆实时GPS数据的监控服务模块。客户端在请求GPS数据监视服务时不需要输入任何参数,且该服务的结果的返回过程具有持续性,即模块自接收到某客户端请求时起,不断的向该客户端发送新接收到的GPS数据,直到该客户端结束此次会话为止。
传统Web应用中客户端与服务器端的会话一般为“请求—响应”(Request-Response)模式,即客户端发送一次请求,服务器端处理请求后将结果一次性发回。而在该GPS数据监视模块中,需要服务器端在客户端一次请求之后持续不断的发回GPS数据,因此需要对传统的会话模式进行扩展以适应这一需求。具体实现如图5所示。
为了达到这一应用要求,本模块中服务器端(数据生产方)一直保持着对客户端的响应连接,每当接收到新的GPS数据时,将该数据发回客户端(数据消费方),使客户端可以持续不断的显示出系统接收到的GPS数据,而不需反复请求。同时,实现过程中也考虑到多客户端的并发请求,可以同时向多个请求GPS数据监视服务的客户端发送最新的GPS数据。其工作流程如图5所示,具体说明如下(1)服务器端为每个GPS数据监视服务请求生成一个数据发回线程和一个单向数据管道,并将管道的入口存放于一个链表中。当有新的请求时,将其对应的管道入口加入该链表中,对应于实施例中的第1-5步;当有客户端结束服务会话,不再需要向其发回GPS数据时,则将其对应的管道入口从链表中删除,对应于实施例中的第6-9步;(2)收到新的GPS数据,对应于实施例中的第10步;(3)向链表中的每一个管道入口写入该数据,对应于实施例中的第11、12步;(4)对应于每个客户端的GPS数据发回线程,等待接收对应管道中新的GPS数据,直到管道中发来新的数据。对应于实施中的第13步;(5)将该数据从管道中取出后发回客户端,使数据及时显示在客户端。若在将数据发回客户端的过程中发生错误,则认为该客户端已关闭,不再需要接收实时数据,将其对应管道的入口自链表中删除。对应于实施例中的第14-17步。
上述对管道入口链表的各项操作,包括加入、删除及向各管道发送数据,均使用Java中的同步机制,保证在多线程环境下的链表中数据的一致性。
权利要求
1.一种面向瘦客户端的实时数据主动发布系统,包括实时数据生产方和实时数据消费方,其特征在于还包括一实时数据转发模块,所述实时数据转发模块包括实时数据接收模块、实时数据发送模块、数据消费方注册模块,所述实时数据接收模块接收数据生产方所生成数据,所述数据消费方注册模接受实时数据消费方的注册和注销,所述实时数据发送模块根据数据消费方注册模块的信息,将数据发向各个当前已经注册的数据消费方。
2.一种面向瘦客户端的实时数据主动发布方法,采用权利要求1所述面向瘦客户端的实时数据主动发布系统,其特征在于包括以下步骤,1)数据消费方向数据转发模块注册及注销步骤;2)实时数据接收模块接收实时数据生产方产生的实时数据;3)当为注册请求时,实时数据发送模块将实时数据发送至该实时数据消费方;当为注销请求时,将该数据消费方的注册信息清除,停止向该数据消费方发送实时数据。
3.根据权利要求2所述的面向瘦客户端的实时数据主动发布方法,其特征在于所述步骤1)注册包括以下步骤a、数据消费方启动后,向数据转发模块对应URL地址发送普通HTTP请求;b、数据发送模块中的数据消费方注册模块为该数据消费方创建一个独立的线程,该c、线程将在数据消费方的生命期内,负责其注册、数据发送和注销的工作;d、该线程创建一个专属于该数据消费方的管道,用于将实时数据的传输;e、线程将管道的输入端互斥加入到系统全局的管道链表中;f、线程保留管道的输出端,并进入等待状态直到管道的输出端有数据输出。
4.根据权利要求3所述的面向瘦客户端的实时数据主动发布方法,其特征在于当线程在向其对应的数据消费方发送数据过程中出现错误或有中止请求时,则认为该数据消费方已经关闭不再需要实时数据,进入所述步骤1)的注销过程,具体包括以下步骤a、以互斥的方式将对应的管道输入端自系统全局的管道链表中删除;b、将管道析构,释放其所占资源;c、线程本身退出,结束针对该数据消费方的处理。
5.据权利要求3或4所述的面向瘦客户端的实时数据主动发布方法,其特征在于所述步骤2)包括以下步骤a、收到数据生产方发来的实时数据;b、对全局管道链表中现有的所有管道数据端,发送本次收到的实时数据;c、向所有管道输入端发送完成后,进入等待状态,等待后续实时数据。
6.据权利要求3或4所述的面向瘦客户端的实时数据主动发布方法,其特征在于所述步骤3)中实时数据发送模块将实时数据发送至该实时数据消费方包括以下步骤a、管道中有新的实时数据;b、从管道数出端读取新的实时数据;c、将该实时数据发送到实时数据消费方;d、检查在上一步发送过程中是否发生错误,如果有错误发生,认为该消费方已关闭,通知消费方注册模块进入注销过程;e、如果发送没有发生错误,进入等待状态,等待管道中新的数据。
全文摘要
一种面向瘦客户端的实时数据主动发布系统及方法,包括实时数据生产方、实时数据消费方和实时数据转发模块,所述实时数据转发模块包括实时数据接收模块、实时数据发送模块、数据消费方注册模块,所述实时数据接收模块接收数据生产方所生成数据,所述数据消费方注册模接受实时数据消费方的注册和注销,所述实时数据发送模块根据数据消费方注册模块的信息,将数据发向各个当前已经注册的数据消费方。本发明技术方案使得实时数据的发送即具有主动发送的高实时性和低延迟性,又具备B/S(浏览器/服务器)结构系统的方便性和通用性。且瘦客户端便于系统开发、部署和维护。
文档编号H04L12/54GK1953444SQ20051003059
公开日2007年4月25日 申请日期2005年10月17日 优先权日2005年10月17日
发明者蒋昌俊, 曾国荪, 陈闳中, 苗夺谦, 阎春钢, 岳峰, 章昭辉, 方钰 申请人:同济大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1