论文部分内容阅读
发布/订阅系统作为一种信息交互和共享的中间件,在信息的生产者(发布者)和消费者(订阅者)之间提供了一个松耦合的信息分发手段。在发布/订阅系统中,订阅者以订阅的形式向系统声明它们感兴趣的事件;发布者将它们产生的事件发布到系统中;发布/订阅系统中的服务器将事件与系统中的订阅进行匹配,并且向订阅了该事件的订阅者发出事件通知。发布/订阅系统可以应用到诸多领域,例如股票信息交换、物流监控等。当系统规模很大、订阅和事件数目很多时,系统整体处理负担加重,同时可能造成某些服务器负载过重,形成性能瓶颈。因此,需要对发布/订阅系统中的多个模块加以优化,提高系统的性能与可伸缩性,以适应大规模应用的需求。
原子订阅匹配算法是发布/订阅系统的核心算法之一,目前已有的原子订阅匹配算法还存在着匹配效率不高、灵活性不佳等问题,因此,需要设计可适用于多种数据类型、高效的原子订阅匹配算法,以满足日益丰富的应用场景。
为适应大规模的分布式应用,需要解决的主要问题是事件/订阅路由算法的可伸缩性,即系统中存在着大量的服务器、大规模的订阅和事件,系统仍能保持很好的处理性能。因此,需要提供一个高效的消息路由策略,将事件的匹配责任分布到网络中不同的服务器上,使网络中各个服务器的处理负载分布均匀。
本文在调研了发布/订阅系统研究现状的基础上,针对发布/订阅系统中的原子订阅匹配算法和原子事件/订阅路由算法进行了研究。如何有效地管理原子订阅并将事件与原子订阅高效的匹配是发布/订阅系统需要关注的关键问题。本文将原子订阅组织成为一个覆盖森林,然后使用谓词的多级索引结构为原子订阅匹配提供支持。此方法已在基于内容的发布/订阅系统OncePubSub上实现,实验结果表明上述方法具有良好的匹配性能和可伸缩性。在原子事件/订阅路由上,本文采用了渠道路由算法。该算法首先将事件空间划分为多个子事件空间,并将其映射为渠道。事件渠道划归到不同的服务器负责,事件或订阅到达服务器后,通过检查它属于哪个渠道,然后转发至该渠道进行处理。在原子路由算法的执行过程中,实时监控各个渠道的负载,进而监控网络中各个服务器的负载状况,在出现负载不平衡的情况时,采用相应的负载平衡策略调整渠道的放置位置。原子路由算法达到了设计目标,即使得网络中的各个服务器的处理负载均衡,同时降低事件传递开销,减少事件的处理延迟。