CN106959928B - 一种基于多级缓存结构的流式数据实时处理方法及系统 - Google Patents

一种基于多级缓存结构的流式数据实时处理方法及系统 Download PDF

Info

Publication number
CN106959928B
CN106959928B CN201710176167.7A CN201710176167A CN106959928B CN 106959928 B CN106959928 B CN 106959928B CN 201710176167 A CN201710176167 A CN 201710176167A CN 106959928 B CN106959928 B CN 106959928B
Authority
CN
China
Prior art keywords
batch
batchid
data
result
online
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
CN201710176167.7A
Other languages
English (en)
Other versions
CN106959928A (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.)
Huazhong University of Science and Technology
Original Assignee
Huazhong University of Science and Technology
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 Huazhong University of Science and Technology filed Critical Huazhong University of Science and Technology
Priority to CN201710176167.7A priority Critical patent/CN106959928B/zh
Publication of CN106959928A publication Critical patent/CN106959928A/zh
Application granted granted Critical
Publication of CN106959928B publication Critical patent/CN106959928B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种基于多级缓存结构的流式数据实时处理方法和系统,属于大数据流式处理技术领域。本发明方法将流式数据使用在线处理和批量处理以满足处理的低延迟、高吞吐、可靠性。将在线处理结果存储于在线缓存,并设计在线缓存结构使其自动高效删除过期数据;将近期访问离线持久化数据库的数据存于批量缓存,并采用基于LRU的策略高效淘汰过期数据;将查询结果高效合并以快速返回给用户。本发明还实现了一种基于多级缓存结构的流式数据实时处理系统。本发明能够解决现有方法中存在的存储与查询效率不高,可靠性低和内存占用率较高的问题。

Description

