磁盘存储方法和装置、消息推送方法和装置及电子设备制造方法及图纸

技术编号:19023002 阅读:14 留言:0更新日期:2018-09-26 18:58
本发明专利技术实施例提供了一种磁盘存储方法和装置、消息推送方法和装置及电子设备。该磁盘存储方法包括:获取待存储消息的关键字;根据已存储消息的位图索引,采用布隆滤波器,对所述待存储消息和所述已存储消息进行基于所述关键字的判重操作,其中,所述已存储消息存储于磁盘中,所述已存储消息的位图索引存储于内存中;根据判重结果,对所述待存储消息进行处理。本发明专利技术实施例通过布隆滤波器根据位图索引对消息进行判重,并根据判重结果进行去重或存储处理,在占用少量内存的情况下,即可完成对大量消息的检索,实现了高效的海量消息去重存储。

【技术实现步骤摘要】
磁盘存储方法和装置、消息推送方法和装置及电子设备
本专利技术涉及数据存储
,尤其涉及一种磁盘存储方法和装置、消息推送方法和装置及电子设备。
技术介绍
在数据存储
,大多数存储引擎存储在文件中的内容都分为两部分:日志(Log)和索引(LogIndex)。其中,Log用于存储每条消息(Record)的详细内容;LogIndex用于存储Record的关键字(key)以及该Record在Log文件中的偏移量,有些还会存储Record的其它相关内容。如果存储引擎需要去重(在存储Record时,去除重复的Record),通常的方案是,直接通过LogIndex进行检索,其优势是可以做到针对整个Log全局去重。专利技术人在实现本专利技术的过程中,发现现有技术至少存在如下问题:在每次检索时,都需要读磁盘,运行速度很慢,性能差,不能适用于高并发场景
技术实现思路
本专利技术实施例提供一种磁盘存储方法和装置、消息推送方法和装置及电子设备,以解决现有技术在高并发场景无法去重的缺陷,实现高效的海量消息去重存储。为达到上述目的,本专利技术实施例提供了一种磁盘存储方法,包括:获取待存储消息的关键字;根据已存储消息的位图索引,采用布隆滤波器,对所述待存储消息和所述已存储消息进行基于所述关键字的判重操作,其中,所述已存储消息存储于磁盘中,所述已存储消息的位图索引存储于内存中;根据判重结果,对所述待存储消息进行处理。本专利技术实施例还提供了一种磁盘存储方法,包括:获取待存储消息的关键字;在内存中,对所述待存储消息和已存储消息进行基于所述关键字的判重操作;根据判重结果,对所述待存储消息进行存储或丢弃处理。本专利技术实施例还提供了一种消息推送方法,包括:获取待推送消息的关键字,所述关键字为所述待推送消息的目标用户ID;根据已推送消息的位图索引,采用布隆过滤器,对所述待推送消息和所述已推送消息进行基于所述关键字的判重操作,其中,所述已推送消息存储于磁盘中,所述已推送消息的位图索引存储于内存中;根据判重结果,对所述待推送消息进行推送处理。本专利技术实施例还提供了一种消息推送方法,包括:获取待推送消息的关键字,所述关键字为所述待推送消息的目标用户ID;在内存中,对所述待推送消息和已推送消息进行基于所述关键字的判重操作;根据判重结果,对所述待推送消息进行推送处理。本专利技术实施例还提供了一种磁盘存储装置,包括:第一获取模块,用于获取待存储消息的关键字;第一判重模块,用于根据已存储消息的位图索引,采用布隆滤波器,对所述待存储消息和所述已存储消息进行基于所述关键字的判重操作,其中,所述已存储消息存储于磁盘中,所述已存储消息的位图索引存储于内存中;第一处理模块,用于根据所述第一判重模块的判重结果,对所述待存储消息进行处理。本专利技术实施例还提供了一种消息推送装置,包括:第二获取模块,用于获取待推送消息的关键字,所述关键字为所述待推送消息的目标用户ID;第二判重模块,用于根据已推送消息的位图索引,采用布隆滤波器,对所述待推送消息和所述已推送消息进行基于所述关键字的判重操作,其中,所述已推送消息存储于磁盘中,所述已推送消息的位图索引存储于内存中;第二处理模块,用于根据所述第二判重模块的判重结果,对所述待推送消息进行推送处理。本专利技术实施例还提供一种电子设备,包括:存储器,用于存储程序;处理器,用于运行所述存储器中存储的所述程序,以用于:获取待存储消息的关键字;根据已存储消息的位图索引,采用布隆滤波器,对所述待存储消息和所述已存储消息进行基于所述关键字的判重操作,其中,所述已存储消息存储于磁盘中,所述已存储消息的位图索引存储于内存中;根据判重结果,对所述待存储消息进行处理。本专利技术实施例还提供一种电子设备,包括:存储器,用于存储程序;处理器,用于运行所述存储器中存储的所述程序,以用于:获取待推送消息的关键字,所述关键字为所述待推送消息的目标用户ID;根据已推送消息的位图索引,采用布隆滤波器,对所述待推送消息和所述已推送消息进行基于所述关键字的判重操作,其中,所述已推送消息存储于磁盘中,所述已推送消息的位图索引存储于内存中;根据判重结果,对所述待推送消息进行推送处理。本专利技术实施例提供的磁盘存储方法和装置、消息推送方法和装置及电子设备,通过布隆滤波器根据位图索引对消息进行判重,并根据判重结果进行去重或存储处理,在占用少量内存的情况下,即可完成对大量消息的检索,实现了高效的海量消息去重存储。上述说明仅是本专利技术技术方案的概述,为了能够更清楚了解本专利技术的技术手段,而可依照说明书的内容予以实施,并且为了让本专利技术的上述和其它目的、特征和优点能够更明显易懂,以下特举本专利技术的具体实施方式。附图说明通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本申请的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:图1为本专利技术实施例提供的业务系统的结构示意图;图2为本专利技术提供的磁盘存储方法一个实施例的流程图;图3为本专利技术提供的磁盘存储方法另一个实施例的流程图;图4为本专利技术提供的磁盘存储方法又一个实施例的流程图;图5a为本专利技术提供的消息推送方法一个实施例的场景示意图;图5b为本专利技术提供的消息推送方法一个实施例的流程图;图6为本专利技术提供的消息推送方法另一个实施例的流程图;图7为本专利技术提供的磁盘存储装置一个实施例的结构示意图;图8为本专利技术提供的磁盘存储装置另一个实施例的结构示意图;图9为本专利技术提供的消息推送装置一个实施例的结构示意图图;图10为本专利技术提供的电子设备一个实施例的结构示意图;图11为本专利技术提供的电子设备另一个实施例的结构示意图。具体实施方式下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。针对现有技术无法在高并发场景下进行消息去重的缺陷,本申请提供一种解决方案,其主要原理是:在内存中对待存储消息和已存储消息进行基于关键字的判重操作,然后根据判重结果,对该待存储消息进行后续的存储或丢弃处理。在本方案中,大部分去重操作在内存中进行,只有当内存中无法确定时,才会继续进行磁盘检索,最后根据磁盘检索结果对重复的消息进行丢弃,而只存储不重复的消息。在内存中可以采用多组哈希(Hash)函数对待存储消息进行去重操作。一种较佳的解决方案是,采用布隆滤波器进行判重操作。布隆滤波器基于消息的位图索引(Bitmap)能够快速检索一个元素是否在一个集合中(即,待存储消息与已存储消息的关键字是否重复),而Bitmap的特性是在占用少量内存的情况下,对大量消息进行检索,因此,能够实现高效的海量消息去重存储。本专利技术实施例提供的方法可应用于任何具有高并发场景下海量数据存储能力的业务系统。图1为本专利技术实施例提供的业务系统的结构示意图,图1所示的结构仅仅是本专利技术的技术方案可以应用的业务系统的示例之一。如图1所示,业务系统中包括磁盘存储装置、内存和永久化存储数据的磁盘。业务系统通过外部调用服务来获取数据,外部调用服务可以是任何能够提供本文档来自技高网...

