一种基于观察者模式的实时数据库实时数据发布方法

文档序号:9506288阅读:579来源:国知局
一种基于观察者模式的实时数据库实时数据发布方法
【技术领域】
[0001]本发明涉及一种基于观察者模式的实时数据库实时数据发布方法,属于计算机软件技术领域。
【背景技术】
[0002]实时数据库(RTDB — Real Time DataBase)是数据库系统发展的一个分支,是数据库技术结合实时处理技术产生的。实时数据库是电力,能源,化工等工业控制场合所广泛采用的实时控制系统,数据采集与监视系统等系统的核心部分,主要用于采集并管理来自各种采集设备的生产过程数据,并提供统一的实时数据管理平台,通常做为企业信息化管理系统中的核心和中枢,是企业实现从设备自动控制到高层计划管理的桥梁,承担着承上启下的作用。
[0003]实时数据库最重要的特性即是实时性,实时性包含数据的实时性和事务的实时性。数据的实时性主要和现场采集装置,实时数据采集驱动模块的速度、效率有关。事务实时性是指实时数据库对事务处理的实时能力,包括响应客户端访问请求的速度,向客户端发布实时数据的速度等。其他性能主要包括支持访问客户端数量,即并发访问性能;对系统资源的占用,即通讯的效率等方面。
[0004]现有技术中客户端实时获得快速变化的实时数据,需要频繁访问实时数据库而占用较多服务器软硬件系统资源,加重系统通讯网络负担。

【发明内容】

