发布/订阅模型

2024-10-18

发布/订阅模型(精选6篇)

发布/订阅模型 篇1

0 引言

近年来,随着城市化进程加快,城市规模不断扩大,城市的交通安全隐患和风险也不断加大。另外,自然灾害和突发事件的频繁发生,交通信息管理越来越受到人们重视。同时,交通信息作为城市生命线的一部分,对人员的疏散和紧急救援[1]都起着至关重要的作用。

可变情报板在信息发布、交通诱导等方面起着非常重要的作用。它是一种可编程的交通控制设施,采用LED作为主要显示界面,通过显示组合字符向交通信息接收者提供信息,主要分固定式与移动式两种类型。这种情报板可以固定放置在道路上方或者路边。作为交通信息主要推送平台工具,在大城市的交通信息发布中占有绝对重要的地位。

语义,被赋予含义的数据,具有领域性的特征,没有不属于任何领域的语义。而语义异构则是能指明异质的同一事物,也就体现为同一事物在不同论域中的不同理解。交通信息作为交通系统中的主导因素,经过语义包装与处理,能为信息的传递创造更有利的传输途径。

发布/订阅是由信息生产者(发布者)、信息消费者(订阅者)和发布/订阅引擎组成的基础中间件,发布者以"事件"形式发布信息到发布/订阅引擎,订阅者向发布/订阅引擎订阅感兴趣的事件,发布/订阅引擎把发布的事件及时可靠地发布给感兴趣的订阅。其具有松耦合、匿名、多对多通信的特点,广泛应用在面向服务的架构、普适计算等新型网络计算领域。匹配算法是发布/订阅引擎的核心机制之一,负责高效地找到与给定的事件相匹配的所有订阅条件。

本文将基于语义的发布/订阅[2,3]应用于交通系统的可变情报板,保证了交通信息发布的高效性和稳定性。发布/订阅是面向城市交通信息管理的语义发布/订阅模型的核心,如图1所示,在发布/订阅模型中,消费者(可变情报板)以订阅的形式向发布/订阅器[4,7]注册,表达对特定事件的兴趣。生产者(各种交通信息流检测系统)发布事件到发布/订阅器。发布/订阅器充当生产者和消费者的媒介,负责订阅的管理,根据订阅过滤事件,并以通知的形式发布事件到感兴趣的消费者。

1 体系架构与模型

1.1 体系架构

面向城市交通信息发布的语义发布/订阅模块体系架构如图2所示。

该体系架构主要可分成以下三大部分:

(1)数据层在城市道路系统中,交通信息的主要来源是各种交通信息流检测系统,如车辆检测器、铺设在道路下面的感应线圈、巡逻车以及SCATS系统、Citilog系统、OD系统等[1]。这些交通信息监测系统向核心模型和算法层中的智能数据分析引擎提供尚未语义化和RDF事件化的粗糙异质异构交通数据。

(2)核心模型和算法层该层由智能数据分析引擎、交通信息RDF本体库、节目单列表、发布/订阅引擎等组成。智能数据分析引擎:将来自数据层的交通数据进行智能分析,通过已经建立的交通信息RDF本体库,把粗糙异质异构的原始数据进行语义化和RDF事件化;交通信息RDF本体库:智能数据分析引擎将粗糙数据进行语义化和RDF事件化的基础,是已经建立的各类交通信息事件的本体集合,交通信息本体库可以随时添加本体;节目单列表:粗糙异质异构数据经过智能数据分析器解析之后形成的交通信息RDF事件;发布/订阅引擎:发布/订阅核心模型和算法层的最重要模块,是数据层和显示层的中介,主要是用于语义算法匹配和提供发布/订阅的功能。

(3)显示层该层由各种路面可变情报板组成,各类可变情报板的订阅信息不同,则显示信息随之不同。可变情报板通过网络向发布/订阅引擎订阅交通信息,发布/订阅引擎则根据其订阅的信息实时发布该订阅相关的信息到可变情报板。

1.2 事件模型

一般意义上的发布/订阅系统中的事件模型是能够用来描述事件内部的数据结构的,而在我们的交通信息的发布/订阅系统中就体现为一个个的交通信息节目单,这些节目单采用RDF数据模型来建模事件。节目单一旦以RDF表示,就具备了语义特征,就能被机器无歧义地理解并处理,在应用程序之间数据交换而不丧失其语义,从而使系统从语义层面理解事件信息,达到支持异质异构事件的目的。

由于RDF图是最适合的语义表达方式,因此交通信息发布中的每个事件被表示为一个RDF图,即RDF交通信息节目单。RDF交通信息节目单实际上是一个三元组的集合,每个三元组由主体、属性和客体组成。每个元组都是一个节点,每个元组之间都是用弧来连接。节点可能为空,可能是文字信息。弧的标签指明了指向的客体的特性,并且总是指向客体。

城市交通信息发布中需要建立各类规范的RDF图的本体库,如洪涝事件、飓风事件、地震事件、火灾事件或者其他路况相关信息等等。

图3展示了一个洪涝事件的规范RDF图GE,洪涝事件的语义本体是所指的洪涝本体。洪涝RDF图GE指出了洪涝类型、洪涝状态、洪涝的始发时间以及流向与淹没。流向与淹没包括五个不同流向和若干淹没区域。

1.3 订阅模型

由于已经建模了基于RDF交通信息节目单,交通信息都能够以RDF图来表示,从而订阅也能够体现语义信息。例如,在我们的可变情报板信息发布系统中发布了一个基于“名字—值”对属性格式的洪涝事件信息———E:(disaster Item Name=“flood”)^(level=10),表示发生的灾害是洪涝,等级为10。假如此时有一个可变情报板向发布/订阅器作了如下订阅———S:(disaster Item Name=“disaster”)。由于“disaster”概念范畴包含“flood”,发布/订阅器作出了事件E同订阅S匹配的判断,并把该洪涝信息发送给已订阅该事件的可变情报板,从而实现了语义匹配问题。

下面来具体描述一下,交通信息的订阅模型:在1.2节中GE的基础上创建两个订阅图模式SE1(图4)和SE2(图5)。以其中一个订阅图模式为例(SE1):以图模式SE1为例,订阅E1也是一个三元组,两个变量节点之间用特性P的弧链接,每个变量节点的标签均以“*”开始,表示这个节点是个变量,其后紧跟变量名“?i”。在我们的交通信息的节目单中,规定变量名都以“?”为起始,其后为下划线、字母、数字等(类似于C语言的变量定义)。一般情况下,用户订阅RDF事件是都会指明一个rdf:type作为属性,但是也有可能指明一个布尔表达式来指明变量的约束条件。

所以对于没有rdf:type属性的变量节点,我们通过布尔表达式来约束变量,因为没有了rdf:type的资源类型的约束就没有办法进行类型检查。

2 订阅的数据结构与匹配算法

匹配算法负责如何快速地找到与节目单匹配的订阅,是交通信息发布/订阅系统的核心功能之一。

