CN108572789B - 磁盘存储方法和装置、消息推送方法和装置及电子设备 - Google Patents

磁盘存储方法和装置、消息推送方法和装置及电子设备 Download PDF

Info

Publication number
CN108572789B
CN108572789B CN201710146577.7A CN201710146577A CN108572789B CN 108572789 B CN108572789 B CN 108572789B CN 201710146577 A CN201710146577 A CN 201710146577A CN 108572789 B CN108572789 B CN 108572789B
Authority
CN
China
Prior art keywords
message
stored
pushed
disk
repeated
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201710146577.7A
Other languages
English (en)
Other versions
CN108572789A (zh
Inventor
刘振东
王小瑞
冯嘉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alibaba Cloud Computing Ltd
Original Assignee
Alibaba Group Holding Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201710146577.7A priority Critical patent/CN108572789B/zh
Publication of CN108572789A publication Critical patent/CN108572789A/zh
Application granted granted Critical
Publication of CN108572789B publication Critical patent/CN108572789B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • G06F3/0641De-duplication techniques

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

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

Description

磁盘存储方法和装置、消息推送方法和装置及电子设备
技术领域
本发明涉及数据存储技术领域,尤其涉及一种磁盘存储方法和装置、消息推送方法和装置及电子设备。
背景技术
在数据存储技术领域,大多数存储引擎存储在文件中的内容都分为两部分:日志(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所示,业务***中包括磁盘存储装置、内存和永久化存储数据的磁盘。业务***通过外部调用服务来获取数据,外部调用服务可以是任何能够提供或者产生数据的服务,其主要来自于业务***对其他***或者客户端的业务访问或者服务调用,外部调用服务是新数据产生的主要来源。磁盘存储装置主要用来执行下述图2和图3所示的处理流程,其主要用于获取待存储消息的关键字,根据消息的位图索引,对待存储消息和已存储消息进行基于关键字的判重操作,并根据判重结果,对待存储消息进行去重或磁盘存储处理。采用布隆滤波器在占用少量内存的情况下,即可完成对大量消息的检索,因此能够实现高效的海量消息去重存储。
上述实施例是对本发明实施例的技术原理和示例性的应用框架的说明,下面通过多个实施例来进一步对本发明实施例具体技术方案进行详细描述。
实施例一
图2为本发明提供的磁盘存储方法一个实施例的流程图,该方法的执行主体可以为上述实施例所描述的业务***。如图2所示,该磁盘存储方法包括如下步骤:
S201,获取待存储消息的关键字。
针对不同的应用场景,业务***可以基于消息的某项或某几项特定属性来设置不同的关键字。当业务***接收到待存储消息时,获取其提前设置好的关键字。
S202,根据已存储消息的位图索引,采用布隆滤波器,对待存储消息和已存储消息进行基于上述关键字的判重操作,其中,已存储消息存储于磁盘中,已存储消息的位图索引存储于内存中。
在本发明实施例中,假设获取到1个关键字,然后采用布隆滤波器(Bloom Filter)进行判重操作。具体地,分别通过k个相互独立的随机映射函数(如,哈希函数),获取关键字的映射值,即,将关键字映射到{1,2,3,...,m}的范围中k个值,然后,在已存储消息的位图索引(Bitmap)中查询这k个映射值所对应的位置的属性值(0或1),将k个属性值组成结果向量,如果结果向量中的每个元素的值都为1,则证明待存储消息和已存储消息中的关键字重复,否则,不重复。
本发明实施例中的位图索引为长度为m的二进制向量,业务***在每一次存储消息时,都通过上述布隆滤波器的k个相互独立的哈希函数对其关键字进行映射。在该二进制向量中,对于任意元素x,第i个哈希函数映射的位置hi(x)就被置为1(1≤i≤k),如果一个位置多次被置1,则只有第一次起作用。因此,每存储一次消息,该位图索引需要更新一次。由于布隆过滤器存在误判,其误判率与哈希函数的个数k及位图索引的长度m有关。因此,k与m的值越大,也就是说,哈希函数的个数越多、位图索引的长度越长,本发明实施例进行判重的精确度越高。
S203,根据上述判重结果,对待存储消息进行处理。
在本发明实施例中,业务***可以根据不同的判重结果进行不同的操作。例如,当待存储消息和已存储消息中的关键字重复时,丢弃该待存储消息结束操作;当待存储消息和已存储消息中的关键字不重复时,将其写入磁盘。
本发明实施例提供的磁盘存储方法,通过布隆滤波器根据位图索引对消息进行判重,并根据判重结果进行去重或存储处理,在占用少量内存的情况下,即可完成对大量消息的检索,实现了高效的海量消息去重存储。
实施例二
图3为本发明提供的磁盘存储方法另一个实施例的流程图。如图3所示,在上述实施例的基础上,本实施例提供的磁盘存储方法可以进一步包括以下步骤:
S301,获取待存储消息的关键字。
S302,采用布隆滤波器,对待存储消息和已存储消息进行基于上述关键字的判重操作。
S303,判断上述判重结果,若为重复,则执行步骤S304;若为不重复,则执行步骤S306。
在本发明实施例中,当判重结果为不重复(即,待存储消息和已存储消息中的关键字不重复)时,将待存储消息写入磁盘;当判重结果为重复时,由于布隆过滤器存在误判,此时存储消息和已存储消息中的关键字可能是不重复的,因此,业务***可以根据已存储消息的磁盘索引,对待存储消息进行基于关键字的磁盘(LogIndex)检索,然后根据磁盘检索结果对待存储消息进行处理。
S304,根据已存储消息的磁盘索引,对待存储消息进行基于关键字的磁盘检索。
具体地,本发明实施例提供的业务***,对待存储消息进行基于关键字的磁盘检索,即,去磁盘中查询具有该关键字的已存储消息是否存在。该步骤比较耗时,但是在实际应用场景中,消息重复往往比较少,因此走入该逻辑的情况也较少,大部分情况在步骤S302阶段即可被确定为“不重复”,从而直接进入写磁盘逻辑,以达到高效地判断是否重复。
S305,判断上述检索结果,若为重复,则结束操作;若为不重复,则执行步骤S306。
在本发明实施例中,当磁盘检索结果为不重复(即,待存储消息和已存储消息中的关键字不重复)时,将待存储消息写入磁盘;当磁盘检索结果为重复时,丢弃该待存储消息结束操作。
S306,将待存储消息写入磁盘。
另外,本发明实施例提供的业务***,在将待存储消息写入磁盘的同时,还执行更新位图索引和磁盘索引的操作,以便对后续产生的消息进行判重和磁盘检索的操作。
本发明实施例提供的磁盘存储方法,首先通过布隆滤波器根据位图索引对消息进行预判重,在占用少量内存的情况下,即可完成对大量消息的检索,然后结合磁盘检索进行定判,进一步降低误判率,根据判重结果进行去重或存储处理,实现了高效的海量消息去重存储。
实施例三
图4为本发明提供的磁盘存储方法又一个实施例的流程图。如图4所示,该方法的执行主体可以为具有高并发场景下海量数据存储能力的业务***,该磁盘存储方法可以包括如下步骤:
S401,获取待存储消息的关键字。
S402,在内存中,对待存储消息和已存储消息进行基于上述关键字的判重操作。
S403,判断上述判重结果,若为重复,则执行步骤S404;若为不重复,则执行步骤S406。
在本发明实施例中,当判重结果为不重复(即,待存储消息和已存储消息中的关键字不重复)时,将待存储消息写入磁盘;当判重结果为重复时,由于内存判重存在误判,此时存储消息和已存储消息中的关键字可能是不重复的,因此,业务***可以根据已存储消息的磁盘索引,对待存储消息进行基于关键字的磁盘(LogIndex)检索,然后根据磁盘检索结果对待存储消息进行处理。
S404,根据已存储消息的磁盘索引,对待存储消息进行基于关键字的磁盘检索。
具体地,本发明实施例提供的业务***,对待存储消息进行基于关键字的磁盘检索,即,去磁盘中查询具有该关键字的已存储消息是否存在。该步骤比较耗时,但是在实际应用场景中,消息重复往往比较少,因此走入该逻辑的情况也较少,大部分情况在步骤S402阶段即可被确定为“不重复”,从而直接进入写磁盘逻辑,以达到高效地判断是否重复。
S405,判断上述检索结果,若为重复,则结束操作;若为不重复,则执行步骤S406。
在本发明实施例中,当磁盘检索结果为不重复(即,待存储消息和已存储消息中的关键字不重复)时,将待存储消息写入磁盘;当磁盘检索结果为重复时,丢弃该待存储消息结束操作。
S406,将待存储消息写入磁盘。
另外,本发明实施例提供的业务***,在将待存储消息写入磁盘的同时,还执行更新磁盘索引的操作,以便对后续产生的消息进行判重和磁盘检索的操作。
本发明实施例提供的磁盘存储方法,首先在内存中对消息进行预判重,在占用少量内存的情况下,即可完成对大量消息的检索,然后结合磁盘检索进行定判,进一步降低误判率,根据判重结果进行去重或存储处理,实现了高效的海量消息去重存储。
实施例四
图5a为本发明提供的消息推送方法一个实施例的场景示意图。图5b为本发明提供的消息推送方法一个实施例的流程图。本发明实施例具体应用于高并发场景下的海量消息去重推送,该方法的执行主体可以为具有高并发场景下海量数据存储及推送能力的业务***。一个新闻产品在产生新的推送消息后,首先需要将消息写入磁盘中固定的位置,然后再向相关的目标用户统一推送。对于一个不断产生新的推送消息的新闻产品,考虑到用户体验,一般每天只允许给同一个用户发送一条推送。由于每天产生大量的新闻,每条新闻都对应有大量目标用户,而不同推送消息的目标用户之间可能会有重复。即,相对于同一个目标用户ID,需要进行去重推送。如图5a和图5b所示,该消息推送方法包括如下步骤:
S501,获取待推送消息的关键字,该关键字为待推送消息的目标用户ID(Identity,标识)。
S502,采用布隆滤波器,对待推送消息和已推送消息进行基于上述关键字的判重操作。
在本发明实施例中,新闻产品产生待推送消息后,首先将其发送至业务***,业务***首先对其进行布隆滤波。根据已推送消息的位图索引,对待推送消息和已推送消息进行判重操作。也就是说,通过数个相互独立的随机映射函数,来获取目标用户ID的映射值;并在已推送消息的位图索引中,查询与映射值对应的属性值;然后,根据各属性值来判断待推送消息与已推送消息是否重复。最后,根据判重结果对待推送消息进行推送处理。
S503,判断上述判重结果,若为重复,则执行步骤S504;若为不重复,则执行步骤S506。
在本发明实施例中,当待推送消息经过布隆滤波后的判重结果为不重复(即,待推送消息和已推送消息中的目标用户ID不重复,业务***未向该目标用户ID推送消息)时,将待推送消息写入磁盘并通过网络推送至其目标用户ID(如图5a中所示的用户1、用户2、用户3……或用户N);当布隆滤波后的判重结果为重复时,业务***可以根据已推送消息的磁盘索引,对待推送消息进行基于关键字的磁盘检索,然后根据磁盘检索结果对待推送消息进行推送处理。
S504,根据已推送消息的磁盘索引,对待推送消息进行基于关键字的磁盘检索。
S505,判断上述检索结果,若为重复,则结束推送操作;若为不重复,则执行步骤S506。
在本发明实施例中,当磁盘检索结果为不重复(即,待推送消息和已推送消息中的目标用户ID不重复,业务***未向该目标用户ID推送消息)时,将该待推送消息写入磁盘并推送至其目标用户ID;当磁盘检索结果为重复时,丢弃该待推送消息结束推送操作。
S506,将待推送消息写入磁盘。
S507,将待推送消息推送至目标用户ID。
另外,本发明实施例提供的业务***,在将待推送消息写入磁盘的同时,还执行更新位图索引和磁盘索引的操作,以便对后续产生的消息进行判重和磁盘检索的操作。
本发明实施例提供的消息推送方法,首先通过布隆滤波器根据位图索引对消息进行预判重,在占用少量内存的情况下,即可完成对大量消息的检索,然后结合磁盘检索进行定判,进一步降低误判率,根据判重结果进行去重推送处理,实现了高效的海量消息去重推送。
实施例五
图6为本发明提供的消息推送方法另一个实施例的流程图。该方法的执行主体可以为具有高并发场景下海量数据存储及推送能力的业务***。如图6所示,该消息推送方法包括如下步骤:
S601,获取待推送消息的关键字,该关键字为待推送消息的目标用户ID。
S602,在内存中,对待推送消息和已推送消息进行基于上述关键字的判重操作。
在本发明实施例中,新闻产品产生待推送消息后,首先将其发送至业务***,业务***首先对其进行内存判重操作,然后,根据判重结果对待推送消息进行推送处理。
S603,判断上述判重结果,若为重复,则执行步骤S604;若为不重复,则执行步骤S606。
在本发明实施例中,当待推送消息在内存中经过判重结果为不重复(即,待推送消息和已推送消息中的目标用户ID不重复,业务***未向该目标用户ID推送消息)时,将待推送消息写入磁盘并通过网络推送至其目标用户ID;当判重结果为重复时,业务***可以根据已推送消息的磁盘索引,对待推送消息进行基于关键字的磁盘检索,然后根据磁盘检索结果对待推送消息进行推送处理。
S604,根据已推送消息的磁盘索引,对待推送消息进行基于关键字的磁盘检索。
S605,判断上述检索结果,若为重复,则结束推送操作;若为不重复,则执行步骤S606。
在本发明实施例中,当磁盘检索结果为不重复(即,待推送消息和已推送消息中的目标用户ID不重复,业务***未向该目标用户ID推送消息)时,将该待推送消息写入磁盘并推送至其目标用户ID;当磁盘检索结果为重复时,丢弃该待推送消息结束推送操作。
S606,将待推送消息写入磁盘。
S607,将待推送消息推送至目标用户ID。
另外,本发明实施例提供的业务***,在将待推送消息写入磁盘的同时,还执行更新磁盘索引的操作,以便对后续产生的消息进行判重和磁盘检索的操作。
本发明实施例提供的消息推送方法,首先在内存中对消息进行预判重,在占用少量内存的情况下,即可完成对大量消息的检索,然后结合磁盘检索进行定判,进一步降低误判率,根据判重结果进行去重推送处理,实现了高效的海量消息去重推送。
实施例六
图7为本发明提供的磁盘存储装置一个实施例的结构示意图,可用于执行如图2所示的方法步骤。如图7所示,该装置可以包括:第一获取模块71、第一判重模块72和第一处理模块73。
其中,第一获取模块71用于获取待存储消息的关键字;第一判重模块72用于根据已存储消息的位图索引,采用布隆滤波器,对待存储消息和已存储消息进行基于关键字的判重操作,其中,已存储消息存储于磁盘中,已存储消息的位图索引存储于内存中;第一处理模块73用于根据第一判重模块72的判重结果,对待存储消息进行处理。
在本发明实施例中,针对不同的应用场景,业务***可以基于消息的某项或某几项特定属性来设置不同的关键字。当业务***接收到待存储消息时,第一获取模块71获取其提前设置好的关键字。然后,第一判重模块72根据已存储消息的位图索引,采用布隆滤波器,对待存储消息和已存储消息进行基于关键字的判重操作。判重结果包括重复和不重复,当待存储消息和已存储消息中的关键字重复时,第一处理模块73可以丢弃该待存储消息结束操作;当待存储消息和已存储消息中的关键字不重复时,第一处理模块73将其写入磁盘。
本发明实施例提供的磁盘存储装置,通过布隆滤波器根据位图索引对消息进行判重,并根据判重结果进行去重或存储处理,在占用少量内存的情况下,即可完成对大量消息的检索,实现了高效的海量消息去重存储。
实施例七
图8为本发明提供的磁盘存储装置另一个实施例的结构示意图,可用于执行如图3所示的方法步骤。如图8所示,在上述图7所示实施例的基础上,第一处理模块73可以包括:第一存储单元731、第一检索单元732和第一处理单元733。
其中,第一存储单元731用于当判重结果为不重复时,将待存储消息写入磁盘;第一检索单元732用于当判重结果为重复时,根据已存储消息的磁盘索引,对待存储消息进行基于关键字的磁盘检索;第一处理单元733用于根据第一检索单元732的磁盘检索结果对待存储消息进行处理。
在本发明实施例中,当判重结果为不重复(即,待存储消息和已存储消息中的关键字不重复)时,第一存储单元731将待存储消息写入磁盘;当判重结果为重复时,由于布隆过滤器存在误判,此时存储消息和已存储消息中的关键字可能是不重复的,因此,第一检索单元732可以根据已存储消息的磁盘索引,对待存储消息进行基于关键字的磁盘(LogIndex)检索,然后第一处理单元733根据磁盘检索结果对待存储消息进行处理。
具体地,第一处理单元733可以用于当磁盘检索结果为不重复(即,待存储消息和已存储消息中的关键字不重复)时,将待存储消息写入磁盘。当磁盘检索结果为重复时,丢弃该待存储消息结束操作。
进一步地,本发明实施例提供的磁盘存储装置还可以包括第一更新模块81。该第一更新模块6181可以用于在待存储消息被写入磁盘的同时,更新位图索引和磁盘索引,以便对后续产生的消息进行判重和磁盘检索的操作。
本发明实施例提供的磁盘存储装置,首先通过布隆滤波器根据位图索引对消息进行预判重,在占用少量内存的情况下,即可完成对大量消息的检索,然后结合磁盘检索进行定判,进一步降低误判率,根据判重结果进行去重或存储处理,实现了高效的海量消息去重存储。
实施例八
图9为本发明提供的消息推送装置一个实施例的结构示意图,可用于执行如图5b所示的方法步骤。如图9所示,该装置可以包括:第二获取模块91、第二判重模块92和第二处理模块93。
其中,第二获取模块91用于获取待推送消息的关键字,该关键字为待推送消息的目标用户ID;第二判重模块92用于根据已推送消息的位图索引,采用布隆滤波器,对待推送消息和已推送消息进行基于关键字的判重操作,其中,已推送消息存储于磁盘中,已推送消息的位图索引存储于内存中;第二处理模块93用于根据第二判重模块92的判重结果,对待推送消息进行推送处理。
进一步地,在本发明实施例中,第二处理模93可以包括:第二存储单元931、第二检索单元932和第二处理单元933。
其中,第二存储单元931用于当判重结果为不重复时,将待推送消息写入磁盘并推送至目标用户ID;第二检索单元932用于当判重结果为重复时,根据已推送消息的磁盘索引,对待提送消息进行基于关键字的磁盘检索;第二处理单元933用于根据第二检索单元932的磁盘检索结果对待推送消息进行推送处理。
更进一步地,第二处理单元933可以用于当磁盘检索结果为不重复时,将待推送消息写入磁盘并推送至目标用户ID。
另外,本发明实施例提供的消息推送装置,还可以包括:第二更新模块94。该第二更新模块94可以用于在待推送消息被写入磁盘的同时,更新位图索引和磁盘索引。
本发明实施例提供的消息推送装置,首先通过布隆滤波器根据位图索引对消息进行预判重,在占用少量内存的情况下,即可完成对大量消息的检索,然后结合磁盘检索进行定判,进一步降低误判率,根据判重结果进行去重推送处理,实现了高效的海量消息去重推送。
实施例九
以上描述了磁盘存储装置的内部功能和结构,该装置可实现为一种电子设备。图10为本发明提供的电子设备一个实施例的结构示意图。如图10所示,该电子设备包括存储器101和处理器102。
存储器101,用于存储程序。除上述程序之外,存储器101还可被配置为存储其它各种数据以支持在电子设备上的操作。这些数据的示例包括用于在电子设备上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。
存储器101可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
处理器102,与存储器101耦合,执行存储器101所存储的程序,以用于:
获取待存储消息的关键字;在内存中,对待存储消息和已存储消息进行基于关键字的判重操作;根据判重结果,对待存储消息进行处理。
在一可选实施方式中,处理器102在根据判重结果,对待存储消息进行处理时,具体可用于:
当判重结果为不重复时,将待存储消息写入磁盘;当判重结果为重复时,根据已存储消息的磁盘索引,对待存储消息进行基于关键字的磁盘检索,并根据磁盘检索结果对待存储消息进行处理。
进一步可选地,处理器102在根据磁盘检索结果对待存储消息进行处理时,具体可用于:
当磁盘检索结果为不重复时,将待存储消息写入磁盘;当磁盘检索结果为重复时,结束操作。
进一步,如图10所示,电子设备还可以包括:通信组件103、电源组件104、音频组件105、显示器106等其它组件。图10中仅示意性给出部分组件,并不意味着电子设备只包括图10所示组件。
通信组件103被配置为便于电子设备和其他设备之间有线或无线方式的通信。电子设备可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信组件83经由广播信道接收来自外部广播管理***的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件103还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
基于通信组件103,处理器102可以通过通信组件103将所有消费数据存储到外部数据库中。
电源组件104,为电子设备的各种组件提供电力。电源组件104可以包括电源管理***,一个或多个电源,及其他与为电子设备生成、管理和分配电力相关联的组件。
音频组件105被配置为输出和/或输入音频信号。例如,音频组件105包括一个麦克风(MIC),当电子设备处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器101或经由通信组件103发送。在一些实施例中,音频组件85还包括一个扬声器,用于输出音频信号。
显示器106包括屏幕,其屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。
实施例十
以上描述了消息推送装置的内部功能和结构,该装置可实现为一种电子设备。图11为本发明提供的电子设备另一个实施例的结构示意图。如图11所示,该电子设备包括存储器111和处理器112。
存储器111,用于存储程序。除上述程序之外,存储器111还可被配置为存储其它各种数据以支持在电子设备上的操作。这些数据的示例包括用于在电子设备上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。
存储器111可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
处理器112,与存储器111耦合,执行存储器111所存储的程序,以用于:
获取待推送消息的关键字,该关键字为待推送消息的目标用户ID;在内存中,对待推送消息和已推送消息进行基于关键字的判重操作;根据判重结果,对待推送消息进行推送处理。
在一可选实施方式中,处理器112在根据判重结果,对待推送消息进行推送处理时,具体可用于:
当判重结果为不重复时,将待推送消息写入磁盘并推送至目标用户ID;当判重结果为重复时,根据已推送消息的磁盘索引,对待推送消息进行基于关键字的磁盘检索,并根据磁盘检索结果对待推送消息进行推送处理。
进一步可选地,处理器112在根据磁盘检索结果对待推送消息进行推送处理时,具体可用于:
当磁盘检索结果为不重复时,将待推送消息写入磁盘并推送至目标用户ID;当磁盘检索结果为重复时,结束推送操作。
进一步,如图11所示,电子设备还可以包括:通信组件113、电源组件114、音频组件115、显示器116等其它组件。图11中仅示意性给出部分组件,并不意味着电子设备只包括图11所示组件。
通信组件113被配置为便于电子设备和其他设备之间有线或无线方式的通信。电子设备可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信组件113经由广播信道接收来自外部广播管理***的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件113还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
基于通信组件113,处理器112可以通过通信组件113将所有消费数据存储到外部数据库中。
电源组件114,为电子设备的各种组件提供电力。电源组件114可以包括电源管理***,一个或多个电源,及其他与为电子设备生成、管理和分配电力相关联的组件。
音频组件115被配置为输出和/或输入音频信号。例如,音频组件115包括一个麦克风(MIC),当电子设备处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器111或经由通信组件113发送。在一些实施例中,音频组件115还包括一个扬声器,用于输出音频信号。
显示器116包括屏幕,其屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (10)

1.一种磁盘存储方法,其特征在于,包括:
获取待存储消息的关键字;
根据已存储消息的位图索引,采用布隆滤波器,对所述待存储消息和所述已存储消息进行基于所述关键字的判重操作,其中,所述已存储消息存储于磁盘中,所述已存储消息的位图索引存储于内存中并且每存储一次消息,该位图索引需要更新一次;
根据判重结果,对所述待存储消息进行处理,
所述根据判重结果,对所述待存储消息进行处理,包括:
当所述判重结果为不重复时,将所述待存储消息写入磁盘;
当所述判重结果为重复时,根据所述已存储消息的磁盘索引,对所述待存储消息进行基于所述关键字的磁盘检索,并根据磁盘检索结果对所述待存储消息进行处理。
2.根据权利要求1所述的磁盘存储方法,其特征在于,所述根据已存储消息的位图索引,采用布隆滤波器,对所述待存储消息和所述已存储消息进行基于所述关键字的判重操作,包括:
通过数个相互独立的随机映射函数,获取所述关键字的映射值;
在所述已存储消息的位图索引中,查询与所述映射值对应的属性值;
根据所述属性值判断所述待存储消息与所述已存储消息是否重复。
3.根据权利要求1所述的磁盘存储方法,其特征在于,所述根据磁盘检索结果对所述待存储消息进行处理,包括:
当所述磁盘检索结果为不重复时,将所述待存储消息写入磁盘;
当所述磁盘检索结果为重复时,结束操作。
4.根据权利要求3所述的磁盘存储方法,其特征在于,在将所述待存储消息写入磁盘的同时,还包括:
更新所述位图索引和所述磁盘索引。
5.一种消息推送方法,其特征在于,包括:
获取待推送消息的关键字,所述关键字为所述待推送消息的目标用户ID;
根据已推送消息的位图索引,采用布隆过滤器,对所述待推送消息和所述已推送消息进行基于所述关键字的判重操作,其中,所述已推送消息存储于磁盘中,所述已推送消息的位图索引存储于内存中并且每存储一次消息,该位图索引需要更新一次;
根据判重结果,对所述待推送消息进行推送处理,
所述根据判重结果,对所述待推送消息进行推送处理,包括:
当所述判重结果为不重复时,将所述待推送消息写入磁盘并推送至所述目标用户ID;
当所述判重结果为重复时,根据所述已推送消息的磁盘索引,对所述待推送消息进行基于所述关键字的磁盘检索,并根据磁盘检索结果对所述待推送消息进行推送处理。
6.根据权利要求5所述的消息推送方法,其特征在于,所述根据已推送消息的位图索引,采用布隆过滤器,对所述待推送消息和所述已推送消息进行基于所述关键字的判重操作,包括:
通过数个相互独立的随机映射函数,获取所述关键字的映射值;
在所述已推送消息的位图索引中,查询与所述映射值对应的属性值;
根据所述属性值判断所述待推送消息与所述已推送消息是否重复。
7.根据权利要求5所述的消息推送方法,其特征在于,所述根据磁盘检索结果对所述待推送消息进行推送处理,包括:
当所述磁盘检索结果为不重复时,将所述待推送消息写入磁盘并推送至所述目标用户ID;
当所述磁盘检索结果为重复时,结束推送操作。
8.根据权利要求7所述的消息推送方法,其特征在于,在将所述待推送消息写入磁盘的同时,还包括:
更新所述位图索引和所述磁盘索引。
9.一种磁盘存储装置,其特征在于,包括:
第一获取模块,用于获取待存储消息的关键字;
第一判重模块,用于根据已存储消息的位图索引,采用布隆滤波器,对所述待存储消息和所述已存储消息进行基于所述关键字的判重操作,其中,所述已存储消息存储于磁盘中,所述已存储消息的位图索引存储于内存中并且每存储一次消息,该位图索引需要更新一次;
第一处理模块,用于根据所述第一判重模块的判重结果,对所述待存储消息进行处理,
所述根据判重结果,对所述待存储消息进行处理,包括:
当所述判重结果为不重复时,将所述待存储消息写入磁盘;
当所述判重结果为重复时,根据所述已存储消息的磁盘索引,对所述待存储消息进行基于所述关键字的磁盘检索,并根据磁盘检索结果对所述待存储消息进行处理。
10.一种消息推送装置,其特征在于,包括:
第二获取模块,用于获取待推送消息的关键字,所述关键字为所述待推送消息的目标用户ID;
第二判重模块,用于根据已推送消息的位图索引,采用布隆滤波器,对所述待推送消息和所述已推送消息进行基于所述关键字的判重操作,其中,所述已推送消息存储于磁盘中,所述已推送消息的位图索引存储于内存中并且每存储一次消息,该位图索引需要更新一次;
第二处理模块,用于根据所述第二判重模块的判重结果,对所述待推送消息进行推送处理,
所述根据判重结果,对所述待推送消息进行推送处理,包括:
当所述判重结果为不重复时,将所述待推送消息写入磁盘并推送至所述目标用户ID;
当所述判重结果为重复时,根据所述已推送消息的磁盘索引,对所述待推送消息进行基于所述关键字的磁盘检索,并根据磁盘检索结果对所述待推送消息进行推送处理。
CN201710146577.7A 2017-03-13 2017-03-13 磁盘存储方法和装置、消息推送方法和装置及电子设备 Active CN108572789B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710146577.7A CN108572789B (zh) 2017-03-13 2017-03-13 磁盘存储方法和装置、消息推送方法和装置及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710146577.7A CN108572789B (zh) 2017-03-13 2017-03-13 磁盘存储方法和装置、消息推送方法和装置及电子设备

Publications (2)

Publication Number Publication Date
CN108572789A CN108572789A (zh) 2018-09-25
CN108572789B true CN108572789B (zh) 2022-01-28

Family

ID=63578415

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710146577.7A Active CN108572789B (zh) 2017-03-13 2017-03-13 磁盘存储方法和装置、消息推送方法和装置及电子设备

Country Status (1)

Country Link
CN (1) CN108572789B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109743378B (zh) * 2018-12-27 2021-08-13 北京爱奇艺科技有限公司 信息推送***、信息推送方法及电子设备
CN110113393B (zh) * 2019-04-18 2022-04-22 北京奇艺世纪科技有限公司 一种消息推送方法、装置、电子设备及介质
CN110781464A (zh) * 2019-10-18 2020-02-11 苏州浪潮智能科技有限公司 一种唯一性校验方法、装置、设备及可读存储介质
CN111651438A (zh) * 2020-04-28 2020-09-11 银江股份有限公司 基于MapDB的结构化数据去重方法、装置、设备及介质
CN112463077B (zh) * 2020-12-16 2021-11-12 北京云宽志业网络技术有限公司 数据块处理方法、装置、设备及存储介质
CN112836693B (zh) * 2021-02-04 2024-05-24 北京秒针人工智能科技有限公司 一种光学字符识别重复检测方法和***
CN113347081A (zh) * 2021-08-05 2021-09-03 南京金宁汇科技有限公司 一种消息中继查重的检索方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102810107A (zh) * 2011-06-01 2012-12-05 英业达股份有限公司 重复数据的处理方法
CN103279532A (zh) * 2013-05-31 2013-09-04 北京鹏宇成软件技术有限公司 多集合元素去重并标识所属集合的过滤***及其方法
US8965854B2 (en) * 2010-11-16 2015-02-24 Actifio, Inc. System and method for creating deduplicated copies of data by tracking temporal relationships among copies using higher-level hash structures
CN105630834A (zh) * 2014-11-07 2016-06-01 中兴通讯股份有限公司 一种实现重复数据删除的方法及装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110276744A1 (en) * 2010-05-05 2011-11-10 Microsoft Corporation Flash memory cache including for use with persistent key-value store
US20120159098A1 (en) * 2010-12-17 2012-06-21 Microsoft Corporation Garbage collection and hotspots relief for a data deduplication chunk store
US8817541B2 (en) * 2012-11-09 2014-08-26 Sandisk Technologies Inc. Data search using bloom filters and NAND based content addressable memory
CN103970744B (zh) * 2013-01-25 2016-12-28 华中科技大学 一种可扩展的重复数据检测方法
CN105320654B (zh) * 2014-05-28 2018-08-31 中国科学院深圳先进技术研究院 动态布隆过滤器和基于动态布隆过滤器的元素操作方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8965854B2 (en) * 2010-11-16 2015-02-24 Actifio, Inc. System and method for creating deduplicated copies of data by tracking temporal relationships among copies using higher-level hash structures
CN102810107A (zh) * 2011-06-01 2012-12-05 英业达股份有限公司 重复数据的处理方法
CN103279532A (zh) * 2013-05-31 2013-09-04 北京鹏宇成软件技术有限公司 多集合元素去重并标识所属集合的过滤***及其方法
CN105630834A (zh) * 2014-11-07 2016-06-01 中兴通讯股份有限公司 一种实现重复数据删除的方法及装置

Also Published As

Publication number Publication date
CN108572789A (zh) 2018-09-25

Similar Documents

Publication Publication Date Title
CN108572789B (zh) 磁盘存储方法和装置、消息推送方法和装置及电子设备
US9081838B2 (en) Methods, apparatuses, and computer program products for database record recovery
KR102423125B1 (ko) 데이터베이스 동기화
CN106407360B (zh) 一种数据的处理方法及装置
CN105468644B (zh) 一种用于在数据库中进行查询的方法与设备
US11165740B2 (en) Message sending method and terminal device
CN110874358A (zh) 多属性列的存储、检索方法和装置以及电子设备
CN112764663B (zh) 云存储空间的空间管理方法、装置和***、电子设备以及计算机可读存储介质
CN109213431B (zh) 多副本数据的一致性检测方法和装置以及电子设备
CN114661666B (zh) 数据搜索方法、装置、设备及存储介质
CN112685557B (zh) 可视化信息资源管理方法及装置
CN111291112A (zh) 分布式数据库的读写控制方法和装置以及电子设备
CN113420191B (zh) 数据存储方法和装置、数据查询方法和装置、数据结构、电子设备及计算机可读存储介质
CN112486979B (zh) 数据处理方法、装置和***、电子设备以及计算机可读存储介质
CN111291017B (zh) 镜像仓库的镜像存储、提取方法及装置
CN113010514B (zh) 热加载方法及装置
CN110851398A (zh) 垃圾数据的回收处理方法、装置及电子设备
CN111831472B (zh) 快照创建方法和装置以及电子设备
CN104216919A (zh) 用于完善电子地图数据的方法及***
CN112612865A (zh) 一种基于Elasticsearch的文档存储方法和装置
CN111274410A (zh) 一种数据存储方法、装置及数据查询方法、装置
US20200159734A1 (en) Data tracking apparatus, method, and non-transitory computer readable storage medium thereof
CN110866003A (zh) 索引值数目的估算方法和装置以及电子设备
CN110865897B (zh) 冲突检测方法和装置以及电子设备
CN110633389A (zh) 区块链数据的处理方法、装置、***以及电子设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20230606

Address after: Room 1-2-A06, Yungu Park, No. 1008 Dengcai Street, Sandun Town, Xihu District, Hangzhou City, Zhejiang Province, 310030

Patentee after: Aliyun Computing Co.,Ltd.

Address before: Box 847, four, Grand Cayman capital, Cayman Islands, UK

Patentee before: ALIBABA GROUP HOLDING Ltd.

TR01 Transfer of patent right