一种基于多级缓存结构的流式数据实时处理方法及系统
技术领域
本发明属于大数据流式处理技术领域,更具体地,涉及一种基于多级缓存结构的流式数据实时处理方法及系统。
背景技术
IDC报告显示,预计到2020年全球数据总量将超过40ZB,且全球的数据量以每年58%的速度增长,这个速度还在不断加快,其中很大一部分数据是由传感网络、社交网络、Web浏览等产生的流式数据,该数据具有实时性、易失性、突发性、随机性、无限性等特征,需要高效、快速、可靠地处理流式数据,并将处理结果实时输出或实时查询。
在数据处理方面。针对流式数据的特点,大致可以分为三种处理框架:1、纯流式处理框架,如JStorm、Storm等,其定义由Bolt和Spout组成的任务拓扑结构会以元组形式不断处理高速到达的数据流,其处理延迟低,但吞吐率和可靠性较低;2、面向批的流式处理框架,如Spark Streaming、Sss-mapreduce、Muppet等,其首先将流式数据聚合成微小的批,然后再进行处理,由于处理前需要等待数据聚合成批,因此其处理延迟相对于纯流式处理框架较高;3、混合处理框架,如Lambda、Summingbird等,其分为批量层、在线层、服务层,批量层使用批量处理,如MapReduce;在线层使用流式处理,如Storm;其结合流式处理和批量处理,因此既具有批处理的高吞吐率和高可靠性,又具有流式处理的低延迟。
在数据存储方面。针对Lambda、Summingbird等框架,对于流式处理结果的存储使用Memcache、Redis等内存数据库;对于批量处理结果的存储则使用HBase、MySQL等持久化数据库进行存储。流式数据经过处理后进行存储,然而通用内存数据库并未对数据存储进行优化,如Redis的相同批次结果可能存储在不同的桶中,这样会导致在查询时多次定位桶寻找相应结果,加大查询延迟,因此需要高效地存储数据以保证查询的高效性;并且通用内存数据库由于保存了数据存活时间等信息,因此在内存占用率方面也较高,因此需要设计高效的缓存结构以降低内存使用率;此外,对于实时查询而言,Lambda、Summingbird等框架并未缓存批量层的结果,这样在热点事件的高并发高重复查询情况下,请求查询延迟较高。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提供了一种基于多级缓存结构的流式数据实时处理方法及系统,其目的在于将流式数据使用在线处理和批量处理,将在线处理结果存储于在线缓存,并设计在线缓存结构使其自动高效删除过期数据;将近期访问离线持久化数据库的数据存于批量缓存,并采用基于LRU的策略高效淘汰过期数据;将查询结果高效合并以快速返回给用户,由此解决现有方法中存在的存储与查询效率不高,可靠性低,内存占用率较高的问题。
为实现上述目的,按照本发明的一个方面,提供了一种基于多级缓存结构的流式数据实时处理方法,该方法包括以下步骤:
(1)数据流操作判断,若是数据流存储,则进入步骤(2);若是数据流查询,则进入步骤(7)和步骤(8);
(2)数据预处理:将高速数据流导入消息处理队列;对消息队列中消息添加时间信息,根据时间确定消息BatchID;随后进入步骤(3)和步骤(5);
(3)在线数据存储:将消息流转发至在线层使用在线处理框架进行在线处理,将在线处理结果((K,BatchID),V)存储于在线缓存中;
(4)关键字存储:将关键字K存储于二进制向量数据结构中,存储结束;
(5)批量数据存储:将消息流转发至批量层,待一个批次消息全部存储后,使用批量处理框架进行批量处理,将批量处理结果(K,(BatchID,V))存储于K-V数据库中;
(6)批量缓存更新:批量处理完成后,更新批量缓存;存储结束;
(7)在线缓存查询:用户提交查询请求,根据关键字K查询在线缓存;
(8)批量缓存查询:用户提交查询请求,根据关键字K查询批量缓存;
(9)结果合并返回:合并在线结果与批量缓存结果,将合并结果返回给用户;查询结束。
进一步地,所述步骤(2)中对消息队列中消息添加时间信息,根据时间确定消息BatchID具体包含以下子步骤:
(21)判断消息是否包含时间信息;若是,则进入步骤(22);若否,则根据进入消息队列时间添加时间信息;
(22)提取消息包含的时间;
(23)根据时间确定消息BatchID。
进一步地,所述步骤(3)中将在线处理结果((K,BatchID),V)存储于在线缓存中具体包含以下子步骤:
(31)对K进行哈希操作,获取哈希码,对哈希码和桶的大小n进行与操作以确定桶编号i;
(32)判断桶的第i项是否为空,若是,则创建平衡树;进入步骤(23);若否,直接进入步骤(23);
(33)判断平衡树是否包含K,若是,则进入步骤(24);若否,则创建结果缓存存放K对应的(BatchID,V);
(34)将结果缓存大小和K对应的BatchID进行与操作以确定存放位置temp;
(35)将(BatchID,V)存放至结果缓存的第temp项中。
进一步地,所述步骤(4)具体包括以下子步骤:
(41)提取K对应的BatchID;
(42)判断BatchID是否等于前个BatchID,若是,则将K存入二进制向量数据结构;若否,则将前个BatchID和二进制向量数据结构存入哈希映射中;
(43)将BatchID赋值给前个BatchID;
(44)创建新的二进制向量数据结构。
进一步地,所述步骤(6)具体包括以下子步骤:
(61)根据批量层的BatchID从哈希映射中获取对应的二进制向量数据结构;
(62)遍历批量缓存的K,判断二进制向量数据结构是否包含K,若是,则从批量缓存中删除K对应的记录;若否,则跳过该K;
(63)清空该二进制向量数据结构;
(64)从哈希映射中移除BatchID和二进制向量数据结构。
进一步地,所述步骤(7)具体包括以下子步骤:
(71)对K进行哈希操作,获取哈希码;
(72)对哈希码和桶的大小n进行与操作以确定桶编号i;
(73)判断桶的第i项是否为空,若是,则表示在线缓存无结果;若否,则返回(BatchID,V)列表。
进一步地,所述步骤(8)具体包括以下子步骤:
(81)使用K查询批量缓存;
(82)判断查询结果是否为空;若是,则进入步骤(83);若否,查询结果为(BatchID,V);
(83)使用K查询K-V数据库;
(84)判断查询结果是否为空;若是,则表示批量层无结果;若否,查询结果为(BatchID,V)。
进一步地,所述步骤(9)具体包括以下子步骤:
(91)遍历在线缓存结果(BatchID,V)列表;
(92)判断BatchID是否大于批量层的BatchID;若是,则与批量层的V合并;若否,则跳过;
(93)遍历完后得到合并总结果。
按照本发明的另一方面,提供了一种基于多级缓存结构的流式数据实时处理系统,该系统包括以下模块:
数据流操作判断模块,用于判断数据流操作,若是数据流存储,则进入数据预处理模块;若是数据流查询,则进入在线缓存查询模块和批量缓存查询模块;
数据预处理模块,用于将高速数据流导入消息处理队列;对消息队列中消息添加时间信息,根据时间确定消息BatchID;随后进入在线数据存储模块和批量数据存储模块;
在线数据存储模块,用于将消息流转发至在线层使用在线处理框架进行在线处理,将在线处理结果((K,BatchID),V)存储于在线缓存中;
关键字存储模块,用于将关键字K存储于二进制向量数据结构中,存储结束;
批量数据存储模块,用于将消息流转发至批量层,待一个批次消息全部存储后,使用批量处理框架进行批量处理,将批量处理结果(K,(BatchID,V))存储于K-V数据库中;
批量缓存更新模块,用于批量处理完成后,更新批量缓存;存储结束;
在线缓存查询模块,用于用户提交查询请求,根据关键字K查询在线缓存;
批量缓存查询模块,用于用户提交查询请求,根据关键字K查询批量缓存;
结果合并返回模块,用于合并在线结果与批量缓存结果,将合并结果返回给用户;查询结束。
进一步地,所述数据预处理模块中对消息队列中消息添加时间信息,根据时间确定消息BatchID具体包含以下单元:
时间信息判断单元,用于判断消息是否包含时间信息;若是,则进入时间提取单元;若否,则根据进入消息队列时间添加时间信息;
时间提取单元,用于提取消息包含的时间;
BatchID确定单元,用于根据时间确定消息BatchID。
进一步地,所述在线数据存储模块中将在线处理结果((K,BatchID),V)存储于在线缓存中具体包括:
桶编号确定单元,用于对K进行哈希操作,获取哈希码,对哈希码和桶的大小n进行与操作以确定桶编号i;
桶判断单元,用于判断桶的第i项是否为空,若是,则创建平衡树;进入平衡树判断单元;若否,直接进入平衡树判断单元;
平衡树判断单元,用于判断平衡树是否包含K,若是,则进入存放位置确定单元;若否,则创建结果缓存存放K对应的(BatchID,V);
存放位置确定单元,用于将结果缓存大小和K对应的BatchID进行与操作以确定存放位置temp;
存放单元,用于将(BatchID,V)存放至结果缓存的第temp项中。
进一步地,所关键字存储模块具体包括:
提取单元,用于提取K对应的BatchID;
判断对比单元,用于判断BatchID是否等于前个BatchID,若是,则将K存入二进制向量数据结构;若否,则将前个BatchID和二进制向量数据结构存入哈希映射中;
赋值单元,用于将BatchID赋值给前个BatchID;
创建单元,用于创建新的二进制向量数据结构。
进一步地,所述批量缓存更新模块具体包括:
数据结构获取单元,用于根据批量层的BatchID从哈希映射中获取对应的二进制向量数据结构;
数据结构判断单元,用于遍历批量缓存的K,判断二进制向量数据结构是否包含K,若是,则从批量缓存中删除K对应的记录;若否,则跳过该K;
清空单元,用于清空该二进制向量数据结构;
移除单元,用于从哈希映射中移除BatchID和二进制向量数据结构。
进一步地,所述在线缓存查询模块具体包括:
哈希码获取单元,用于对K进行哈希操作,获取哈希码;
与操作单元,用于对哈希码和桶的大小n进行与操作以确定桶编号i;
判断单元,用于判断桶的第i项是否为空,若是,则表示在线缓存无结果;若否,则返回(BatchID,V)列表。
进一步地,所述批量缓存查询模块具体包括以下单元:
批量缓存查询单元,用于使用K查询批量缓存;
查询判断第一单元,用于判断查询结果是否为空;若是,则进入数据库查询单元;若否,查询结果为(BatchID,V);
数据库查询单元,用于使用K查询K-V数据库;
查询判断第二单元,用于判断查询结果是否为空;若是,则表示批量层无结果;若否,查询结果为(BatchID,V)。
进一步地,所述结果合并返回单元具体包括以下单元:
在线缓存遍历单元,用于遍历在线缓存结果(BatchID,V)列表;
对比判断单元,用于判断BatchID是否大于批量层的BatchID;若是,则与批量层的V合并;若否,则跳过;
合并返回结果单元,用于遍历完后得到合并总结果。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有以下技术特征及有益效果:
(1)本发明通过挖掘缓存数据存储结构中影响存储时间的变动因素,并探讨变动因素对存储时间的影响,设计合理的Hash存储结构来提升存储速度和访问效率;
(2)本发明通过在线缓存引进自动替换策略和批量缓存基于LRU替换策略来提高查询效率和系统的稳定性。
附图说明
图1为本发明实施例的实施步骤流程图;
图2为本发明实施例中步骤(2)的细化流程图。
图3为本发明实施例中步骤(3)的细化流程图。
图4为本发明实施例中步骤(4)的细化流程图。
图5为本发明实施例中步骤(5)的细化流程图。
图6为本发明实施例中步骤(7)的细化流程图。
图7为本发明实施例中步骤(8)的细化流程图。
图8为本发明实施例中步骤(9)的细化流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
如图1所示为本发明实施例具体流程图
(1)数据流操作判断,若是数据流存储,则进入步骤(2);若是数据流查询,则进入步骤(7)和步骤(8);
(2)数据预处理:将高速数据流导入消息处理队列以平衡数据速率,提高系统的稳定性;对消息队列中消息添加时间信息,根据时间确定消息BatchID;随后进入步骤(3)和步骤(5);如图2所示,本步骤中对消息队列中消息添加时间信息具体包括以下子步骤:
(21)判断消息是否包含时间信息;若是,则进入步骤(22);若否,则根据进入消息队列的时间添加时间信息;
(22)使用TimeExtractor提取时间;
(23)根据时间确定BatchID。
(3)在线数据存储:将消息流转发至在线层使用Storm进行在线处理,将在线处理结果((K,BatchID),V)存储于在线缓存中;如图3所示,本步骤中将在线处理结果((K,BatchID),V)存储于在线缓存中具体包括以下子步骤:
(31)对K进行哈希操作,通过Java对象的hashCode函数获取hash码;对hash码和桶hashArray的大小n进行与操作以确定桶编号i;
(32)判断桶hashArray[i]是否为空;若是,则创建平衡树balanceTree;进入步骤(33);若否,则直接进入步骤(33);
(33)判断balanceTree是否包含关键字K;若是,则进入步骤(55);若否,则创建valueCache存放K对应的(BatchID,V);
(34)将valueCache大小和K对应的BatchID进行与操作以确定存放位置temp;
(35)将(BatchID,V)存放至valueCache[temp]中。
(4)关键字存储:将关键字K存储于BloomFilter中,存储结束;如图4所示,本步骤具体包括以下子步骤:
(41)提取K对应的BatchID;
(42)判断BatchID是否等于lastBatchID,若是,则将K存入BloomFilter;若否,则将前个BatchID和BloomFilter存入HashMap中;
(43)将BatchID赋值给lastBatchID;
(44)创建新的BloomFilter。
(5)批量数据存储:将消息流转发至批量层,待一个批次消息全部存储后,使用批量处理框架进行批量处理,批量处理结果(K,(BatchID,V))存储于HBase中;
(6)批量缓存更新:批量处理完成后,更新批量缓存;存储结束;
(61)根据批量层的BatchID从HashMap中获取对应的BloomFilter;
(62)遍历批量缓存BatchCache的K,判断BloomFilter是否包含K,若是,则从批量缓存BatchCache中删除K对应的记录;若否,则跳过该K;
(63)清空该BloomFilter;
(64)从HashMap中移除BatchID和BloomFilter。
(7)在线缓存查询:用户U提交查询请求,根据关键字K查询在线缓存;如图6所示,本步骤具体包括以下子步骤:
(71)对K进行哈希操作,通过Java对象的hashCode函数获取hash码;
(72)对hash码和桶hashArray的大小n进行与操作以确定桶编号i;
(73)判断桶hashArray[i]是否为空;若是,则表示在线缓存无结果;若否,则返回结果List((BatchID,V))。
(8)批量缓存查询:用户U提交查询请求,根据关键字K查询批量缓存;如图7所示,本步骤具体包括以下子步骤:
(81)使用K查询批量缓存;
(82)判断查询结果是否为空,若是,则进入步骤(113);若否,查询结果为(BatchID,V);
(83)使用K查询HBase;
(84)判断查询结果是否为空,若是,则表示批量层无结果;若否,查询结果为(BatchID,V)。
(9)结果合并返回:合并在线结果与批量缓存结果,将合并结果返回给用户U;查询结束。如图8所示,本步骤具体包括以下子步骤:
(91)遍历在线缓存结果List((BatchID,V));
(92)判断BatchID是否大于批量层的BatchID,若是,则与批量层的V合并;若否,则跳过;
(93)遍历完后得到合并总结果。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (8)