2.1 订阅的数据结构

如图6、图7分别描述了图4、图5中的订阅E1和E2索引结构。以订阅E1为例,其索引结构由以下数据结构定义:

定义1变量对应关系(VMap)是两组不同的变量的对应关系,根据RDF事件的订阅图转化而来,字段名为订阅中的变量;

定义2节点映射关系的哈希表(NMap)节点和节点通过一定特性进行映射后连接,主体的标签一般在客体应用中通过具体的URIHref来表示,因此可以省略主体复杂结构,如直接用URIHref1表示,但是客体如果也是变量,用“*”表示,此时主体也必须要用“*”表示,中间用“-”连接;

定义3属性映射的哈希表(PMap)属性映射,通过NMap可以映射到订阅图的事件属性P;

定义4订阅对象集合的哈希表(SMap)通过合并之后的订阅对象集,涵盖了所有属性P能够关联到的订阅事件。

2.2 事件匹配算法的实现

在建立了订阅数据结构的基础上,事件匹配算法的实现主要分两个部分:

(1)去除不相关订阅,相对于普通的订阅算法,减少了数据处理量,增加了数据处理的效率,达到语法层面的匹配。

(2)在去除不相关订阅之后,进一步检查约束条件,实现真正匹配,达到语义层面的匹配。

在匹配算法的第一阶段,针对RDF事件GE的每个属性P,在合并订阅图索引结构DME的属性映射的哈希表(PMap)中查找其节点映射关系,形成针对GE事件的节点映射关系哈希表NGEINDMMap,在NGEINDMMap不为空的情况下,取得RDF事件GE中所有节点映射关系NGEMap,对NGEMap进行轮询,判断是否存在于NGEINDMMap中,如果存在就将其对应的订阅事件加入到SList订阅队列中,SList订阅队列中每个对象,都能通过合并订阅图索引结构DME找到其相应的变量对应关系。对SList订阅队列中的每个订阅对象S作处理:首先根据订阅事件把相对应的S的订阅量Number加1,然后把该S对象加入到新建的Sub SList子订阅队列中。

在匹配算法的第二阶段,对Sub SList子订阅队列进行轮询,针对每个订阅对象Sub S,首先检查Sub S的订阅量Number是否大于等于它的三元组数量。如果Sub S的订阅量Number大于等于它的三元组数量,则事件必然与订阅相匹配,将相应变量表集合中变量V加入到Sub VMap绑定表中;反之事件与订阅不匹配,不必继续检查订阅的约束是否被满足。对Sub VMap进行轮询,对其每个变量V绑定的值进行类型判断和过滤,如果V的变量满足类型判断或者不被过滤,则将其对应的对象加入到Final SList队列中,并且中断返回。每个RDF事件只需要满足一项匹配就匹配成功,从而实现了匹配算法的优化,达到了提高效率的目的。

3 实验分析及数据

在没有将语义发布订阅模型应用于城市交通信息管理之前,可变情报板只能根据管理者预先设置好的数据,进行信息发布。但是在加入语义发布订阅模型之后,信息能够根据订阅事件实时更新,且具有了语义匹配,更符合交通信息接收者的需求。同时,模型中的交通信息本体库的基数是实现语义匹配的基础,基数越大,语义匹配程度和数据量都越大。本体库基数—语义匹配率数据如图9所示。

图9展示了语义匹配率随着本体库基数的增长而迅速增长,本体库基数达到一定程度时,对匹配率的刺激程度也逐渐趋缓,说明本体库的定义需要有一定积累才能充分发挥发布订阅模型的真正优势。同时,在本体库数量达到一定程度时,本体库的基数增加不再对匹配率产生巨大的影响,但是对于匹配的信息数量还是有所增加。

本体库基数—语义匹配数量数据如表1所示。

4 系统原型实现

城市应急交通疏散系统的总体模块架构图如图10所示。

(1)资源与图层管理该部分主要用于资源信息显示,基于GIS的地理信息模块。其下小模块主要有GIS平台;预案记录查看;界面配置管理器;疏散资源的管理;避难资源的管理。

(2)应急交通诱导该部分主要用于交通诱导,也是本文所述的面向城市交通信息管理的语义发布订阅模块应用部分。其下小模块主要有发布/订阅模型;可变情报板模型;人口分布模型;路网数据结构。

(3)灾害模拟该部分主要用于灾害模拟和演示,为疏散预案决策者提供直观的指导意见。其下小模块主要有信息操作接口;生成与表示模型;灾难扩散模型。

(4)交通应急疏散该部分直接提供疏散预案和策略。其下小模块有灾难数据获取接口;疏散结果显示;疏散寻优。

面向城市交通信息发布的语义发布/订阅模块作为在总体架构中应急交通诱导的子模块,现在该模块已经在杭州市可变信息板实时交通信息控制与发布系统中得到应用。信息采集子系统包括由车辆检测器、铺设在道路下面的感应线圈、巡逻车以及SCATS系统、OD系统、Citilog系统等。该系统是基于GIS开发,通过可变情报板的实时更新在道路发布实时信息。

通过从各种采集系统得来的实时数据通过面向城市交通信息发布的语义发布/订阅模块处理,通过发布/订阅模式和可变情报板定制的规则生成消息,将这些消息利用可变情报板的远程控制接口发送信息到可变情报板显示屏上,同时还具有更新显示屏过期的信息,发布管理员编辑的信息等功能。系统的这一模块已经应用到杭州市信息发布系统与控制平台中。

基于GIS的管理界面如图11所示,展示了各类情报板的状况。

5 总结与展望

本文将基于语义的发布/订阅应用于交通信息发布,从而具备了以下特点:1)迅速提高交通信息发布的效率;2)信息发布针对信息接收者的订阅,针对性强;3)针对具体订阅发布,减轻了服务器和客户端的压力。

交通领域的信息发布无论是解决城市交通阻塞,还是在灾害发生情况下,提供第一手高效可靠的信息,为指挥部门的应急疏散提供指导性建议,都具有非常重要的作用。采用基于语义的发布/订阅来提高交通信息发布的效率是其中的一种方法,更有其深入研究的重要性。

参考文献

[1]Wei Shi,Zhou Kan,Jian Wu,et al.Ontology-based TransportationInformation Integration.Intelligent Transportation System World Con-gress,2007.

[2]Wei Shi,Jian Wu,Ying Li,et al.Intelligent Transportation Information Sharing and Service Integration in Semantic Grid Environment.The2006 IEEE/WIC/ACM International Conference on Web Intelligence,WI 2007,Hong Kong,China,December 2006:18-22.

[3]Dongcai Shi,Jianwei Yin,Zhaohui Wu,et al.A Peer-to-Peer Ap-proach to Large-Scale Content-Based Publish-Subscribe[C]//Proceed-ings of the IEEE/WIC/ACM International Conference on Web Intelli-gence and Intelligent Agent Technology(WI-IAT 2006 Workshops),2006:172-175.

