一种保证海量数据缓存实时性和一致性的系统及方法
【技术领域】
[0001]本发明涉及一种数据缓存一致方法,尤其涉及一种保证海量数据缓存实时性和一致性的系统及方法。
【背景技术】
[0002]为了应对用户对海量数据的高并发请求带来的挑战,解决传统关系数据库面临的大数据访问和极限事务瓶颈问题,海量数据缓存一致性方法成为承载大数据的新型应用提升性能的重要手段。海量数据缓存一致是指在实际数据存储变动过程中,保证实际数据存储与目标数据缓存一致的过程。
[0003]现有技术主要通过数据复制实现实际数据存储与目标数据缓存的一致。然而,在海量数据环境中,受到访问需求和访问规律的影响,同步复制方法一致性代价过大,而异步复制又无法满足强一致性。为了保证实际数据与数据缓存的即时一致,提高数据缓存一致的实时性,从数据缓存一致处理方式上看,现有技术存在三类数据缓存一致方法:
[0004](I)单任务批量执行,数据缓存一致划分为多个步骤,每个步骤按顺序执行;
[0005](2)多任务并行,数据缓存一致划分为多个任务,每个任务分配给一个进程,多个进程同步并行执行。进一步将实际数据存储的变化数据流分隔成固定大小的片段,每个片段并行执行;
[0006](3)多线程并发,数据缓存一致划分为多个任务,多个任务分配给一个进程,每个任务分配给一个线程,多个线程同步并行执行。
[0007]上述方法在适应范围上都存在不同方面的缺陷:单任务批量执行的效率最低,无法保证海量数据缓存的即时一致;与多任务并行相比,多线程并发占用系统资源少、CPU利用率高,但可靠性较差,单个线程的死锁会影响到整个进程。将变化数据流分为多个片段并行执行的改进方法虽可用于海量数据缓存一致,但不能稳定地满足实时性需求,表现为:处理延迟与数据片段的长度和初始化处理任务的开销成正比;长度小的分段会降低延迟,增加附加开销,增加分段依赖的复杂性;长度大的分段会增加延迟。另一方面,海量数据通常以数据流方式展现,实际数据存储变化数据流具有数据量小、速率大等特点,上述几种方法难以保证数据缓存一致的即时性。
【发明内容】
[0008]本发明的目的就是保证实际数据存储与数据缓存的即时一致,提供一种保证海量数据缓存实时性和一致性的系统及方法。本发明具有高实时性、高并发性、高容错性等特性,通过基于流处理的数据缓存实现海量数据缓存一致过程。
[0009]为实现上述目的,本发明采用如下技术方案:
[0010]一种保证海量数据缓存实时性和一致性的系统,包括:
[0011]数据流提取模块:采用数据库日志方式从实际数据存储模块中提取出变化数据流;
[0012]基于流处理的数据缓存模块:采用流处理的方法将提取出的变化数据流复制到目标数据缓存模块,在复制的过程中先将变化数据流拆分成数据元组,将数据元组拆分成数据域,仅仅对发生变化的数据域进行处理后,又将数据域进行聚合,最后写入目标数据缓存,从而保证数据缓存的一致性;在复制的过程中,仅仅用缓冲域库存储中间结果,保证了数据缓存的实时性。
[0013]所述变化数据流由多条发生变化的数据元组组成,每个数据元组由多个数据域构成。
[0014]所述实际数据存储模块:海量数据的实际物理存储,采用数据库存储海量数据;
[0015]所述目标数据缓存模块:进行海量数据的缓存;
[0016]所述采用数据库存储海量数据是指采用关系数据库、无模式数据库存储海量数据。
[0017]所述基于流处理的数据缓存模块,包括:
[0018]域分发数据处理单元,将提取的变化数据流中的数据元组拆分为数据域,按照域分发到不同域过滤数据处理单元,降低数据维度;
[0019]域过滤数据处理单元,将拆分的数据域进一步过滤,仅仅提取发生变化的数据域,减少数据缓存一致数据流的处理量,未变化的数据域丢弃不处理;
[0020]域缓冲数据处理单元,将域过滤数据处理单元输出的数据域临时存储于缓冲域库;
[0021]域聚合数据处理单元,将数据域进行聚合为数据元组,提升数据维度,写入到目标数据缓存,完成数据缓存一致过程。
[0022]所述缓冲域库,是域过滤数据处理输出的数据域临时副本;当域过滤数据处理输出的数据域经域聚合数据处理成功复制到目标数据缓存后,从缓冲域库中删除。
[0023]所述域过滤数据处理单元与域缓冲数据处理单元之间还允许包括:
[0024]异常检测单元:检测海量数据缓存一致过程是否出错;若检测出错,一致过程出现异常,转流数据重放单元;若检测正常,转到域缓冲数据处理单元,域缓冲数据处理单元处理后进入域聚合数据处理单元;
[0025]流数据重放单元:对缓冲域库中的数据域进行流数据重放,从检测失败点处恢复数据缓存即时一致过程,最后进入域聚合数据处理单元。
[0026]一种保证海量数据缓存实时性和一致性的方法,包括:
[0027]数据流提取步骤:采用数据库日志方式从实际数据存储模块中提取出变化数据流;
[0028]基于流处理的数据缓存步骤:采用流处理的方法将提取出的变化数据流复制到目标数据缓存模块,在复制的过程中先将变化数据流拆分成数据元组,将数据元组拆分成数据域,仅仅对发生变化的数据域进行处理后,又将数据域进行聚合,最后写入目标数据缓存,从而保证数据缓存的一致性;在复制的过程中,仅仅用缓冲域库存储中间结果,保证了数据缓存的实时性。
[0029]所述变化数据流由多条发生变化的数据元组组成,每个数据元组由多个数据域构成。
[0030]所述实际数据存储模块:海量数据的实际物理存储,采用数据库存储海量数据;
[0031]所述目标数据缓存模块:进行海量数据的缓存;
[0032]所述采用数据库存储海量数据是指采用关系数据库、无模式数据库存储海量数据。
[0033]所述基于流处理的数据缓存步骤,包括:
[0034]域分发数据处理子步骤,将提取的变化数据流中的数据元组拆分为数据域,按照域分发到不同域过滤数据处理单元,降低数据维度;
[0035]域过滤数据处理子步骤,将拆分的数据域进一步过滤,仅仅提取发生变化的数据域,减少数据缓存一致数据流的处理量,未变化的数据域丢弃不处理;
[0036]域缓冲数据处理子步骤,将域过滤数据处理单元输出的数据域临时存储于缓冲域库;
[0037]域聚合数据处理子步骤,将数据域进行聚合为数据元组,提升数据维度,写入到目标数据缓存,完成数据缓存一致过程。
[0038]所述缓冲域库,是域过滤数据处理子步骤输出的数据域临时副本;当域过滤数据处理输出的数据域经域聚合数据处理成功复制到目标数据缓存后,从缓冲域库中删除。
[0039]所述域过滤数据处理子步骤与域缓冲数据处理子步骤之间还允许包括:
[0040]异常检测子步骤:检测海量数据缓存一致过程是否出错;若检测出错,一致过程出现异常,转流数据重放子步骤;若检测正常,转到域缓冲数据处理子步骤,域缓冲数据处理子步骤处理后进入域聚合数据处理子步骤;
[0041]流数据重放子步骤:对缓冲域库中的数据域进行流数据重放,从检测失败点处恢复数据缓存即时一致过程,最后进入域聚合数据处理子步骤。
[0042]关于专业术语的解释:
[0043]关系数据库,是建立在关系数据库模型基础上的数据库,借助于集合代数等概念和方法来处理数据库中的数据。
[0044]无模式数据库,NoSQL的中文名称,泛指非关系型的数据库。与关系数据库相比,无模式数据库模式不固定。
[0045]数据流,一系列无边界的数据元组的集合。
[0046]数据元组,数据流中的一条数据。
[0047]数据域,数据流的最小组成单元,数据元组中的一列数据,是数据元组的细粒度划分。
[0048]数据处理,数据流的处理过程,输入和输出均为数据流,按照处理内容分为域分发数据处理、域过滤数据处理、域缓冲数据处理和域聚合数据处理。基于流处理的数据缓存即时一致网络拓扑包含多种数据处理,每种数据处理并发运行。
[0049]本发明中的海量数据缓存即时一致方法,具有以下有益效果:
[0050]1、数据缓存一致高实时性:本发明提供的海量数据缓存即时一致方法基于流处理的数据缓存即时一致网络拓扑实现数据缓存一致过程,数据缓存一致具有强一致性。除缓冲域库外,基于流处理的数据缓存即时一致网络拓扑的所有流数据处理均不存储中间结果,数据处理具有即时性。
[0051]2、数据缓存一致高并发性:基于流处理的数据缓存即时一致网络拓扑中的域分发数据处理、域过滤数据处理、域缓冲数据处理、域聚合数据处理并发执行。
[0052]3、数据缓存一致高容错性:本发明提供的海量数据缓存即时一致的错误处理方法,在数据缓存一致过程出错时,通过流数据重放恢复缓冲域库中的数据域,再次进行域聚合,恢复数据缓存一致过程。
[0053]4、将域过滤数据处理单元输出的数据域临时存储于缓冲域库一方面可以在高速变化数据流下,缓冲域过滤数据处理的输出,减少域聚合数据处理的有效输入,提高数据缓存一致的实时性。另一方面,该处理过程可以用于数据缓存一致错误处理,在数据缓存一致失败时进行流数据重放,以便于让数据缓存一致从失败点开始恢复。
【附图说明】
[0054]图1保证海量数据缓存实时性和一致性的系统结构图;
[0055]图2保证海量数据缓存实时性和一致性的方法流程图;
[0056]图3保证海量数据缓存实时性和一致性的系统错误处理流程图;
[0057]其中,101、实际数据存储模块,102、数据流提取模块,103、基于流处理的数据缓存模块,104、目标数据缓存模块,111、域分发数据处理单元,112、域过滤数据处理单元,113、域缓冲数据处理单元,114、缓冲域库,115、域聚合数据处理单元。
【具体实施方式】
[0058]下面结合附图与实施例对本发明作进一步说明。
[0059]如图1所示,一种保证海量数据缓存实时性和一致性的系统,包括:
[0060]数据流提取模块102:采用数据库日志方式从实际数据存储模块101中提取出变化数据流;
[0061]基于流处理的数据缓存模块103:采用流处理的方法将提取出的变化数据流复制到目标数据缓存模块104,在复制的过程中先将变化数据流拆分成数据元组,将数据元组拆分成数据域,仅仅对发生变化的数据域进行处理后,又将数