一种保证海量数据缓存最终一致性的系统及方法

文档序号:8258382阅读:445来源:国知局
一种保证海量数据缓存最终一致性的系统及方法
【技术领域】
[0001]本发明涉及一种数据缓存一致方法,尤其涉及一种保证海量数据缓存最终一致性的系统及方法。
【背景技术】
[0002]海量数据缓存一致性是指在实际数据存储变动过程中,保证实际数据存储与目标数据缓存一致的过程。为了应对用户对海量数据的高并发请求带来的挑战,解决传统关系数据库面临的大数据访问和极限事务瓶颈问题,海量数据缓存一致性方法成为承载大数据的新型应用提升性能的重要手段。海量数据通常数据量大,数据变化速率大,难以实现数据缓存的强一致。
[0003]另一方面,根据一致性/可用性/分区容错性理论,在分布式环境下,海量数据缓存为了达到高可用性,只能牺牲数据缓存的强一致性,采用最终一致方法。
[0004]现有技术主要通过数据复制实现实际数据存储与目标缓存数据的一致。然而,在海量数据环境中,受到访问需求和访问规律的影响,同步复制方法一致性代价过大。
[0005]为了保证实际数据存储与目标数据缓存的一致,从数据缓存一致处理方式上看,现有技术存在三类数据缓存一致方法:
[0006](I)单任务批量执行,数据缓存一致划分为多个步骤,每个步骤按顺序执行;
[0007](2)多任务并行,数据缓存一致划分为多个任务,每个任务分配给一个进程,多个进程同步并行执行。进一步将实际数据存储的变化数据记录分隔成固定大小的片段,每个片段并行执行;
[0008](3)多线程并发,数据缓存一致划分为多个任务,多个任务分配给一个进程,每个任务分配给一个线程,多个线程同步并行执行。
[0009]上述方法在适应范围上都存在不同方面的缺陷:单任务批量执行的效率最低,海量数据缓存一致时间较长;与多任务并行相比,多线程并发占用系统资源少、CPU利用率高,但可靠性较差,单个线程的死锁会影响到整个进程。
[0010]将变化数据记录分为多个片段并行执行的改进方法虽可用于海量数据缓存一致,但不能稳定地满足实时性需求,表现为:处理延迟与数据片段的长度和初始化处理任务的开销成正比;长度小的分段会降低延迟,增加附加开销,增加分段依赖的复杂性;长度大的分段会增加延迟。

【发明内容】

