基于发布订阅系统的文件存储功能

基于发布订阅系统的文件存储功能

ID:13278593

大小:852.00 KB

页数:6页

时间:2018-07-21

基于发布订阅系统的文件存储功能_第1页
基于发布订阅系统的文件存储功能_第2页
基于发布订阅系统的文件存储功能_第3页
基于发布订阅系统的文件存储功能_第4页
基于发布订阅系统的文件存储功能_第5页
资源描述:

《基于发布订阅系统的文件存储功能》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、一种基于发布/订阅系统的文件存储方法1.技术领域本发明涉及发布/订阅系统中对消息进行持久化时采用的方法。2.背景技术现如今,越来越多的企业、单位面临着各种各样的数据集成和系统整合,CORBA、DCOM、RMI等RPC中间件技术也应运而生,但由于采用RPC同步处理技术,在性能、健壮性、可扩展性上都存在着诸多缺点。而基于消息的异步处理模型采用非阻塞的调用特性,发送者将消息发送给消息服务器,消息服务器在合适的时候再将消息转发给接收者;发送和接收是异步的,发送者无需等待,二者的生命周期也可以不必相同,而且发送者可以将消息间接传给多个接收者,大大提高了程序的性能、可扩展性及健壮性,这使得异步处理模

2、型在分布式应用上比起同步处理模型更具有吸引力。其中发布/订阅(publish/subscribe,简称pub/sub)系统便是一种基于分布式计算平台的消息传递系统,也可以称中间件系统,用于为分布式系统中的各参与者之间提供一种松耦合的通信方式。在pub/sub系统中,有消息的生产者(发布者)和消息的消费者(订阅者),发布者通过中间代理把消息发给对该消息感兴趣的订阅者,而订阅者不一定都在线,此时就要把消息存储起来,等下次订阅者上线时,再把消息发送。消息持久化就是提供存储消息的功能,它保证了系统的可靠性。使得不管是服务器当机还是客户端连接失败,发送到服务器端的持久化消息都能被正确处理。然而,由

3、于数据文件可能非常大,那怎样用尽可能少的时间进行数据的存储、读取、删除等操作变得至关重要。这些性能跟采用什么样的数据存储方式有关,这里提出的是文件存储的方式,它通过把持久化消息存储到文件中,而达到消息的存储、删除、提取的高性能表现。目前消息存储机制主要有数据库存储,也就是通过把持久化消息存储到特定的数据库中,但是由于创建数据库连接的开销非常大,从而影响了消息的存储,删除等的性能。3.发明内容针对上述现有pub/sub系统中消息持久化存在的问题和不足,本发明的目的是提供一种对消息的高性能的存储、删除和提取。它的基本原理是:在pub/sub系统中,为每个消息目的地都创建一个消息容器表,且每个

4、目的地的消息容器表都将存在一个表结构中。同时每个目的地的消息容器表就是缓存消息的接口,可以通过消息容器表提供的存储、删除、修改等方法来对消息进行相应的动作。这使得操作文件像操作一个内存中的表一样方便轻松。消息容器表的具体方法的实现如下:消息容器表中存放的是特定目的地的消息总和,每个消息以(messageId,message)形式的(关键字,值)对来存储。在存储消息对的同时,为每个消息建立一个索引,索引记录了每个消息的关键字和值两个数据所在的文件以及在文件的起始位置。每个索引的结构大小都一样,所有索引都以链表的形式存放在索引文件中。并且,每个消息和它对应的索引关系以(messageId,I

5、ndexItem)形式的(关键字,值)对存放在一个消息索引表中。具体的消息以数据文件的格式存储在文件中,文件的大小可手动配置,但在文件大小配置好的情况下,存放在文件中的消息大小不可超过配置好的每个文件的大小。具体步骤如下:系统启动好后,自动为每个目的地建立一个消息容器表,且每个目的地只有一个消息容器表,该目的地中的所有消息都以关键字/值对的形式保存在这个消息容器表中,其中关键字对应于目的地中的一个消息的messageId(messageId在消息的发送过来的包中已经定义),值则对应该消息对象的内容。1.当一个可持续订阅的消息到达服务器端:从消息中得到它将要发往的目的地名称,根据该目的地名

6、称,找到对应的消息容器表,若不存在这样的消息容器表,则创建一个新的消息容器表。接着,从到达的消息中找到对应的messageId以及它的值,通过消息容器表提供的存储消息的方法将消息保存到文件中。2.若要从文件中取出一个持久化消息,则:同上找到该消息对应的消息容器表,并根据消息容器表提供的取消息的方法去文件中读取一条消息即可。3.若要从文件中删除一个持久化消息,则:同上找到该消息对应的消息容器表,根据消息容器表的删除消息的方法,在文件中找到该消息,并删除即可。本发明的优点在于实现了一个具有文件存储功能的消息容器表,同时可以像操作普通表结构一样来操作该消息容器表,即通过put(),get(),

7、remove()等方法进行,在进行持久化消息存储的同时不需要知道底层的细节。同时本发明的另一个优点是它的存储速度比数据库快很多,因为它不需要进行数据库的连接。3.附图说明图一为关键过程流程图。4.具体实施方式为使本发明的目的,技术方案和优点更加清楚,下面将本发明用于以java为开发语言的pub/sub系统中,并将结合附图作进一步的详细阐述。在java语言环境下,本发明相当于实现了一个具有文件存储功能的Map,该Map存储的数据不会随

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。