论文部分内容阅读
随着互联网技术的飞速发展,云计算成为主流,后台演变为越来越复杂的分布式系统,并且应用范围和规模不断的扩大。为了让这些数量庞大的机器通信和协作来完成现代社会的计算任务,迫切需要一种异步的,多点通信的基础架构,满足互联网大型应用系统松散通信的需求,从而为构建大规模分布式应用系统打下良好的基础。发布/订阅的通信方式很好的解决了这种问题,它使得消息的生产者和消费者在时间,空间上充分地解耦,具有异步,松散耦合和多对多通信的特点。本文在此背景下,对发布/订阅系统做了深入研究,设计了一个发布/订阅模式的中间件,并且对核心模块事件过滤器,设计了高效的匹配算法,采用多级索引,位运算,对订阅做聚类,减少了多余的匹配,有效地提高了系统的吞吐量。整个系统由三部分组成,发布者,订阅者,发布订阅中间件。发布者即信息的生产者,把产生的数据源源不断地输入到系统当中。信息的订阅者则向中间件定义一个订阅条件,表示对系统中的哪些信息感兴趣。这样的话,信息消费者便能够通过中间件,及时,可靠地得到发布过的感兴趣消息。中间件是整个系统的核心部分,有发布代理服务器,订阅代理服务器,事件代理服务器。事件代理服务器负责整个事件的过滤和路由,将事件表示成一系列谓词组成的集合,通过匹配合适的谓词,选择性的分发来自发布者的数据,通知感兴趣的订阅者,达到了基于内容的匹配目标,区别于传统的基于主题的匹配方式,给系统带来了很大的灵活性。发布代理服务器负责接受生产者的事件消息,过滤掉垃圾内容,发送给发布订阅的中间件,做匹配和路由。订阅代理服务器,则接受订阅者的订阅信息,发送给事件代理器,发布订阅模式的中间件则对订阅条件做处理,便于更快的做事件匹配。事件过滤器是中间件的最核心模块,效率高低关乎着整个系统的响应速度。本文通过事先做预处理,把对兴趣具有一定共性的订阅放到一组,并且提取其中的谓词做多级索引,按照属性类别如类型,名字,操作符分为三级,对等号操作符构造哈希表,对于大于,小于符号按照约束关系做排序,所以对于小于号索引的某个谓词符合要求,则该值后面的谓词也符合要求,可以大幅度的减少匹配次数。并且构造订阅树,寻找最小谓词,剔除不满足条件的匹配,进一步提高了系统的效率。总之,本文在分析和研究了以往发布订阅系统的基础上,取长补短,设计了一个发布订阅模式的中间件框架,并且实现了一个发布订阅系统的原型PSSDJ。在该原型的基础上对使用不同算法的过滤器做了对比和分析,取得了一定的成果。