【技术保护点】
1.一种磁盘存储方法,其特征在于,包括:获取待存储消息的关键字;根据已存储消息的位图索引,采用布隆滤波器,对所述待存储消息和所述已存储消息进行基于所述关键字的判重操作,其中,所述已存储消息存储于磁盘中,所述已存储消息的位图索引存储于内存中;根据判重结果,对所述待存储消息进行处理。

【技术特征摘要】
1.一种磁盘存储方法,其特征在于,包括:获取待存储消息的关键字;根据已存储消息的位图索引,采用布隆滤波器,对所述待存储消息和所述已存储消息进行基于所述关键字的判重操作,其中,所述已存储消息存储于磁盘中,所述已存储消息的位图索引存储于内存中;根据判重结果,对所述待存储消息进行处理。2.根据权利要求1所述的磁盘存储方法,其特征在于,所述根据已存储消息的位图索引,采用布隆滤波器,对所述待存储消息和所述已存储消息进行基于所述关键字的判重操作,包括:通过数个相互独立的随机映射函数,获取所述关键字的映射值;在所述已存储消息的位图索引中,查询与所述映射值对应的属性值;根据所述属性值判断所述待存储消息与所述已存储消息是否重复。3.根据权利要求1或2所述的磁盘存储方法,其特征在于,所述根据判重结果,对所述待存储消息进行处理,包括:当所述判重结果为不重复时,将所述待存储消息写入磁盘;当所述判重结果为重复时,根据所述已存储消息的磁盘索引,对所述待存储消息进行基于所述关键字的磁盘检索,并根据磁盘检索结果对所述待存储消息进行处理。4.根据权利要求3所述的磁盘存储方法,其特征在于,所述根据磁盘检索结果对所述待存储消息进行处理,包括:当所述磁盘检索结果为不重复时,将所述待存储消息写入磁盘;当所述磁盘检索结果为重复时,结束操作。5.根据权利要求4所述的磁盘存储方法,其特征在于,在将所述待存储消息写入磁盘的同时,还包括:更新所述位图索引和所述磁盘索引。6.一种磁盘存储方法,其特征在于,包括:获取待存储消息的关键字;在内存中,对所述待存储消息和已存储消息进行基于所述关键字的判重操作;根据判重结果,对所述待存储消息进行处理。7.根据权利要求6所述的磁盘存储方法,其特征在于,所述根据判重结果,对所述待存储消息进行处理,包括:当所述判重结果为不重复时,将所述待存储消息写入磁盘;当所述判重结果为重复时,根据所述已存储消息的磁盘索引,对所述待存储消息进行基于所述关键字的磁盘检索,并根据磁盘检索结果对所述待存储消息进行处理。8.根据权利要求7所述的磁盘存储方法,其特征在于,所述根据磁盘检索结果对所述待存储消息进行处理,包括:当所述磁盘检索结果为不重复时,将所述待存储消息写入磁盘;当所述磁盘检索结果为重复时,结束操作。9.一种消息推送方法,其特征在于,包括:获取待推送消息的关键字,所述关键字为所述待推送消息的目标用户ID;根据已推送消息的位图索引,采用布隆过滤器,对所述待推送消息和所述已推送消息进行基于所述关键字的判重操作,其中,所述已推送消息存储于磁盘中,所述已推送消息的位图索引存储于内存中;根据判重结果,对所述待推送消息进行推送处理。10.根据权利要求9所述的消息推送方法,其特征在于,所述根据已推送消息的位图索引,采用布隆过滤器,对所述待推送消息和所述已推送消息进行基于所述关键字的判重操作,包括:通过数个相互独立的随机映射函数,获取所述关键字的映射值;在所述已推送消息的位图索引中,查询与所述映射值对应的属性值;根据所述属性值判断所述待推送消息与所述已推送消息是否重复。11.根据权利要求9或10所述的消息推送方法,其特征在于,所述根据判重结果,对所述待推送消息进行推送...

【专利技术属性】
技术研发人员:刘振东王小瑞冯嘉
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛,KY

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1