1.一种基于多级缓存结构的流式数据实时处理方法,其特征在于,所述方法包括以下步骤:
(1)数据流操作判断,若是数据流存储,则进入步骤(2);若是数据流查询,则同时进入步骤(7)和步骤(8);
(2)数据预处理:将高速数据流导入消息处理队列;对消息队列中消息添加时间信息,根据时间确定消息BatchID;随后同时进入步骤(3)和步骤(5);
(3)在线数据存储:将消息流转发至在线层使用在线处理框架进行在线处理,将在线处理结果((K,BatchID),V)存储于在线缓存中;
(4)关键字存储:将关键字K存储于二进制向量数据结构中,存储结束;
(5)批量数据存储:将消息流转发至批量层,待一个批次消息全部存储后,使用批量处理框架进行批量处理,将批量处理结果(K,(BatchID,V))存储于K-V数据库中;
(6)批量缓存更新:批量处理完成后,更新批量缓存;存储结束;
(7)在线缓存查询:用户提交查询请求,根据关键字K查询在线缓存;
(8)批量缓存查询:用户提交查询请求,根据关键字K查询批量缓存;
(9)结果合并返回:合并在线结果与批量缓存结果,将合并结果返回给用户;查询结束;
所述步骤(3)中将在线处理结果((K,BatchID),V)存储于在线缓存中具体包含以下子步骤:
(31)对K进行哈希操作,获取哈希码,对哈希码和桶的大小n进行与操作以确定桶编号i;
(32)判断桶的第i项是否为空,若是,则创建平衡树;进入步骤(33);若否,直接进入步骤(33);
(33)判断平衡树是否包含K,若是,则进入步骤(34);若否,则创建结果缓存存放K对应的(BatchID,V);
(34)将结果缓存大小和K对应的BatchID进行与操作以确定存放位置temp;
(35)将(BatchID,V)存放至结果缓存的第temp项中。
2.根据权利要求1所述的一种基于多级缓存结构的流式数据实时处理方法,其特征在于,所述步骤(4)具体包括以下子步骤:
(41)提取K对应的BatchID;
(42)判断BatchID是否等于前个BatchID,若是,则将K存入二进制向量数据结构;若否,则将前个BatchID和二进制向量数据结构存入哈希映射中;
(43)将BatchID赋值给前个BatchID;
(44)创建新的二进制向量数据结构。
3.根据权利要求1所述的一种基于多级缓存结构的流式数据实时处理方法,其特征在于,所述步骤(6)具体包括以下子步骤:
(61)根据批量层的BatchID从哈希映射中获取对应的二进制向量数据结构;
(62)遍历批量缓存的K,判断二进制向量数据结构是否包含K,若是,则从批量缓存中删除K对应的记录;若否,则跳过该K;
(63)清空该二进制向量数据结构;
(64)从哈希映射中移除BatchID和二进制向量数据结构。
4.根据权利要求1所述的一种基于多级缓存结构的流式数据实时处理方法,其特征在于,所述步骤(7)具体包括以下子步骤:
(71)对K进行哈希操作,获取哈希码;
(72)对哈希码和桶的大小n进行与操作以确定桶编号i;
(73)判断桶的第i项是否为空,若是,则表示在线缓存无结果;若否,则返回(BatchID,V)列表。
5.一种基于多级缓存结构的流式数据实时处理系统,其特征在于,所述系统包括以下部分:
数据流操作判断模块,用于判断数据流操作,若是数据流存储,则进入数据预处理模块;若是数据流查询,则同时进入在线缓存查询模块和批量缓存查询模块;
数据预处理模块,用于将高速数据流导入消息处理队列;对消息队列中消息添加时间信息,根据时间确定消息BatchID;随后同时进入在线数据存储模块和批量数据存储模块;
在线数据存储模块,用于将消息流转发至在线层使用在线处理框架进行在线处理,将在线处理结果((K,BatchID),V)存储于在线缓存中;
关键字存储模块,用于将关键字K存储于二进制向量数据结构中,存储结束;
批量数据存储模块,用于将消息流转发至批量层,待一个批次消息全部存储后,使用批量处理框架进行批量处理,将批量处理结果(K,(BatchID,V))存储于K-V数据库中;
批量缓存更新模块,用于批量处理完成后,更新批量缓存;存储结束;
在线缓存查询模块,用于用户提交查询请求,根据关键字K查询在线缓存;
批量缓存查询模块,用于用户提交查询请求,根据关键字K查询批量缓存;
结果合并返回模块,用于合并在线结果与批量缓存结果,将合并结果返回给用户;查询结束;
所述在线数据存储模块中将在线处理结果((K,BatchID),V)存储于在线缓存中具体包括:
桶编号确定单元,用于对K进行哈希操作,获取哈希码,对哈希码和桶的大小n进行与操作以确定桶编号i;
桶判断单元,用于判断桶的第i项是否为空,若是,则创建平衡树;进入平衡树判断单元;若否,直接进入平衡树判断单元;
平衡树判断单元,用于判断平衡树是否包含K,若是,则进入存放位置确定单元;若否,则创建结果缓存存放K对应的(BatchID,V);
存放位置确定单元,用于将结果缓存大小和K对应的BatchID进行与操作以确定存放位置temp;
存放单元,用于将(BatchID,V)存放至结果缓存的第temp项中。
6.根据权利要求5所述的一种基于多级缓存结构的流式数据实时处理系统,其特征在于,所关键字存储模块具体包括:
提取单元,用于提取K对应的BatchID;
判断对比单元,用于判断BatchID是否等于前个BatchID,若是,则将K存入二进制向量数据结构;若否,则将前个BatchID和二进制向量数据结构存入哈希映射中;
赋值单元,用于将BatchID赋值给前个BatchID;
创建单元,用于创建新的二进制向量数据结构。
7.根据权利要求5所述的一种基于多级缓存结构的流式数据实时处理系统,其特征在于,所述批量缓存更新模块具体包括:
数据结构获取单元,用于根据批量层的BatchID从哈希映射中获取对应的二进制向量数据结构;
数据结构判断单元,用于遍历批量缓存的K,判断二进制向量数据结构是否包含K,若是,则从批量缓存中删除K对应的记录;若否,则跳过该K;
清空单元,用于清空该二进制向量数据结构;
移除单元,用于从哈希映射中移除BatchID和二进制向量数据结构。
8.根据权利要求5所述的一种基于多级缓存结构的流式数据实时处理系统,其特征在于,所述在线缓存查询模块具体包括:
哈希码获取单元,用于对K进行哈希操作,获取哈希码;
与操作单元,用于对哈希码和桶的大小n进行与操作以确定桶编号i;
判断单元,用于判断桶的第i项是否为空,若是,则表示在线缓存无结果;若否,则返回(BatchID,V)列表。
CN201710176167.7A 2017-03-23 2017-03-23 一种基于多级缓存结构的流式数据实时处理方法及系统 Active CN106959928B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710176167.7A CN106959928B (zh) 2017-03-23 2017-03-23 一种基于多级缓存结构的流式数据实时处理方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710176167.7A CN106959928B (zh) 2017-03-23 2017-03-23 一种基于多级缓存结构的流式数据实时处理方法及系统