[0005]为了解决上述技术问题,本发明提供了一种基于观察者模式的实时数据库实时数据发布方法。
[0006]为了达到上述目的,本发明所采用的技术方案是:
[0007]—种基于观察者模式的实时数据库实时数据发布方法,基于服务器-客户端的架构,采用2级订阅-发布机制,在服务器和客户端分别内置订阅-发布模块;
[0008]客户端的订阅-发布模块:负责管理客户端应用程序的订阅请求,可注册客户端应用程序的订阅请求,在收到服务器的实时数据发布后,向注册的应用程序发布其订阅的实时数据;
[0009]服务器的订阅-发布模块:负责管理客户端的订阅请求,可注册客户端的订阅请求,在实时数据满足发布条件时,向注册的客户端发布其订阅的实时数据;
[0010]实时数据库实时数据发布过程为,
[0011]1)客户端应用程序向客户端的订阅-发布模块订阅实时数据;
[0012]2)客户端的订阅-发布模块接收并注册客户端应用程序的订阅请求,并向服务器订阅实时数据;
[0013]3)服务器的订阅-发布模块接收并注册客户端的订阅请求;
[0014]4)在实时数据满足发布条件时,向订阅该实时数据的客户端发布;
[0015]5)客户端的订阅-发布模块接收到服务器发布的实时数据时,向客户端应用程序发布订阅的实时数据。
[0016]客户端的订阅-发布模块通过散列表和链表数据结构管理订阅请求,其中,散列表以被订阅数据的标签名为键值,以订阅该数据的客户端应用程序句柄链表为值;
[0017]服务器的订阅-发布模块通过散列表和链表数据结构管理订阅请求,其中,散列表以被订阅数据的标签名为键值,以订阅该数据的客户端信息链表为值。
[0018]客户端的订阅-发布模块接受到客户端应用程序的订阅请求时,在散列表中查找该数据是否被订阅,如是则获得该数据对应的应用程序句柄链表,如果链表中不存在该应用程序句柄,则将新的订阅请求的应用程序句柄加入到链表末端;如果该数据未被订阅,则新建应用程序句柄链表,并在链表中加入该订阅应用程序句柄,在散列表中新建被订阅数据的标签名和该链表的映射关系,同时向服务器发送订阅请求;
[0019]服务器的订阅-发布模块在接收到客户端的订阅请求时,在散列表中查找该数据是否被订阅,如是则获得该数据所对应的客户端信息链表;如果链表中不存在该客户端信息,则将新的订阅请求客户端信息加入到链表末端;如果该数据没有被订阅,则需新建客户端信息链表,并加入该客户端信息,在散列表中新建被订阅数据的标签名和该链表的映射关系Ο
[0020]客户端的订阅-发布模块还可注销客户端应用程序的订阅请求,服务器的订阅-发布模块还可注销客户端的订阅请求;
[0021]客户端的订阅-发布模块收到客户端应用程序的注销订阅请求时,在散列表中查找该数据是否被订阅,如是则在散列表中获得数据对应的应用程序句柄链表,遍历链表,找到该应用程序句柄,并从链表中删除该应用程序句柄;如果删除后,链表为空,则说明客户端中,已经没有应用程序订阅该数据,在散列表中删除被注销订阅的数据标签名和链表的映射关系,并删除该链表,向服务器发出注销订阅请求;
[0022]服务器的订阅-发布模块接收到注销订阅请求时,在散列表中查找该数据是否被订阅,如是则在散列表中获得该数据对应的客户端信息链表,遍历链表,找到该客户端信息,从链表中删除该客户端信息。
[0023]客户端信息包括客户端的IP地址和主机名称信息。
[0024]触发发布的发布条件为,实时数据变化范围超过其变化死区或距离上次发布时间超过规定的超时等待时间。
[0025]实时数据从服务器发布到客户端应用程序,时间复杂度为0(1)。
[0026]本发明所达到的有益效果:本发明通过2次订阅-发布,实现了客户端应用程序获得服务器端实时数据的方法,一方面将客户端应用程序与实时数据库解耦,消除模块之间的依赖关系,另一方面,避免了客户端频繁访问服务器获取实时数据带来的时间消耗,硬件资源、网络资源的开销,在实时数据发生变化时,可立即发布订阅的数据到客户端程序;解决了现有订阅-发布机制实时数据库由应用程序直接向服务器订阅数据带来的大量冗余订阅数据占用系统资源的问题,保证了数据的实时性,并支持了理论上无限量客户端的并发访问。
【附图说明】
[0027]图1为本发明的系统架构图。
[0028]图2为客户端的订阅-发布模块示意图。
[0029]图3为服务器的订阅-发布模块示意图。
[0030]图4为本发明的流程图。
【具体实施方式】
[0031]下面结合附图对本发明作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。
[0032]如图1所示,为基于服务器-客户端架构的系统,包括服务器和客户端,服务器内置有实时数据库和订阅-发布模块,客户端内置有应用程序和订阅-发布模块。
[0033]客户端应用程序:获得并使用实时数据库中实时数据的实体,即具体的使用者。
[0034]如图2所示,客户端的订阅-发布模块:负责管理客户端应用程序的订阅请求,可注册、注销的客户端应用程序的订阅请求,在收到服务器的实时数据发布后,向注册的应用程序发布其订阅的实时数据。
[0035]客户端的订阅-发布模块通过散列表和链表数据结构管理订阅请求,其中,散列表以被订阅数据的标签名为键值,以订阅该数据的客户端应用程序句柄链表为值。
[0036]客户端的订阅-发布模块注册客户端的订阅请求过程为:
[0037]客户端的订阅-发布模块接受到客户端应用程序的订阅请求时,在散列表中查找该数据是否被订阅,如是则获得该数据对应的应用程序句柄链表,如果链表中不存在该应用程序句柄,则将新的订阅请求的应用程序句柄加入到链表末端;如果该数据未被订阅,则新建应用程序句柄链表,并在链表中加入该订阅应用程序句柄,在散列表中新建被订阅数据的标签名和该链表的映射关系,同时向服务器发送订阅请求。
[0038]客户端的订阅-发布模块注销客户端的订阅请求过程为:
[0039]客户端的订阅-发布模块收到客户端应用程序的注销订阅请求时,在散列表中查找该数据是否被订阅,如是则在散列表中获得数据对应的应用程序句柄链表,遍历链表,找到该应用程序句柄,并从链表中删除该应用程序句柄;如果删除后,链表为空,则说明客户端中,已经没有应用程序订阅该数据,在散列表中删除被注销订阅的数据标签名和链表的映射关系,并删除该链表,向服务器发出注销订阅请求。
[0040]实时数据库:负责采集并存贮实时数据,管理访问事务。
[0041]如图3所示,服务器的订阅一发布模块:负责管理客户端的订阅请求,可注册、注销的客户端的订阅请求,在实时数据满足发布条件时,向注册的客户端发布其订阅的实时数据。
[0042]服务器的订阅-发布模块通过散列表和链表数据结构管理订阅请求,其中,散列表以被订阅数据的标签名为键值,以订阅该数据的客户端信息链表为值;客户端信息包括客户端的IP地址和主机名称信息。
[0043]服务器的订阅-发布模块注册客户端的订阅请求过程为:
[0044]服务器的订阅-发布模块在接收到客户端的订阅请求时,在散列表中查找该数据是否被订阅,如是则获得该数据所对应的客户端信息链表;如果链表中不存在该客户端信息,则将新的订阅请求客户端信息加入到链表末端;如果该数据没有被订阅,则需
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1