[4]Dongcai Shi,Jianwei Yin,Yiyuan Li,et al.JTangPS:An RDF-basedPublish/Subscribe System[C]//Proceedings of the 3rd InternationalConference on Semantics,Knowledge and Grid(SKG),2007,sub-mitted.

[5]Dongcai Shi,Jianwei Yin,Wenyu Zhang,et al.JTangPS:Content-based Publish/Subscribe over Structured P2P Networks[C]//Proceed-ings of the 1st International Symposium on Intelligent and DistributedComputing(IDC),2007.

[6]Svetlana Vukanovic,Ronald Kates,Samuel Denaes.A novel algorithmfor optimized,safety-oriented dynamic speed regulation on highways:INCA[C]//Proceedings of the 8th International IEEE Conference onIntelligent Transportation Systems Vienna,Austria,September 2005:13-16.

[7]Steve Railsback:Notes on Implementing StupidModel in Java Swarm,15th February 2006.

欢迎投稿欢迎订阅欢迎发布广告 篇2

国内统一刊号:CN15—1098/Z!!

国际标准刊号:ISSN1008—0708!

邮发代号:16—38

定价:10.00元

电话: (0471) 6652260

电子信箱:xiandainongye@163.com

《当代畜禽养殖业》 (月刊)

国内统一刊号:CN15—1150/S

国际标准刊号:ISSN1005—5959

邮发代号:16—49

定价:10.00元

电话: (0471) 6652261

电子信箱:nmgxmy2008@sina.com

《内蒙古畜牧业》 (蒙文双月刊)

国内统一刊号:CN15—1073/S

国际标准刊号:ISSN1006—8163

邮发代号:16—50

定价:7.00元

电话: (0471) 6652216

电子信箱:nmgxmy@sohu.com

地址:呼和浩特市乌兰察布东街70号内蒙古自治区农牧业厅12楼 邮编:010010

发布/订阅模型 篇3

随着Internet技术的广泛应用和移动计算、网格计算以及普适计算平台的快速发展,要求分布式系统能够满足大规模、分散控制和动态改变等方面的要求。因此就要求分布式系统的各参与者之间能够采用一种具有动态性、松散耦合特性的,更为灵活的通信范型和交互机制。发布/订阅 (P/S) 通信范型与传统的通信范型 (如:消息传递、RPC/RMI和共享空间等) 相比,具有异步、匿名和多点通信的特点,使通信的参与者在空间、时间和控制流上完全解耦[1],因此受到越来越多的关注。

历史上的大多数发布/订阅标准,例如:CORBA Event Service, CORBA Notification Service和JMS等,以及大多数私有的解决方案都缺少对实时、任务和安全关键系统的必要的支持。这些解决方案的主要限制在于:对服务质量 (QoS) 不支持或支持很有限;缺少提升可信性和生存性的体系结构属性 (如:不支持单点失败) 。为了填补这个空白,对象管理组织 (OMG) 于04年12月正式颁布了数据分布服务 (DDS) 规范1.0版,07年1月推出了V1.2[2]。该规范集中了在工业过程控制和防卫系统应用领域独立开发、私有的实时发布/订阅中间件解决方案的经验。作为结果发布的规范基于完全分散的结构和提供一个极端丰富的可配置的QoS, DDS提供了对基于内容的实时发布/订阅的支持。

2、实时发布订阅系统的相关技术

一个典型的实时发布/订阅系统包括拓扑结构、事件模型、订阅模型、匹配算法、实时调度算法、路由算法和提供服务质量保证的设施。在P/S系统中,信息的生产者 (发布者) 和消费者 (订阅者) 之间所交互的信息被称为事件。如图l所示,发布者将事件发送给P/S系统;订阅者则向P/S系统发出一个订阅条件,表示对系统中的哪些事件感兴趣 (如果不再感兴趣,也可以取消订阅) ;而P/S系统则保证将发布者发布的事件及时、可靠地传送给所有对之感兴趣的订阅者。匹配算法负责高效地找到与给定的事件相匹配的所有订阅条件;而路由算法则负责选择适当的路径,将一个事件从发布者传送到订阅者[3]。

事件模型定义了事件的数据结构;订阅模型定义了系统能够支持的订阅条件,指明了订阅者如何表达对事件子集的兴趣。事件模型和订阅模型共同决定了P/S系统的表达能力,表达能力越强则可以越精确地描述订阅者的兴趣,可以对事件进行更精细地分类和过滤。P/S系统按照事件模型和订阅模型可以分为基于通道、基于主题、基于内容、基于类型和混合型等几类,其中基于内容的系统又分为基于Map系统的和基于XML的系统[3]。

拓扑结构决定了系统的可扩展性,为了提高系统的扩展性,大规模的P/S系统通常采用分布式的系统结构,其中分布着多个事件代理,每个事件代理为一定数量的本地客户端服务。这些事件代理按照一定的拓扑结构组织,负责事件在各节点之间的转发。P/S系统的拓扑结构对其性能和扩展性有着重要的影响,目前比较常见的拓扑结构有:星形 (集中式) 、总线形、层次、环形、无环图、一般图和P2P模式等[4]。

P/S系统的匹配算法高效地找到给定事件匹配的所有订阅,其设计目标主要包括:匹配的时间效率、匹配的空间效率和订阅维护的效率。P/S系统的匹配算法总是依赖于特定的数据模型。为了高效地查找某个到达的事件匹配哪些订阅,需要对所有订阅的全部约束进行搜索和判断,根据对约束空间搜索策略的不同,匹配算法主要可以分为两大类:匹配树和计数算法。匹配算法一般要结合相应的事件和订阅模型进行优化。

P/S系统的路由算法就是要解决如何在事件代理网络中寻找一条恰当的路径,使事件低成本、高效和可靠地到达各相关的订阅者的问题。其追求的设计目标有:事件转发的网络效率、订阅维护的网络效率、容错能力、负载平衡和每个节点的资源消耗。其中,事件转发的网络效率是最主要的设计目标。P/S系统现有的路由算法大致可以两类:洪泛法 (或基于组播的方法) 和基于过滤器的方法。路由算法一般要根据相应的事件代理网络的拓扑结构进行优化。

实时系统的正确性不仅仅依赖于计算的逻辑结果而且依赖于结果产生的时间。调度的实质是对资源的分配,而实时任务的调度强调的是任务的时间约束。实时系统的基本问题就是要保证系统中的任务满足其时间要求从而保证系统的实时性。实时调度算法是实时系统的关键技术,实时调度算法的目的是为了将事件在其时间约束内转发给匹配的订阅者,因此实时调度算法往往也要同事件路由策略相结合以加快调度的进程。如:实时调度算法在发现某一事件已经超过其邻居方向的订阅时限要求后就不必向该邻居方向转发该事件。实时调度算法可分为固定优先级的调度算法和动态优先级的调度算法。实时调度算法主要包括单调速率算法 (RM) 、截止期最早最优先算法 (EDF) 和空闲时间最短最优先算法 (LSF) 、价值最高最优先算法 (HVF) 、价值密度最大最优先算 (HVDF) 等等[5]。在这些算法中,任务的优先级都是基于任务的某些特征参数,如截止期、空闲时间或关键性 (即任务的重要程度或者价值) 等计算而得。此外最近几年一种运行于开放和不可预测环境的,基于反馈控制的实时调度方法的研究也取得较大进展。