Publications (2)

Publication Number Publication Date
CN106959928A CN106959928A (zh) 2017-07-18
CN106959928B true CN106959928B (zh) 2019-08-13

Family

ID=59471008

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710176167.7A Active CN106959928B (zh) 2017-03-23 2017-03-23 一种基于多级缓存结构的流式数据实时处理方法及系统

Country Status (1)

Country Link
CN (1) CN106959928B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110069565B (zh) * 2017-11-16 2023-06-09 金篆信科有限责任公司 一种分布式数据库数据批量处理的方法及装置
CN109344296B (zh) * 2018-08-30 2021-11-26 武汉斗鱼网络科技有限公司 实现Redis的HASH键的域生命周期控制方法、系统、服务器及存储介质
CN109299079A (zh) * 2018-09-11 2019-02-01 南京朝焱智能科技有限公司 一种高速数据库设计方法
CN110471940B (zh) * 2019-08-05 2021-10-08 威讯柏睿数据科技(北京)有限公司 一种流关系数据库管理系统
CN111830039B (zh) * 2020-07-22 2021-07-27 南京认知物联网研究院有限公司 一种智能化的产品质量检测方法及装置
CN112241407B (zh) * 2020-09-11 2023-06-06 重庆锐云科技有限公司 高尔夫球场会员数据处理方法、客户管理系统及存储介质
CN113760979A (zh) * 2020-11-12 2021-12-07 北京沃东天骏信息技术有限公司 用于生成信息的方法和装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103853766A (zh) * 2012-12-03 2014-06-11 中国科学院计算技术研究所 一种面向流式数据的在线处理方法及系统
CN104252466A (zh) * 2013-06-26 2014-12-31 阿里巴巴集团控股有限公司 流计算处理方法、设备和系统
CN104536959A (zh) * 2014-10-16 2015-04-22 南京邮电大学 一种Hadoop存取海量小文件的优化方法
CN104657502A (zh) * 2015-03-12 2015-05-27 浪潮集团有限公司 基于Hadoop对海量数据进行实时统计的系统和方法
CN105893541A (zh) * 2016-03-31 2016-08-24 中国科学院软件研究所 一种基于混合存储的流式数据自适应持久化方法及系统

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7136980B2 (en) * 2002-06-28 2006-11-14 Sun Microsystems, Inc. Computer system implementing synchronized broadcast using skew control and queuing
WO2006045029A1 (en) * 2004-10-19 2006-04-27 Platform Solutions, Inc. Processing of self-modifying code in multi-address-space and multi-processor systems
US7386684B2 (en) * 2005-03-29 2008-06-10 International Business Machines Corporation Method and apparatus for detecting a cache wrap condition

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103853766A (zh) * 2012-12-03 2014-06-11 中国科学院计算技术研究所 一种面向流式数据的在线处理方法及系统
CN104252466A (zh) * 2013-06-26 2014-12-31 阿里巴巴集团控股有限公司 流计算处理方法、设备和系统
CN104536959A (zh) * 2014-10-16 2015-04-22 南京邮电大学 一种Hadoop存取海量小文件的优化方法
CN104657502A (zh) * 2015-03-12 2015-05-27 浪潮集团有限公司 基于Hadoop对海量数据进行实时统计的系统和方法
CN105893541A (zh) * 2016-03-31 2016-08-24 中国科学院软件研究所 一种基于混合存储的流式数据自适应持久化方法及系统