[0011]本发明的目的就是保证实际数据存储与目标数据缓存的最终一致,提供一种保证海量数据缓存最终一致性的系统及方法,本系统具有高并发、批处理、高可用等特性,通过映射、化简、修正批处理任务实现数据缓存一致。
[0012]为实现上述目的,本发明采用如下技术方案:
[0013]一种保证海量数据缓存最终一致性的系统,包括:
[0014]日志监听模块:监听实际数据存储模块的二进制数据操作日志,从中提取出变化数据记录,所述变化数据记录包括变化前后的数据记录,每个数据记录由多个数据列组成;
[0015]数据缓存最终一致批处理任务模块:接收变化数据记录,将变化数据记录按列拆分为多个变化数据列,将未发生变化的数据列删除,仅仅保留变化数据列,然后利用化简器将变化数据列合并,最后对变化数据列进行修正,实现实际数据存储模块的变化数据记录到目标数据缓存模块的复制,达到海量数据缓存一致。
[0016]实际数据存储模块,海量数据的实际物理存储,采用关系数据库存储海量数据。
[0017]目标数据缓存模块,海量数据的缓存,采用无模式数据库存储数据。
[0018]所述数据缓存最终一致批处理任务模块,包括:
[0019]若干映射器:每个映射器接收来自日志监听模块的变化数据记录,将变化数据记录按列拆分为多个变化数据列,将未发生变化的数据列删除,仅仅保留变化数据列,变化数据列输出给不同的化简器;所述变化数据列是一个四元组,所述四元组由主键集K、列C、时间戳T、变化类型F组成;所述主键集K为所述变化数据列映射前的变化数据记录主键集合;所述列C为所述变化数据列的值;所述时间戳T是所述数据列映射之前的变化数据记录的时间戳T ;所述变化类型F取值为新增数据与新删数据;
[0020]若干化简器,每个化简器接收来自不同的映射器的变化数据列,将相同主键集K和相同变化类型F的同列变化数据列按照时间戳合并为一条变化数据列,合并原则是时间戳新的变化数据列覆盖时间戳旧的变化数据列;
[0021]若干修正器,每个修正器按照相应的化简器处理后的变化数据列修正目标数据缓存模块,分为如下情况:若输入是变化类型为新删数据的变化数据列,则删除目标数据缓存相同主键集的数据;若输入是变化类型为新增数据的变化数据列,则在目标数据缓存中增加相同主键集的数据。
[0022]所述变化数据记录是关系数据库数据表发生变化的一条数据记录,通过日志监听模块从关系数据库二进制数据操作日志中提取,
[0023]所述变化数据列是关系数据库数据表发生变化的一条数据记录中发生变化的一列数据。
[0024]所述变化数据记录是一个四元组,所述四元组由主键集K、列集C、时间戳T、变化类型F组成;
[0025]所述主键集K是关系数据库数据表的主键集合,所述数据表包含一个或多个主键;
[0026]所述列集C是关系数据库数据表的数据列的值,所述数据表包含一个或多个数据列;
[0027]所述时间戳T是关系数据库数据表一条数据记录的创建或修改时间,所述时间戳T在数据记录创建时建立,在数据记录修改时修正,在数据记录删除时删除;
[0028]所述变化类型F,取值为新增数据与新删数据。
[0029]数据记录的增加操作拆分为变化类型为新增数据的一条变化数据记录,
[0030]数据记录的删除操作拆分为变化类型为新删数据的一条变化数据记录,
[0031]数据记录的修改操作拆分为变化类型为新删数据与新增数据的两条变化数据记录。
[0032]所述日志监听模块与所述数据缓存最终一致批处理任务模块之间还允许设有:
[0033]负载均衡模块,根据处理能力,为每个数据缓存最终一致批处理任务模块设定阈值,使其能够接受相应阈值数的服务请求;将日志监听模块获取到的变化数据记录按照权重轮循均衡路由策略分发到不同数据缓存最终一致批处理任务模块;所述数据缓存最终一致批处理任务模块放在数据缓存最终一致批处理任务模块资源池中等待分配任务;负载均衡模块能确保高性能的数据缓存最终一致批处理任务模块得到更多的使用率,避免低性能的数据缓存最终一致批处理任务模块负载过重。
[0034]一种保证海量数据缓存最终一致性的方法,包括:
[0035]日志监听步骤:监听实际数据存储的二进制数据操作日志,从中提取出变化数据记录,所述变化数据记录包括变化前后的数据记录,每个数据记录由多个数据列组成;
[0036]数据缓存最终一致批处理任务步骤:接收变化数据记录,将变化数据记录按列拆分为多个变化数据列,将未发生变化的数据列删除,仅仅保留变化数据列,然后利用化简步骤将变化数据列合并,最后对变化数据列进行修正,实现实际数据存储的变化数据记录到目标数据缓存的复制,达到海量数据缓存一致。
[0037]实际数据存储,海量数据的实际物理存储,采用关系数据库存储海量数据。
[0038]目标数据缓存,海量数据的缓存,采用无模式数据库存储数据。
[0039]所述数据缓存最终一致批处理任务步骤,包括:
[0040]映射步骤:接收变化数据记录,将变化数据记录按列拆分为多个变化数据列,将未发生变化的数据列删除,仅仅保留变化数据列,变化数据列输出;所述变化数据列是一个四元组,所述四元组由主键集K、列C、时间戳T、变化类型F组成;所述主键集K为所述变化数据列映射前的变化数据记录主键集合;所述列C为所述变化数据列的值;所述时间戳T是所述数据列映射之前的变化数据记录的时间戳T ;所述变化类型F取值为新增数据与新删数据;
[0041]化简步骤,将相同主键集K和相同变化类型F的同列变化数据列按照时间戳合并为一条变化数据列,合并原则是时间戳新的变化数据列覆盖时间戳旧的变化数据列;
[0042]修正步骤,按照化简步骤处理后的变化数据列修正目标数据缓存,分为如下情况:若输入是变化类型为新删数据的变化数据列,则删除目标数据缓存相同主键集的数据;若输入是变化类型为新增数据的变化数据列,则在目标数据缓存中增加相同主键集的数据。
[0043]所述变化数据记录是关系数据库数据表发生变化的一条数据记录,通过日志监听模块从关系数据库二进制数据操作日志中提取,
[0044
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1