P/S系统的表达能力、效率、可扩展性和服务质量是其主要目标,但这些目标往往是相互矛盾的,需要根据具体需求权衡利弊,找到合理的均衡点。

3、DDS概述

OMG DDS是一个 (实时) 发布/订阅数据分发系统的中间件规范,规范的目的是提供一个能清晰地定义数据分布服务的公用的应用级接口,方便在分布式系统中有效地分发数据。规范使用UML描述服务,提供一个平台无关模型,该模型能够被映像到各种具体的平台和编程语言。DDS规范分为两层接口[2]:低层的数据中心发布/订阅 (DCPS) 层的目标是有效的传递适当的信息到适当的接收者;可选的高层是数据本地重构 (DLRL) 层允许将服务和应用层进行简单的集成。

DCPS模型基于"全局数据空间 (GSD) "的概念 (图2) ,所有对该空间中的数据感兴趣的应用程序都可以接入。想要向这个数据空间提供信息的应用程序声明意图并成为"发布者",同样,想从数据空间中获取数据的应用程序成为"订阅者"。每当发布者将新数据发送到这个全局数据空间,中间件就会把信息传播给所有感兴趣的订阅者[6]。

参与者使用DDS能够有效、自然地用一个有类型的接口"读"和"写"数据。在下层的DDS中间件将分发数据,以便每一个读参与者能够访问"最近"的值。事实上,服务建立了一个任何参与者都能读和写的"全局数据空间",服务也建立了一个允许参与者发现和共享对象的命名空间。

DDS善于处理复杂的数据流,通过对QoS参数的控制,可以把对更新速率、可靠性和带宽控制有不同要求的模块很好地集成到同一个系统中。在对速度有较高要求的场合,由于DDS不需要有中心的服务器,可以使用直接P2P的传输方式,因此消除了由于网络中转而引起的时延。DDS还允许应用程序通过降低可靠性来进一步缩短时延,例如:需要尽快获得最新数据的应用可以使用"best-effort"方式来获得最短的时延。另外,利用DDS进行多点传送,可以把单个网络分组同时发送给多个分布式节点,这极大地增加了大型网络的吞吐量。而且P2P连接是在订阅时确立的,当数据准备完毕后,每个节点都已经知道数据将发往何处,因此实际的数据发布过程效率很高。另外,DDS作为一个高性能、支持容错的数据分发服务,也适于需要高可靠性的系统。DDS中没有任何特殊的节点,如果某个节点发生故障,其他部分能照常继续工作;同样,如果有新的节点加入,也不会对原有的系统造成任何影响 (这同时也反应了可扩展性) 。DDS网络能够进行自愈,即使网络被劈成两半,每一半都能独立地工作;如果网络被修复,将会自动重新连接,继续提供全部服务。

4、进一步的研究方向

要构造一个大型的实时发布/订阅系统,还需要很多方面的工作。如,(1)事务支持,它用来把成组的消息合并成一个原子单元,要么发送或者接收这个消息序列,要么一个都不做。(2)安全需求,包括发布者和订阅者应用所要求的需求和发布/订阅基础架构的需求。从 (发布者和订阅者) 应用角度看,发布者和订阅者之间可能互相不信任,它们也可能不信任P/S基础架构。从P/S基础架构角度看,它们可能对发布者和订阅者不信任,P/S基础架构的各个组成部分之间也可能没有必要互相信任。实时发布订阅系统的安全问题还要求系统要有尽可能小的开销和延时。(3)支持移动计算,随着无线网络技术的发展和移动终端的普及,移动计算正成为重要的研究领域。近年来, 很多人开始研究将P/S系统扩展到移动环境中,以支持移动环境下的应用。

实时发布/订阅系统技术是一个方兴未艾的研究方向,并有着广泛的应用前景。如何在表达能力、可扩展性、实时性、安全性及其他服务质量之间进行权衡,提高整体的服务质量将刺激对实时发布/订阅系统各方面技术的发展。我们也将在这个方面做进一步的研究。

摘要:发布/订阅系统具有异步、松耦合和多对多通信的特点, 有着广阔的应用前景。本文概述了国内外实时发布/订阅系统的研究现状, 然后分别就其关键技术从拓扑结构、事件模型、订阅模型、匹配算法、实时调度算法、路由算法等方面进行了阐述, 并对 (实时) 发布订阅系统中间件标准"数据分发服务"进行简单的介绍。最后提出进一步的研究方向。

关键词:发布/订阅,事件模型,匹配算法,实时调度算法,路由算法

参考文献

[1]Eugster PT, Felber PA, Guerraoui R, Kcrmarrcc AM.The many faces ofpublish/subscribe.ACM Computing Surveys, 2003, 35 (2) :ll4_131.

[2]Object Management Group.Data Distribution Service for Real-timeSystems Specification Version 1.2, formal/07-01-01.

[3]马建刚, 黄涛, 汪锦岭, 等.面向大规模分布式计算发布订阅系统核心技术[J].软件学报, 2006, 17 (1) :134-147.

[4]Carzaniga A, Rosenblum DS, Wolf AL.Design and evaluation of awide-area event notification service.ACM Trans.on Computer Systems, 2001, 19 (3) :332?383.

[5]Liu C, Layland J.Scheduling algorithms for multiprogramming in real-time environment.Journal of ACM, 1973, 20 (1) :46.

发布/订阅模型 篇4

关键词:需求响应,发布/订阅,访问控制

0 引言

智能电网作为新型的智能化服务网络,通过建立开放发达的信息系统和供需双方共享的信息模式,高效率地整合电力系统中的数据,进一步优化了电力基础设施运作和管理,并促进了与电力用户的沟通互动[1,2,3]。需求响应(Demand Response,DR)机制通过价格信号和激励机制来实现需求响应在市场中的作用[4,5]。建设与用户友好互动的智能电网,为用户提供及时准确的用电信息,实现用户需求侧的自主选择与控制,并将供应侧和需求侧的资源进行综合资源规划,满足多元化客户需求,提升电网公司的服务质量,将是未来智能用电的发展方向。需求响应机制是在需求侧管理基础上发展起来的,专门针对智能家庭用电设备,允许根据当前的用电状况与电价变化进行自主统筹调整,从而发挥用户需求侧的主观能动性[6]。在需求响应机制实现过程中,配电网是智能电网的重要组成部分之一。配电网调度存在设备数量多、安装地点分散等分布式特点。

