一种海量数据管理中动态一致性控制方法技术

技术编号:7474164 阅读:246 留言:0更新日期:2012-07-03 05:43
本发明专利技术公开了一种海量数据环境下动态的一致性控制方法,步骤为:①主线程对环境做初始化工作;②服务节点开始监听来自客户端发来的读写请求;③当服务节点接收到一个来自客户端发来的数据读写请求任务后,首先读取该请求任务的操作类型;④读取该请求任务的偏差类型,并读取该请求任务的偏差值,并将读取结果与当前的阈值比较后放到相应的队列尾部;⑤回退到②,继续监听来自客户端发来的请求。本发明专利技术可以克服不同的应用由于其业务数据对于一致性要求的差异性而不能使用现成的键值型数据库的困难。使得用户只需要关心所操作的数据对于一致性的指标及其取值,而完全不需要花大量的精力重新开发一套只能满足自己业务需求的键值型数据库。

【技术实现步骤摘要】

本专利技术属于海量数据环境下副本放置方法领域,提出一种当数据存在多个副本时对数据进行合理放置的方法,即海量数据管理中动态一致性控制方法。它综合考虑了影响副本放置方法的各种因素,在满足每条数据记录一致性要求的前提下,为用户提供一种灵活的一致性控制方法。
技术介绍
近些年来,伴随着社交网站,在线视频,网络相册共享,微博等为典型应用的互联网应用的涌现,web 2.0时代随之来临。面对信息爆炸的互联网,如何来处理和存储大规模的数据给业界和学术界带来了极大的挑战。在海量数据出现之前,如果说集中式的架构由于其简便性,暂且还有其存在的理由,那么当用户规模和数据量大幅提升的时候,由于其先天所存在的诸如单点失效,可扩展性差,对高并发的处理能力低下等致命缺陷,导致这些系统必须从集中式架构向分布式架构做转化。而提到分布式系统,不得不提到Eric Brewer教授提出的CAP理论。该理论指出 在一个分布式的系统中,不可能同时满足一致性(Consistency),可用性(Availability) 和分区容错性(Partition Tolerance)这三个需求,最多只能同时满足其中两个。而对于上文中所提到的这些大型的应用,由于其对数据的实时性要求不像金融领域系统那么高, 可用性和分区容错性的优先级要高于数据一致性,因此往往采用放弃强一致性的做法来提升系统的高可用性与分区容错性,在一致性需求上取而代之的是采用最终一致性。由于传统的关系型数据库在处理高并发的读写请求上,性能相对较差,因此国内外各大企业都在开发适合自己业务需求的键值型数据库,例如国外的企业Google开发的 Big Table,Facebook主导开发的Cassandra,国内的如淘宝网研发的OceanBase,豆瓣网开发的DoubanDB。虽然健值型数据库在性能上与关系型数据库相比有了非常明显的提升,但是这些数据库在处理数据一致性问题上往往都是根据自己特定的业务需求而开发的,而不像关系型数据库那样,可以适用于任何业务类型。这就会产生以下两个问题1)不同的企业都需要开发满足自己业务需求的键值型数据库来解决传统的关系型数据库所引起的高并发问题等一系列问题。2)在一个应用内部不同的数据类型对于一致性要求也会有差异, 例如图片与文字相比,其一致性要求显然没后者高,那么当两者采用同一种一致性方法时, 肯定是通过采用提升前者一致性要求的方式来满足系统整体的一致性要求,那么对于系统整体而言,性能就会有所下降。从目前的情况来看,对于以上两个问题,无论是业界还是学术界,都还没有一个很好的解决方案。基于以上的分析,出于以下两点需求1)满足不同的应用对副本一致性所提出的不同需求;2)同一应用中不同的数据类型之间区别对待一致性的要求,需要一种灵活而又动态的一致性控制方法。
技术实现思路
本专利技术的目的在于提供一种海量数据环境下动态的一致性控制方法。该专利技术方法是在不需要开发一套新的键值型数据库的前提下,提供一种灵活的一致性控制方法。它不仅可以满足不同的应用对数据一致性的差异性需求,还可以对同一个应用中不同的数据类型提供针对性的一致性控制方法。本专利技术提供的,其特征在于,该方法包括以下步骤(1)主线程对环境做初始化工作,包括以下五个步骤(1. 1)创建三个空置队列,按照创建的先后顺序,分别命名为高优先级队列,表示为HQ ;中优先级队列,表示为MQ ;低优先级队列,表示为LQ ;(1. 2)创建三个变量NS、VS、PS,分别用来保存所有的任务队列中所有的任务的数据条目偏差总和,数值偏差总和以及新旧程度偏差总和,并将初始值均设为0 ;(1. 3)创建三个计数器NC、VC、PC,分别用来保存当前所有的任务队列中关于数据条目偏差的任务总数,数值偏差的任务总数以及新旧程度偏差的任务总数,并将初始值均设为0;(1. 4)创建并启动一个子线程Tl,用于逐个处理三个任务队列中的任务;(1. 5)创建并启动两个子线程T2和T3,用于定期调度三个任务队列中的任务,避免因较高优先级任务队列中的任务长时间拥堵,导致较低优先级队列中的任务没有机会处理的情况发生;(2)服务节点开始监听来自客户端发来的读写请求;(3)当服务节点接收到一个来自客户端发来的数据读写请求任务后,首先读取该请求任务的操作类型;(4)读取该请求任务的偏差类型,并读取该请求任务的偏差值,并将读取结果与当前的阈值比较后放到相应的队列尾部;(5)回退到步骤O),继续监听来自客户端发来的请求。本专利技术是在不需要开发一套新的键值型数据库的前提下,通过用不同的数据偏差类型和偏差值来描述任意的一致性要求,从而提供一种灵活的一致性控制方法。可以将此专利技术方法应用到任何键值型数据库上,并将该数据库部署到物理机或是虚拟机上,形成一个服务节点。若干个服务节点统一对外提供数据访问服务,形成一个分布式的数据库环境。 它不仅可以满足不同的应用对数据一致性的差异性需求,还可以对同一个应用中不同的数据类型提供针对性的一致性控制方法。具体而言,本专利技术具有以下几个优点(1)减少冗余工作。目前在海量数据环境下为了解决数据一致性的问题,各机构的做法往往是投入大量的人力对所有的业务逻辑做详尽的分析后开发出一套只能适合该业务本身的键值型数据库。不难看出,从调研到迭代开发,以及后期的各项测试,其所消耗的开发周期将会非常之长,而且各个解决方案的相似性非常大,这对于投入资源的浪费程度可想而知。而本专利技术的前提就是不需要单独开发一套键值型数据库,只需要选取任意一套开源的数据库,将本专利技术方法运用到此即可。由此可见,可以大大地减少冗余的工作,提高开发效率。(2)灵活控制。传统的解决方案在开发之前会有非常详尽的前期需求分析,因此在正常情况下开发出来的数据库可以满足该需求。如果后期出现了增加新需求等情况,则有可能会出现已经开发完成的数据库不能解决该需求,不得不进行后期的迭代开发。而本专利技术方法所提出的通过对不同的数据设置相应的一致性偏差类型和偏差值的方式,可以灵活地对各种一致性要求进行描述,完全不需要额外的再开发工作。(3)保证所有任务在有限的时间内得到处理。当数据库受到来自于客户端的高负载请求时,对于一致性要求较高的请求可能会出现得不到及时处理的情况。本专利技术中设置了三个不同优先级的任务队列,在尽可能保证较高优先级任务率先处理的前提下,通过对定时器的引入,保证较低优先级的任务在设置的时间间隔内肯定能够得到处理。本专利技术可以克服不同的应用由于其业务数据对于一致性要求的差异性而不能使用现成的键值型数据库的困难。使得用户只需要关心所操作的数据对于一致性的指标及其取值,而完全不需要花大量的精力重新开发一套只能满足自己业务需求的键值型数据库。附图说明图1为本专利技术方法的流程图;图2为任务调度队列的示意图。具体实施例方式本专利技术的主要原理是通过分析用户请求任务中一致性指标的偏差取值,并将其与该指标类型所对应的当前任务队列中所有任务偏差平均值的一半值与两倍值(在下文中将这两个值统称为当前阈值)进行比较后分发到相应优先级的任务处理队列中。根据对任务队列中任务的先后处理顺序,来体现对一致性差异化的需求。下面结合附图和实例,对本专利技术的具体实施步骤作详细说明。(1)主线程对环境做初始化工作,这包括以下5点内容(1. 1)创建三个空置队本文档来自技高网
...

【技术保护点】

【技术特征摘要】

【专利技术属性】
技术研发人员:金海谢夏岑文峰柯西江
申请(专利权)人:华中科技大学
类型:发明
国别省市:

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

1
相关领域技术