Also Published As

Publication number Publication date
CN106959928A (zh) 2017-07-18

Similar Documents

Publication Publication Date Title
CN106959928B (zh) 一种基于多级缓存结构的流式数据实时处理方法及系统
CN105956183B (zh) 一种分布式数据库中海量小文件的多级优化存储方法及系统
CN102521405B (zh) 支持高速加载的海量结构化数据存储、查询方法和系统
CN102521406B (zh) 海量结构化数据复杂查询任务的分布式查询方法和系统
KR102036419B1 (ko) 그래프 처리 성능 향상을 위한 복수 계층 캐싱 방법 및 복수 계층 캐싱 시스템
CN103593436B (zh) 文件合并方法和装置
CN102819586B (zh) 一种基于高速缓存的url分类方法和设备
CN110291518A (zh) 合并树无用单元指标
CN109634746B (zh) 一种web集群缓存的利用系统及优化方法
CN108920616A (zh) 一种元数据访问性能优化方法、系统、装置及存储介质
CN103198361B (zh) 基于多种优化机制的xacml策略评估引擎系统
CN109656958A (zh) 数据查询方法以及系统
CN103905439A (zh) 一种基于家庭网关的加速网页浏览方法
CN109981659A (zh) 基于数据去重技术的网络资源预取方法以及系统
CN107480072A (zh) 基于关联模式的透明计算服务端缓存优化方法及系统
CN109165096B (zh) web集群的缓存利用系统及方法
CN108647266A (zh) 一种异构数据快速分布存储、交互方法
CN107370807B (zh) 基于透明服务平台数据访问的服务端及其缓存优化方法
CN110365810A (zh) 基于网络爬虫的域名缓存方法、装置、设备及存储介质
CN111752905A (zh) 一种基于对象存储的大文件分布式缓存系统
CN112597076B (zh) 一种面向Spark的基于数据感知的缓存替换方法及系统
CN112799590B (zh) 一种针对在线主存储重删的差异化缓存方法
CN108173974B (zh) 一种基于分布式缓存Memcached的HCModel内部缓存数据淘汰方法
CN108156249A (zh) 基于近似马尔科夫链的网络缓存更新方法
CN104850508B (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