在这些基础上,需求响应机制必须满足两个条件:第一,能够保证用户与智能电网通信顺畅,彼此根据即时实际情况做出相应的调整;第二,当然是必不可少的安全性能,当用户和电力供应者在彼此通信时,必须能够保证一定的安全,否则一旦出现类似于被黑客入侵发布虚假消息、提供虚假数据的情况时,可能会造成整个电力系统的崩溃,严重影响社会的稳定,给广大民众和国家造成严重经济损失。只有保证这两点,需求响应机制才是一个安全、可靠、高效的实施机制。

本文针对智能电网的需求响应机制展开研究,主要分析了当前智能电网所需要建设的一种基于价格的需求响应机制,结合需求响应机制的特性和要求,利用发布/订阅模式,借助于动态密码身份认证和基于角色访问的安全机制,提出了一种新型的需求响应安全通信机制系统。

1 需求响应安全通信机制设计

为建立电力供应商与电力消费者之间安全的需求响应机制,本文通过对电力供应商和电力消费者进行身份认证和访问控制,构建基于发布/订阅模式的通信模型,对通信内容进行加密使其在公共网络中安全传输,具体设计如图1所示。

发布/订阅通信模型的采用,使通信网络更具灵活性和独立性。为保证需求响应机制中信息的安全、可靠和及时传输,电力供应商和电力消费者分别作为发布者和订阅者。电力供应商将需要更新发布的最新电力通告作为主题,发布给广大的客体,让用电消费者及时做出响应,实现帮助电力系统降低负荷的目的,而用电消费者也能从中获得各种优惠或者金钱补贴。基于Open ID的动态密码技术对参与需求响应的电力供应商和电力消费者进行身份认证,基于角色的访问控制机制(Role Based Access Control,RBAC)根据身份认证结果对其进行角色分配,并分配角色相应权限,防止虚假用户和恶意用户破坏需求响应机制的正常运行。基于角色的通信加解密算法对通信内容进行安全处理,以便其能在公共网络中安全传输。

2 需求响应安全通信机制实现

2.1 基于Open ID的动态密码身份认证

Open ID是以用户为中心的分布式身份识别协议[8]。作为一种基于URI/URL的轻量级互联网数字身份表示管理和认证通用体系,其具有开放、去中心化等特点。账号密码令牌作为一种通用的身份认证方法,被广泛应用于各种登录系统,但其安全性存在局限。针对账号密码登录方式所存在的缺陷,基于Open ID的动态密码身份认证改进原有的登录方式[9],在保持原有协议特点的基础上,安全性能有显著提高,有效地防范木马程序攻击和密码猜测攻击。

基于Open ID的动态密码身份认证流程如图2所示。其中,Uesr代表需要进行身份认证的电力供应商和电力消费者;Controller代表服务控制器,即电力供应商和电力消费者在登录后可以进行操作的电力平台;OP代表Open ID提供商,提供Open ID服务。

①用户向服务控制器发出带有签名的登录请求。

②服务控制器将重定向到Open ID服务提供商。

③OP向用户发送带有签名的用户名请求。

④用户输入用户名,并加密发送给OP。

⑤OP随机生成一个随机数R1,在数据库中找到该用户名对应的密码K1,使用K1对R1进行加密生成密文Cipher。

⑥OP将带有签名的密文发送给用户。

⑦用户使用密码K1对密文Cipher进行解密得R2,对R2进行Base64运算,并与password合并进行哈希计算得H1。

⑧将带有签名的H1发送给OP。

⑨对R1进行Base64运算,与K1合并后进行哈希计算得H2,比较H1和H2。

⑩如果H1和H2相同,则表示登录成功,反之则提示重新输入密码,将带有签名的登录反馈发送给用户。

11将用户重定向到控制器,身份认证结束。

2.2 基于发布/订阅模式的RBAC

为了对电力供应商和电力消费者进行有效的访问控制,本机制基于发布/订阅模式对RBAC改进,将权限和用户分离,既保证了通信的灵活性,也保证了访问控制的灵活性[10,11]。角色代表一组访问权限的集合,用户和角色之间的分配是多对一关系,一个用户只能授予一种可执行角色,而同一角色可以分配给不同的用户。电力供应商作为发布者根据主题确定其可执行角色,电力消费者作为订阅者根据中间人确定其可执行角色。不同的主题或者中间人需要不同的权限来处理数据和资源,例如读、写、添加、删除等操作。用户在通过身份认证后,根据主题或中间人给其分配其可执行角色,根据可执行角色分配权限。可执行角色和中间人之间是多对多的关系,系统可以分配多种操作权限给可执行角色,每个操作权限也可以被分配给多个不同的可执行角色。发布者被授予与发布相关的权限,订阅者被授予与订阅相关的权限。基于发布/订阅模式的RBAC模型如图3所示。

2.3 基于角色的通信安全加解密

基于角色的安全加密在需求端包括DR事件信息加密模块、角色密钥加密模块和密钥库,响应端包括DR信息解密模块和角色密钥解密模块。信息加密过程中,DR信息加密算法采用国家密码管理部门审批的SM1分组密码算法。

基于角色的通信安全加密首先需要进行初始化,进行秘钥生成和分配,具体过程如下:

①系统生成一个私钥a_mk和公钥a_pk,公钥a_pk存储在密钥库中。

②系统生成所有DR用户的ID,记为ID_U,形成用户ID集合。生成角色ID,记为ID_R,形成角色ID集合。

③用私钥a_mk和ID_R生成各个角色的初始密钥role_k,存储在密钥库中。

④每个DR用户生成各自的私钥u_mk和公钥u_pk,所有的公钥u_pk存储在密钥库中,私钥存在每个DR用户的本地系统中。

初始化完成后,用户可用公共网络进行DR信息传输,具体过程如下:

①系统生成待传输的DR信息。

②系统使用哈希链法对角色秘钥role_k进行更新,生成该次的角色秘钥。

③使用更新后的角色密钥对DR信息进行加密。哈希算法采用国家密码管理部门审批的SM3密码杂凑算法,杂凑值长度为256比特,保证一次一密,确保信息安全传输。

④用DR用户的公钥u_pk对角色秘钥进行加密,生成角色信息密文;加密算法使用国家密码管理部门审批的SM2分组密码算法,该算法是基于ECC算法的非对称算法。

⑤用新生成的角色秘钥对DR信息进行对称加密,生成事件信息密文;加密算法使用国家密码管理部门审批的SM1分组密码算法,分组长度和密钥长度都为128比特。

⑥将角色信息密文和事件信息密文发送给目标DR事件参与者;密文信息通过公共网络传输到目标DR用户的信息接收端,以降低通信成本。

⑦目标用户用用户私钥u_mk解密角色信息密文,得到角色秘钥。

⑧用角色秘钥解密DR事件信息密文,得到DR信息,整个通信安全传输结束。

3 需求响应安全通信机制流程

