一种基于状态的无锁分布式ACID一致性实现方法技术

技术编号:13899974 阅读:190 留言:0更新日期:2016-10-25 14:09
本发明专利技术涉及网络技术领域,特别是一种基于状态的无锁分布式ACID一致性实现方法,包括以下步骤,步骤S101:创建事务记录,当客户端请求写入数据时,写入进程会创建一个事务记录;步骤S102:暂存写入意图;步骤S103:读取写入意图;步骤S104:提交事务;步骤S105:清除写入意图,在事务完成后,系统会尽快清除暂存值。采用上述方法后,本发明专利技术的一种基于状态的无锁分布式ACID事务实现方法在具备分布式数据库的高可用、高扩展的情况下,提供数据的高一致性。

【技术实现步骤摘要】

本专利技术涉及网络
,特别是一种基于状态的无锁分布式ACID一致性实现方法
技术介绍
ACID是RDBMS的理论基石;A原子(Atomiclty)事务原子性,指对一个事务要么完全提交要么完全回滚,保证提交成功的给数据库的和外部反应的一致。或者提交不成功,完全回滚,数据库完全没反应于外部;C事务一致性(Consistency),一个事务执行前和执行后在数据库必须保证一致状态。I隔离性(ioslation)事务独立,封闭,隔离性强度;数据库为了防止出现数据库读取不一致,可设置不同等级的事务的隔离性;D持久性(Durabilty)数据永存,在事务完成以后,数据持久的保存在数据库之中,并不会被回滚。在CAP理论下,大部分NOSQL数据库会牺牲ACID事务特性,同时会在C、A之间做选择;一般情况下,数据一致性均选取最终一致性。但是对于CAP有一个误解,那就是可能创建一个具有ACID事务能力的分布式数据库。
技术实现思路
本专利技术需要解决的技术问题提供一种在分布式环境下基于状态的无锁分布式ACID事务实现方法。为解决上述的技术问题,本专利技术一种基于状态的无锁分布式ACID事务实现方法,包括以下步骤,步骤S101:创建事务记录,当客户端请求写入数据时,写入进程会创建一个事务记录;步骤S102:暂存写入意图;步骤S103:读取写入意图;步骤S104:提交事务;步骤S105:清除写入意图,在事务完成后,系统会尽快清除暂存值。进一步的,所述步骤S101中,所述事务记录包括事务UUID和事务的当前状态,所述事务的当前状态包括初始状态PENDING、终止状态ABORT或COMMIT,事务记录的PENDING或ABORT状态对应开关的“OFF”状态,COMMIT对应“ON”。更进一步的,所述步骤S103为在读取时检查事务开关的状态;如果开关状态为为“OFF”,则返回该键的原值;如果开关状态为“ON”,则返回暂存值。进一步的,所述步骤S102中写过程中准备多个数据库变更,将一个事务中的变更对应一个名为写入意图的结构。更进一步的,所述步骤S102中一个值作为一个事务的一部分写入到一个键,生成一个写入意图;写入意图结构中包括知识事务记录存储位置的键。采用上述方法后,本专利技术的一种基于状态的无锁分布式ACID事务实现方法在具备分布式数据库的高可用、高扩展的情况下,提供数据的高一致性。附图说明下面将结合附图和具体实施方式对本专利技术作进一步详细的说明。图1为本专利技术基于状态的无锁分布式ACID事务实现方法的流程图。图2为本专利技术数据写入的流程图。图3为本专利技术数据读取的流程图。具体实施方式如图1所示,本专利技术的一种基于状态的无锁分布式ACID一致性实现方法,包括以下步骤,步骤S101:创建事务记录,当客户端请求写入数据时,写入进程会创建一个事务记录;当客户端请求写入数据时,写入进程会创建一个事务记录。事务记录包括事务UUID、事务的当前状态(PENDING为初始状态,ABORT或COMMIT为终止状态)。其中事务记录或事物开关,需按照顺序进行读/写操作,事务记录的PENDING或ABORT状态对应开关的“OFF”状态,COMMIT对应“ON”。步骤S102:暂存写入意图,写进程会准备好多个数据库变更,但并不会覆盖任何现有值。为了暂存一个事务中的变更,本专利描述的方法使用了一个名为写入意图的结构。任何时候,一个值作为一个事务的一部分写入到一个键,它都会生成一个写入意图。写入意图结构中还包含指示事务记录存储位置的键。同时,就是任何键都有且仅有一个写入意图。步骤S103:读取写入意图;如图3所示,对于任何有暂存值的键,在读取时都必须检查事务开关的状态。如果开关状态为“OFF”,则返回该键的原值;如果开关状态为“ON”,则返回暂存值。具体步骤如下:(1)、如果现有写入意图对应的事务记录仍然处于PENDING状态,则将其置为ABORT状态;(2)、清除现有的写入意图;(3)、如果之前的事务已经COMMIT,那么清除操作会将暂存值升级为普通值; 否者,返回该键的原值。步骤S104:提交事务,如图3所示,当写进程准备好事务中的所有变更后,它会打开开关(即将事务记录更新成COMMIT,开关状态置为“ON”)。事务生成的所有写入意图都会立即生效;之后发生的任何读取操作在看到事务已经提交后都会返回写入意图中的暂存值。另外,将事务记录的状态置为ABORT可以终止事务,之后发生的读取操作将忽略这个事务生成的写入意图。步骤S105:清除写入意图,在事务完成后,系统会尽快清除暂存值。在事务完成后,系统会尽快清除暂存值。如果事务成功,那么暂存值会取代原值;如果失败,那么暂存值会被丢弃。总之,如果一个键没有写入意图,,那么读取操作就无需过滤,也就可以以适当的分布式方式完成。虽然以上描述了本专利技术的具体实施方式,但是本领域熟练技术人员应当理解,这些仅是举例说明,可以对本实施方式作出多种变更或修改,而不背离专利技术的原理和实质,本专利技术的保护范围仅由所附权利要求书限定。本文档来自技高网...

【技术保护点】
一种基于状态的无锁分布式ACID一致性实现方法,其特征在于,包括以下步骤,步骤S101:创建事务记录,当客户端请求写入数据时,写入进程会创建一个事务记录;步骤S102:暂存写入意图;步骤S103:读取写入意图;步骤S104:提交事务;步骤S105:清除写入意图,在事务完成后,系统会尽快清除暂存值。

【技术特征摘要】
1.一种基于状态的无锁分布式ACID一致性实现方法,其特征在于,包括以下步骤,步骤S101:创建事务记录,当客户端请求写入数据时,写入进程会创建一个事务记录;步骤S102:暂存写入意图;步骤S103:读取写入意图;步骤S104:提交事务;步骤S105:清除写入意图,在事务完成后,系统会尽快清除暂存值。2.按照权利要求1所述的一种基于状态的无锁分布式ACID一致性实现方法,其特征在于:所述步骤S101中,所述事务记录包括事务UUID和事务的当前状态,所述事务的当前状态包括初始状态PENDING、终止状态ABORT或COMMIT,事务记录的PENDING或ABORT状态对应开关的“OFF”状态,COMMI...

【专利技术属性】
技术研发人员:贺伟平黄三伟
申请(专利权)人:湖南蚁坊软件有限公司
类型:发明
国别省市:湖南;43

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

1