[发明专利]一种存储消息的方法和装置与一种读取消息的方法和装置有效
申请号: | 201710889500.9 | 申请日: | 2017-09-27 |
公开(公告)号: | CN109558069B | 公开(公告)日: | 2022-06-10 |
发明(设计)人: | 陈建锋;吴结生;陈舟锋 | 申请(专利权)人: | 阿里巴巴集团控股有限公司 |
主分类号: | G06F3/06 | 分类号: | G06F3/06 |
代理公司: | 北京清源汇知识产权代理事务所(特殊普通合伙) 11644 | 代理人: | 冯德魁;窦晓慧 |
地址: | 英属开曼群岛大开*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 存储 消息 方法 装置 读取 | ||
本申请提供一种存储消息的方法和装置以及一种读取消息的方法和装置。其中,所述一种存储消息的方法,包括:获取存储指定的待存储消息的请求;根据所述请求所对应的待存储消息的相关信息,生成所述待存储消息的含有第一删除标志的元信息数据和含有第二删除标志的消息实体数据;将所述待存储消息的元信息数据以及相应的待存储消息的消息实体数据原子地存储到存储介质。本申请能够起到简化消息的管理,提高管理消息的灵活性的作用。
技术领域
本申请涉及一种管理消息的方法。具体涉及一种存储消息的方法和装置以及一种读取消息的方法和装置。
背景技术
本申请所涉及的消息是指业务系统或业务系统的不同功能模块间传递信息的载体。当业务系统或业务系统的功能模块需要通知其他的业务系统或系统的其他功能模块执行后续的操作时,会产生必要的信息,所述信息被保存到相应的消息组,以便其他业务系统或系统的其他功能模块从所述消息组读取所述必要的信息,执行后续的操作。
消息管理系统管理消息的存储,读取和删除,可以被当作消息系统的的服务端,产生消息的业务系统或业务系统的功能模块是消息的生产者,需要获得消息的内容和相关数据并能够删除消息的业务系统或业务系统的功能模块是消息的消费者,也可以被当作消息系统的客户端。
可靠消息系统管理消息的读取状态来保证消息至少读取成功一次。在消息系统服务端管理消息读取状态,需要保证读取者来读取消息时总是返回当前消息组中最先进入的消息。尤其是需要处理那些客户端没有读取成功的消息,保证这些消息可以被再次读取,最终做到所有消息至少被读取一次。
实现该方式的已有方案可以大致分为两类:
第一类,在消息的元数据信息中增加一个属性来记录消息的是否已经被成功读取。在消息被发送到消息系统时将消息的读取状态设置为“未读取”,在用户读取获取消息后将消息状态置为“正在读取”,用户成功读取后主动将消息的状态置为“已读取”。每次用户读取消息时,系统都是从最早进入且未被读取的消息开始取出其后的消息,过滤掉其中的“已读取”和“正在读取”的消息,返回“未读取”消息给用户。用户如果未能在约定的时间内读取成功,系统会把消息从“正在读取”状态改为“未读取”状态,使消息可以被再次读取,来保证消息至少读取成功一次。
第一类在消息系统服务端管理消息的读取状态的技术方案需要修改消息的属性。在多个线程并发读取消息时,并发更改消息的状态会导致随机写磁盘,严重影响系统的性能。另外,维护最早进入且未被读取的消息也较为复杂。而且,每次给用户返回消息,都需要过滤“正在读取”和“读取成功”的消息。
第二类,将一个组分成两部分:“待读取的消息集合”和“正在读取的消息集合”。消息发送至系统后进入“待读取的消息集合”。用户获取消息后,消息出“待读取的消息集合”,进入“正在读取的消息集合”。读取成功后,用户主动将消息从“待读取的消息集合”删除。否则,在超出约定的超时时间后,系统会把消息从“正在读取的消息集合”移至“待读取的消息集合”,使消息可以被再次读取,来保证消息至少读取成功一次。
第二类在消息系统服务端管理消息的读取状态的技术方案需要维护两个份消息集合,而且消息的状态改变需要修改两个消息集合。尤其在消息读取失败后,系统需要把该消息再次加入“未读取的消息集合”来保证至少读取成功一次。因为需要保证消息先进先出,未能成功读取的消息需要被“插入”到“未读取的消息集合”中特定的位置。如果使用随机写的方式来实现“插入”会产生严重的性能问题。如果使用追加写的方式来实现逻辑上的“插入”,往往会因为物理上的数据归并不及时导致在读取消息的时候需要过滤大量逻辑上已经删除的消息,同时也需要特别处理大量消息过期的情况,增加了实现的复杂性。
可见,上述两类目前管理消息的方式具有管理消息复杂,成本较高的问题。
发明内容
本申请提供一种存储消息的方法。本申请同时提供一种存储消息的装置,以及一种读取消息的方法和装置。
本申请提供的一种存储消息的方法,包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于阿里巴巴集团控股有限公司,未经阿里巴巴集团控股有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710889500.9/2.html,转载请声明来源钻瓜专利网。
- 上一篇:数据迁移方法及迁移系统
- 下一篇:可扩展存储系统架构