需求响应安全通信机制的实现流程如图4所示,电力供应商在需求端通过需求端处理器和服务器提供安全管理和安全服务。电力供应商首先基于Open ID进行动态密码身份认证,改进原有的登录方式,将账号/密码发送给需求端处理器,有效地防范木马程序攻击和密码猜测攻击。需求端服务器进行登录核对,并将登录结果经需求端处理器反馈给电力供应商。如果账号密码信息一致,代表通过身份认证。根据身份认证情况,处理器对其进行角色和权限授予。根据不同的主题或者中间人分配不同的权限来处理数据和资源,执行读、写、添加、删除等操作。电力消费者同样基于Open ID进行动态密码身份认证,经认证后结合发布/订阅模式进行角色和权限授予。电力供应商分主题将要发布的消息经处理器安全加密后发布给电力消费者,电力消费者经处理器解密后执行相应决策,加解密过程采用国家密码管理部门审批的SM1分组密码算法。

4 需求响应安全通信机制案例研究

需求响应通信与安全访问系统采用客户/服务模式,即C/S通信模式,把一个应用划分为功能不同的两个部分,各个部分在不同的计算机上运行。其中,有一台电脑运行服务端程序,用来响应客户端,为客户端提供服务;另一部分运行客户端程序,用来向服务端发起请求。但这只是相对概念,在实际系统工作中,一个程序中往往同时存在客服端和服务端的功能。在需求响应安全通信系统中,服务端程序和客户端程序分别对应电力系统中的电力供应商和电力消费者。电力系统要发布消息时,供应商通过服务端端口把消息数据发送给服务器,服务器通过公共网络把消息数据传输给订阅了这个消息的客户端用户;当客户端用户读取到相应消息后,根据消息内容做出响应,降低用电负荷。客户端用户也可以通过取消或者变更订阅的消息,从而达到修改自己选定的用电套餐。

根据设计的系统,本文模拟上海电力公司需求响应案例,如图5所示。在该案例中,上海电力作为电力提供商,也就是信息发布者,而广大的用电消费者则是消息订阅方。上海电力公司根据上海的具体用电情况,基于市场要求,为降低高峰用电负荷,针对不同类型的用户,推出了三套具体的用电方案,供用电消费者自由选择。电力供应商经身份认证和权限分配后,发布这三个方案消息,用户结合自身实际情况自主选择适合自己的用电方案。当用户选定方案后,以后电力公司有任何关于用电的变化,都会通过该系统平台进行发布,但用户只会接收到与自己订阅的方案有关的消息,然后用户结合具体情况,作出相应的响应,降低用电负荷,同时电力公司也会相应地给予用户补偿。

在图5中,上海电力公司发布A、B、C三种类型的用电方案消息,如图中虚线部分所示。例如电力公司发布B类方案时,订阅B类方案的用户可以接收到与B类方案相关的消息,如图中实线部分所示,然后用户做出对应的响应。

5 需求响应安全通信机制安全分析

需求响应安全通信机制利用发布/订阅模式,借助于动态密码身份认证和基于角色访问的安全机制,通过增加较少的计算开销,满足了智能电网的安全需求,包括身份认证、完整性、机密性、不可抵赖性和访问控制等,如表1所示。表1中m代表需求响应参与者数量,计算开销用哈希函数的计算次数来评估。用发布/订阅模式将电力提供商和电力消费者解耦合,各自封装在独立的对象中,使它们独立地运行和工作,保证了通信的灵活性。基于Open ID的动态密码身份认证利用开放、去中心化的认证方法,在保持原有协议特点的基础上,提高了需求响应的安全性能,借助随机数实现密码的动态变化,有效地防范木马程序攻击和密码猜测攻击,其计算开销为O(m)。基于发布/订阅模式的RBAC保证了访问控制的灵活性,电力供应商作为发布者根据主题确定其可执行角色,电力消费者作为订阅者根据中间人确定其可执行角色,其计算开销为O(m)。基于角色的通信安全加解密将角色和密码算法相结合,采用国家密码管理部门审批的SM1分组密码算法,分组长度和密钥长度都为128比特,利用角色秘钥对DR信息进行加密,保证了信息传输的机密性,其计算开销为O(m)。

6 结束语

为保证需求响应通信安全,本文提出了基于发布/订阅模式的安全通信机制。该机制基于Open ID的动态密码进行身份认证,增强了认证的安全性;采用基于发布/订阅模式的访问控制方法,保证通信和权限的灵活性和动态性;根据发布/订阅模式特点,将角色秘钥和国家规定的密码算法结合,对信息进行加密处理,使其在公网中进行安全传输。最后案例验证和安全分析表明,在计算开销增加允许的情况下,基于发布/订阅模式的需求响应安全通信机制能有效增强通信的安全性。

参考文献

[1]肖世杰.构建中国智能电网技术思考[J].电力系统自动化,2009,33(9):1-4.

[2]余贻鑫,栾文鹏.智能电网的基本理念[J].天津大学学报,2011,44(5):377-384.

[3]曹军威,万宇鑫,涂国煜,等.智能电网信息系统体系结构研究[J].计算机学报,2013,1(12):143-167.

[4]张钦,王锡凡,付敏,等.需求响应视角下的智能电网[J].电力系统自动化,2009,33(17):49-55.

[5]王珂,刘建涛,姚建国,等.基于多代理技术的需求响应互动调度模型[J].电力系统自动化,2014,38(13):121-127.

[6]Rahimi F,Ipakchi A.Demand Response as a MarketResource under the Smart Grid Paradigm[J].IEEE Trans.Smart Grid,Jun.2010(1):82-88.

[7]Zheng Lei,Lu Ning,Cai Lin.Reliable Wireless Communication Networks for Demand Response Control[J].IEEE Trans.SmartGrid,Mar.2013,4(1):133-140.

[8]刘润达,王卷乐,杜佳.Open ID:一种开放的数字身份标识管理及其认证框架[J].计算机应用与软件,2008,25(12):127-129.

[9]Wang Hu-ping,Fan Chun-xiao,Yang Shu-ai,et al.A New Secure Open ID Authentication Mechanism Using One-Time Password(OTP)[C].2011 7th International Conference on Wireless Communications,Networking and Mobile Computing(Wi COM),2011:1-4.

[10]庞春江,庞会静.RBAC模型的改进及其在电力ERP权限管理中的应用[J].电力系统自动化,2008,32(13):49-52.

发布/订阅模型 篇5

在我国,教育部于2011年建设了“爱课程”网站(http://www.icourses.cn/home/),集中展示“中国大学视频公开课”和“中国大学资源共享课”,拉开了“十二五”期间国家精品开放课程建设与共享工作的大幕[3]。目前在“爱课程”上线的课程总数已达一千余门,课程资源总数达到近30万。2014年5月8日,“爱课程”与网易合作推出中国大学“慕课”平台(http://www.icourses.cn/imooc),标志着我国在线开放教育又迈出了革命性的一步。 国家开放大学网站(http://www.ouchn.edu.cn/)、辽宁本科教学网(http://www.upln.cn/)等网站也都提供了大量在线教育资源。

这些在线平台大多具有Web 2.0的特征,如人与网络的互动性、个性化定制等[4,5]。Web 2.0最早由O’Reilly公司在2003年提出,时至今日,已经成为新一代网络应用的标准,融入到我们的工作、学习和生活中。

RSS是Web 2.0的一项重要技术,用于描述和同步网页内容,在新闻频道、博客、维基和数字图书馆等领域得到广泛应用[6]。目前,在线教育资源增长迅速、更新频繁,而传统的浏览方式很容易错过最新信息。比如,“爱课程”陆续上线了28批大学视频公开课,大学资源共享课从最初的120门到现在的一千余门,已上线的课程内容也在不断更新。因此,需要信息获取方式从“拉”到“推”的转变。本文通过实例,利用RSS技术发布与订阅在线教育资源,实现服务器资源到用户客户端的同步自动推送、更新与聚合。

1 RSS概述

传统的信息获取方式是通过浏览器将Web网页的内容从服务器“拉(Pull)”到客户端,当网页内容更新时不能反映最新情况,当需要访问多个网站时则要不断切换浏览界面。1997年Netscape(网景)公司开发了RSS,“推(Push)”的概念随之诞生。RSS技术采用“客户端/服务器”模式和HTTP通讯,服务器将网站内容摘要发布为RSS源(RSS Feed),RSS阅读器(即客户端)订阅RSS源以后,服务器上的最新内容就会被定期推送到客户端。用户可以同时订阅多个RSS源,从而将多个网站的内容聚合到一个界面上,大幅提高了浏览效率。

2003年后,随着博客的普及和Yahoo、Google等大公司的参与,RSS技术得到了迅速发展。到目前为止,RSS共有7种版本,分化为RSS 0.9x/2.0和RSS 1.0两个阵营,主要版本有0.91、 1.0和2.0。RSS 1.0指“RDF Site Summary(RDF站点摘要,RDF是一种语义网技术)”,由W3C维护,受到标准化组织推崇。 RSS 2.0指“Really Simple Syndication(真正简易聚合)”,由哈佛大学维护,在实际应用中占主导地位。

1.1 RSS源

RSS文件是一段规范的XML格式的数据,被网站(即服务器)发布出来称为一个RSS源(RSS Feed),每个RSS源都有一个URL。提供RSS订阅的网站上都有明显的RSS源的图标,点击以后,浏览器地址栏会出现以rss、xml或rdf为后缀的URL,供客户端通过HTTP协议订阅和聚合。

RSS源是网站内容的摘要,包含每一个条目的标题、简介、 到全文的链接等。RSS 2.0源是一个格式固定的XML文档,其结构如图1所示[7]。根元素为rss,含有一个或多个“频道(chan-nel)”子元素,频道是信息项(item)的集合。每个频道的名字、 URL、简介和更新频率等信息由title、link、description、ttl等子元素描述。信息项(item)是RSS源的核心,类似于电视频道中的一个节目或一条新闻,含有title、link与description等子元素,对应信息项的标题、全文的URL及简介。

借助link元素,RSS源传播给用户的是通往HTML网页(即全文)的链接。这时,HTML页面也会含有到相应RSS源的链接。如中国科学技术大学出版社的主页http://press.ustc.edu.cn/ 中含有如下的<link>元素:

<link rel="alternate" type="application/rss+xml" title="Front page feed" href="http://press.ustc.edu.cn/rss.xml" />

其中,href属性的值就是相应RSS源的URL。一旦HTML页面含有如上的<link>元素,IE、Maxthon、Firefox等浏览器的“嗅探功能”就能自动发现一个网站的RSS源,提示用户订阅[8]。

1.2 RSS阅读器

现在,大多数主流的高版本浏览器都有RSS源的发现与订阅功能,是常用的在线RSS阅读器。RSS阅读器是一个应用软件,通过HTTP协议解析RSS文件并呈现给用户。除了附加在浏览器、邮件系统的在线阅读器外,还有各种专用RSS阅读器。专用阅读器,也称离线阅读器,安装在客户端,实现与服务器上的数据同步。国内常见的RSS专用阅读器有周博通、看天下、新浪点点通等。

订阅的过程非常简单,只要把RSS源的URL提供给阅读器,并设置更新频率等,用户就可以实时获取网站的摘要信息, 并通过链接阅读到全文。随着移动互联网的兴起,出现了手机RSS阅读器,如拇指天空等。

2发布与订阅应用示例

RSS源的发布过程如图2所示,包括信息组织、生成RSS文档、验证RSS文档、发布RSS文档、注册RSS网站等阶段[7]。验证文档是保证文档符合规范与语法的过程,否则RSS源是不可用的。为了更好地推广RSS源,可以向RSS聚合网站(如抓虾网站等)或者搜索引擎(如Google)注册RSS的URL。

2.1在线教育资源的RSS源

在“爱课程”网站中,教育资源在不断增加与更新。目前, 这些信息是以HTML网页的形式发布出来的,需要用户随时浏览才能获取最新信息,容易错过一些重要课程。比如,2014年9月29日,上线资源共享课63门;9月23日,上线资源共享课53门;9月11日大学视频公开课更新涉及课程11门;10月9日, 第28批大学视频公开课上线10门课程等。

如果将更新信息以RSS源的形式发布出来,则在用户订阅后,就可自动获取最新信息,免去了随时访问网站、浏览网页的低效率重复操作。作为示例,本文将每一批上线的大学视频公开课的相关信息组织成一个RSS源。比如,2013年9月24日, 第16批大学视频公开课有25门课程上线,包括大连海事大学的《船舶动力装置的发展与绿色轮机》、北京交通大学的《交通博览》等课程,其RSS源如图3所示。通过<item>元素向订阅者推送每门课程的名称、链接的URL及简介等信息。当新一批课程上线时,该RSS源的内容也随之更新。

对其他的在线教育平台,如辽宁本科教学网,也可创建类似的RSS源。

2.2 RSS源的订阅

用户有多种方式订阅RSS源,一旦订阅,就可自动获取最新信息。在本文的实验环境中,将RSS源发布到Tomcat服务器中,以模拟实际的发布过程。图4给出了火狐浏览器打开图3的RSS源的情形,点击每门课程的名称,就可链接到“爱课程” 网站中这门课程的网页,看到课程的全部资源。

当采用专用RSS阅读器时,用户能将来自多个网站的RSS源聚合到一个界面上。图5展示了同时订阅“爱课程”网站RSS源和辽宁本科教学网视频公开课RSS源(工学)的情况,来自两个网站的几十门课程的摘要信息可被用户随时获取,并自动更新。

3结语

以“用户为中心”是现代在线教育平台的显著特征。将教育资源在恰当的时间、以恰当的方式送到需要的用户面前,是在线教育平台的发展方向。本文探讨了基于RSS技术的方案, RSS源结构简单、容易生成,能根据用户需求将最新的教育资源推送给学生。随着Web 2.0向Web 3.0的发展,将推动在线教育平台向更加个性化、智能化的方向发展。

参考文献

[1]王丽华.美国“慕课”的新发展及对中国的启示--基于对斯隆联盟系列调查评估报告的解读[J].高校教育管理,2014,8(5):34-40.

[2]李逢庆,赵建民.教学信息化:一场走向在线教育的革命?[J]现代远距离教育,2013,(5):67-71.

[3]孙传远,刘玉梅.中国大学视频公开课评价--基于爱课程网“精彩评论”的内容分析研究[J].现代教育技术,2013,23(12):91-95.

[4]余燕芳,葛正鹏.终身学习平台设计与构建--以Web 2.0到Web 3.0的学习理念变迁为视角[J].中国远程教育,2014(4):70-76.

[5]胡三华,汪晓东.博客在教育教学中的应用初探[J].远程教育杂志,2004(1):10-12.

[6]南晓凡.RSS技术在图书馆中的应用与发展[J].图书馆学刊,2014(5):109-112.

[7]秦鸿.RSS技术在图书馆中的应用[M].上海:上海交通大学出版社,2010.

发布/订阅模型 篇6

随着信息通信技术的快速发展, 软件系统的主要使用方式、运行方式、生产方式和形态都在发生着巨大的变革, 各类软件系统逐渐形成一种开放协同的应用环境, 而软件的应用形态也开始从面向熟识用户群体、相对静态和相对封闭的紧耦合形式向公共可访问、开放式以及动态协作的松耦合模式转变, 这就要求软件系统能够支持对分布式异构系统进行动态松耦合地协同通信, 与此同时还要保持较高效的时间性能。

Pub/Sub技术在控制流、时间和空间三个方面都具备完全的解耦能力, 且具有较高的时间性能, 能够很好地迎合这样的需求。本文在对当前几种主流的Pub/Sub系统进行研究的基础上, 针对其只能对简单事件进行的检测的现状, 提出一种基于CEP的Pub/Sub中间件, 增强Pub/Sub系统的表达能力, 支持对“复杂事件”或“事件模式”的订阅, 从而改善系统的可扩展性和性能。最后, 对开源CEP引擎ESPER进行扩展, 实现了该中间件, 并进行了仿真实验。

2 发布/订阅系统概

从订阅模型的角度来看, 当前Pub/Sub技术主要分为四大类:基于通道的“发布/订阅”、基于主题的“发布/订阅”、基于内容的“发布/订阅”、基于类型的“发布/订阅。其中, 容易实现和应用的当属基于通道和基于主题的Pub/Sub系统。它们相对设计实施过程较为简单, 因此, 在很多厂商的消息中间件产品中都集成了这两类系统。然而基于通道和基于主题的Pub/Sub则只具备了非常有限的过滤机制, 使得很多应用中用户的个性化订阅需求无法得到满足, 例如当前被广泛地应用于网站内容更新、新闻频道和blog信息订阅等的RSS (Really Simple Syndication, RSS) 技术, 从原理上探究, 即是一种基于主题 (也可以说是基于通道) 的Pub/Sub, 这是由于用户可能比较关心着大量的网站、新闻频道和blog中的小部分内容, 却不是全部, 因此, 用户只能地对多个RSS链接进行订阅, 才可以获取他所关心的内容。但是, 假如能够整合所有这些RSS的资源, 从而建立基于内容的订阅机制, 这对用户来说, 将会产生很大的方便, 而基于内容的Pub/Sub即是能够迎合这种需求的最佳选择。但是, 相较而言, 基于内容的Pub/Sub系统在实现和部署上则要显得复杂的多, 它要成为一个能够完整精确地支持大规模分布式应用系统且具有实用性的平台, 仍然面临着许多关键性问题的挑战。例如传统的基于内容的Pub/Sub系统只能支持对单个简单事件进行检测, 而对现实生产生活中出现的复杂事件 (多个具有时空、因果关系的简单事件集合) 却无法支持。

3 基于CEP发布订阅中间件设计

在Pub/Sub系统中, 分布式系统中的各类参与者能够以发布/订阅的方式进行交互协同。通常情况下, 信息源的生产者被称为发布者, 输出信息的消费者则被称之为订阅者, 而订阅者和发布者都被称为客户端。另外, 在系统中, 信息的发布者和订阅者之间所交互的信息则被称之为事件, 发布者将事件发布给CEP发布/订阅中间件;订阅者则向CEP发布/订阅中间件发送一个订阅条件, 描述对系统中感兴趣事件的特征, 当然, 假如订阅者不再对系统中任何事件感兴趣, 也可以及时取消订阅;而CEP发布/订阅中间件的主要作用是确保发布者发布的事件能够可靠、及时地传送给所有对之感兴趣的订阅者。

本文为实现可对复杂事件进行匹配处理的Pub/Sub系统, 对传统的Pub/Sub系统进行了扩展, 将CEP引擎接入订阅条件匹配模块, 将不同订阅者的订阅条件定制为CEP引擎中EPL (Event Processing Language, EPL) 语句, 继而利用CEP技术对发布者发布的事件流进行复杂事件处理, 最终实现支持高效处理复杂事件的发布订阅中间件。如图1所示, 路由选择模块负责选择适当的路径, 将一个事件从发布者传送到订阅者, 而订阅条件匹配模块则负责高效地找到与给定的事件相匹配的所有订阅条件, 并把相应的订阅条件传送给复杂事件处理引擎查询定制模块, 由该模块将订阅条件编写为相应的复杂查询EPL语句, 进而由复杂事件处理引擎对发布的事件进行处理, 最终将处理结果发送给相应的订阅者。

4 实验仿真

实验部署

实验操作平台为三台内存为4G且安装64位Linux操作系统的PC, 其中CEP引擎由java编写的开源工具Esper, 通过相关的java编码实现发布订阅机制, 部署在一台PC上, 作为基于CEP发布订阅中间件系统, 而其余两台PC分别模拟发布者和订阅者系统, 具体仿真部署如图2。其中发布者系统所使用数据集为2012年Enernoc公司采集的美国国内100个匿名工商业用户电力负荷数据集。该数据集包括自2012年1月1日~2012年12月31日每天288点的负荷数据, 该数据集具有典型的电力负荷特征, 能够很好的表现仿真的真实性能。

实验结果

实验对100个匿名工商业用户用电情况进行了监控, 同时利用复杂事件处理引擎对动态变化用户组 (用户利用订阅发布模式随进随出) 的用电均值、总值进行了计算, 实现了用户组的基于复杂事件订阅模式的用电情况监控, 如图3。

5 结语

本文提出了一种支持对“复合事件”或“事件模式”进行订阅的基于CEP的订阅发布中间件, 即当各发布者所发布的一系列事件所组成的事件序列满足某一条件时, 才通知订阅者客户端。这种新型Pub/Sub系统可以改善传统的基于内容的Pub/Sub系统性能, 并且在实际应用领域有较好的应用效果

上一篇:身份选择下一篇:现代网球