一种基于RDMA和HTM的分布式乐观并发控制方法技术

技术编号:13745957 阅读:50 留言:0更新日期:2016-09-23 23:31
本发明专利技术提供了一种基于RDMA和HTM的分布式乐观并发控制方法,不需要预先获取事务访问的数据集,不需要预先对事务进行切分。该控制方法将事务的运行划分为两个阶段:执行阶段和提交阶段。采用乐观并发控制与锁保护相结合的方法,在事务的执行阶段动态维护读写集合,从而不需要预先获知事务的数据集;在事务的提交阶段进行先验证再提交,从而不需要预先对事务进行切分。本发明专利技术使用RDMA和HTM两种最新的硬件简化并发控制方法的设计,去中心化的分布式设计使得本发明专利技术具有良好的扩展性,可以方便地根据需求调整机器的数量,为高效处理超大规模的并发事务提供了通用可行的解决方案。

【技术实现步骤摘要】

本专利技术涉及分布式多核内存计算环境下的事务并发控制,特别是涉及一种基于RDMA和HTM的分布式乐观并发控制方法
技术介绍
分布式多核内存计算为处理超大规模的并发事务提供了便利,其核心在于高效通用的事务并发控制方法。硬件事务内存HTM(Hardware Transaction Memory)和远程内存直接访问RDMA(Remote Direct Memory Access)是两项全新的硬件技术。前者(HTM)提供了单机事务并发控制的硬件支持,具有易于开发人员使用且性能高效的优势,但仅限于单机环境。后者(RDMA)提供了由网卡访问远端机器内存的硬件支持,绕过了远端机器的处理器,具有高吞吐量和低延迟的优势,但提供的通信操作较为简单,难以直接表达复杂的分布式事务。如何利用全新的硬件技术(HTM和RDMA),设计合理的软件控制方法以支持分布式并发事务是一项极具挑战又颇为实用的技术难题。目前同时利用两项硬件技术(HTM和RDMA)支持分布式并发事务控制的工作普遍使用了两阶段锁的方法。其主要包含三个阶段:1.在事务开始前根据需要访问的数据集,用RDMA将远端数据读回本地并加锁;2.在本地HTM的保护下单机执行整个事务;3.事务执行成功后用RDMA将远端数据的结果写回并放锁。采用两阶段锁的控制方法虽然很好的利用了两项硬件技术并达到了较好的性能,但是其缺点是:1.在事务开始之前需要预先知道访问的数据集,这不仅增加了事务编写人员的工作量,而且对于数据集无法预先确定,只有在运行时才可知的一类事务,这种方法变得不可行;2.现有的HTM硬件(如Intel的RTM)通常对事务的数据集大小有限制,因此现有方法在实现中需要对超出限制大小的事务进行预先的切分,事务的切分本身是一项非常复杂的工作,尤其在事务逻辑复杂的情况下,如何正确的切分事务本身对编写人员提出了极高的要求,而且对于本身无法切分的一类事务,这种方法同样变得不可行。因此现有的工作虽然利用了两项硬件技术实现了分布式并发事务控制,但在事务的支持上具有很大的局限性。
技术实现思路
本专利技术的目的就是为了克服上述现有工作中存在的缺陷,提供一种基于RDMA和HTM的分布式乐观并发控制方法。该方法要求克服原有工作的局限性,即不需要预先获取事务访问的数据集,同时不需要对事务进行预先切分。本专利技术的目的可以通过以下的技术方案加以实现:一种基于RDMA和HTM的分布式乐观并发控制方法,该方法采用乐观并发控制与锁保护相混合的机制,不需要预先获取事务访问的数据集,不需要预先对事务进行切分,将事务的运行分为事务的执行阶段和事务的提交阶段。事务的执行阶段不受HTM的保护,动态维护事务的读写集合;事务的提交阶段对远端数据进行锁保护,本地数据在HTM的保护下利用乐观并发控制进行验证提交。所述的事务的执行阶段和事务的提交阶段分别包括以下步骤:1.事务的执行阶段步骤S1:获取事务需要读取的本地数据并保证数据的一致性;步骤S2:获取事务需要读取的远端数据并保证数据的一致性;步骤S3:动态维护事务的读写集合。优选地,所述步骤S1,包括如下步骤:使用HTM保护事务本地数据的读取操作,读取内容包括数据值本身和数据的序列号(每个数据有独立的序列号,该序列号的维护发生在事务的提交阶段),并在HTM中检查数据是否处于锁保护的状态,如果是则调用HTM硬件提供的中断指令中断这次操作,回滚读取的内容,重新尝试;否则则正常的进行读取操作。优选地,所述步骤S2,包括如下步骤:使用RDMA读指令执行事务远端数据的读取操作,检查读取的数据在各缓存行(cacheline)上的版本号是否一致(数据在缓存行粒度级别上有独立的版本号,该版本号的维护发生在事务的提交阶段),如果不一致则抛弃读取的内容,重新尝试;否则则正常的进行读取操作。优选地,所述步骤S3,包括如下步骤:事务的读写集合为分布式事务的读写集合,包括本地读集合、远端读集合、本
地写集合和远端写集合。对于本地读集合的维护发生于步骤S1的开始和结束,在步骤1开始前检查本地读集合,如果需要读取的内容已经出现在本地读集合内,则直接返回本地读集合中的内容,否则在完成步骤S1后,将读取的内容加入到本地读集合。对于远端读集合的维护发生于步骤S2的开始和结束,在步骤2开始前检查远端读集合,如果需要读取的内容已经出现在远端读集合内,则直接返回远端读集合中的内容,否则在完成步骤S2后,将读取的内容加入到远端读集合。对于本地写集合的维护发生于事务本地数据的写操作中,写操作直接将内容写入到本地写集合中,对于所写内容在本地写集合中已经存在的情形,采用直接覆盖的策略,即新写的内容覆盖已有的内容。2.事务的提交阶段在事务完成上述的执行阶段后,获得了事务的读写集合,以此进入事务的提交阶段,该阶段分为如下几个步骤:步骤A1:对事务涉及的远端数据进行锁保护,对远端读集合的数据进行验证步骤A2:用乐观并发控制对事务涉及的本地数据进行验证和提交步骤A3:对事务涉及的远端数据进行提交并解除锁保护优选地,所述步骤A1,包括如下步骤:对远端读集合和远端写集合中的数据进行锁保护。该过程中,作为执行事务的机器通过分布式内存键值数据库找到事务的远端数据在其他机器的内存位置,并使用RDMA的原子指令将数据的状态修改为锁保护状态。对于已经处于锁保护状态的数据,该过程会一直重试直至数据的锁保护状态解除。与此同时需要对远端读集合的数据进行验证,验证的内容包括检查各数据值上的序列号是否发生变化。如果检查到有数据值的序列号发生变化,则立即进行整个事务的回滚,包括解除远端数据的锁保护并清空事务的读写集合。优选地,所述步骤A2,包括如下步骤:该步骤需要HTM硬件的保护以保证原子性。整体过程分为两步,首先是验证,然后是提交。验证包括对本地读集合的验证和本地写集合的验证。本地读集合的验证内容包括检查各数据值上的序列号是否发生变化,如果检查到有数据值的序列号发生变化,则立即进行整个事务的回滚;本地写集合的验证内容包括检查各数据值是否处于锁保护
的状态,如果检查到数据值处于锁保护的状态,则立即进行整个事务的回滚。提交包括对本地写集合的提交。本地写集合的提交内容包括更新各数据值的序列号,以及各数据值在缓存行粒度上的版本号。所有的提交均为对数据值的直接修改,由HTM的硬件保护机制保证该过程的原子性和隔离性。优选地,所述步骤A3,包括如下步骤:首先对远端写集合中的数据进行提交。该过程中,作为执行事务的机器通过分布式内存键值数据库找到事务的远端数据在其他机器的内存位置,并使用RDMA的写指令将数据的最新内容写回,其中提交的内容包括各数据值的序列号,以及各数据值在缓存行粒度上的版本号。然后解除对远端读写集合数据的锁保护,此过程中,作为执行事务的机器通过分布式内存键值数据库找到事务的远端数据在其他机器的内存位置,并使用RDMA的原子指令解除数据的锁保护状态。与现有技术相比,本专利技术具有如下的优点:1、采用乐观并发控制与锁保护相结合的方法构建分布式事务并发控制,因此适用范围更加广泛,弥补了现有工作的局限性。在事务的执行阶段动态维护读写集合,从而不需要预先获知事务的数据集。在事务的提交阶段进行先验证再提交,从而大幅降低了事务的数据集,不需要预先对本文档来自技高网
...

【技术保护点】
一种基于RDMA和HTM的分布式乐观并发控制方法,其特征在于,不需要预先获取事务访问的数据集,不需要预先对事务进行切分,采用乐观并发控制与锁保护相混合的机制,将事务的运行分为事务的执行阶段和事务的提交阶段,分别包括以下步骤:a.事务的执行阶段步骤S1:获取事务需要读取的本地数据并保证数据的一致性;步骤S2:获取事务需要读取的远端数据并保证数据的一致性;步骤S3:动态维护事务的读写集合,所述事务的读写集合包括本地读集合、远端读集合、本地写集合和远端写集合;b.事务的提交阶段步骤A1:对事务涉及的远端数据进行锁保护,对远端读集合的数据进行验证;步骤A2:采用乐观并发控制对事务涉及的本地数据进行验证和提交;步骤A3:对事务涉及的远端数据进行提交并解除锁保护。

【技术特征摘要】
1.一种基于RDMA和HTM的分布式乐观并发控制方法,其特征在于,不需要预先获取事务访问的数据集,不需要预先对事务进行切分,采用乐观并发控制与锁保护相混合的机制,将事务的运行分为事务的执行阶段和事务的提交阶段,分别包括以下步骤:a.事务的执行阶段步骤S1:获取事务需要读取的本地数据并保证数据的一致性;步骤S2:获取事务需要读取的远端数据并保证数据的一致性;步骤S3:动态维护事务的读写集合,所述事务的读写集合包括本地读集合、远端读集合、本地写集合和远端写集合;b.事务的提交阶段步骤A1:对事务涉及的远端数据进行锁保护,对远端读集合的数据进行验证;步骤A2:采用乐观并发控制对事务涉及的本地数据进行验证和提交;步骤A3:对事务涉及的远端数据进行提交并解除锁保护。2.根据权利要求1所述的基于RDMA和HTM的分布式乐观并发控制方法,其特征在于,在事务的执行阶段,所述步骤S1,包括如下步骤:使用HTM保护事务本地数据的读取操作,读取内容包括数据值本身和数据的序列号,并在HTM中检查数据是否处于锁保护的状态,如果是,则调用HTM硬件提供的中断指令中断这次操作,回滚读取的内容,重新尝试;如果不是,则正常的进行读取操作。3.根据权利要求2所述的基于RDMA和HTM的分布式乐观并发控制方法,其特征在于,每个数据分别具有独立的序列号,对数据的序列号的维护发生在事务的提交阶段。4.根据权利要求1所述的基于RDMA和HTM的分布式乐观并发控制方法,其特征在于,在事务的执行阶段,所述步骤S2,包括如下步骤:使用RDMA读指令执行事务远端数据的读取操作,检查读取的数据在各缓存行上的版本号是否一致,如果不一致,则抛弃读取的内容,重新尝试;如果一致,则正常的进行读取操作。5.根据权利要求4所述的基于RDMA和HTM的分布式乐观并发控制方法,其特征
\t在于,数据在缓存行粒度级别上分别具有独立的版本号,数据在各缓存行上的版本号的维护发生在事务的提交阶段。6.根据权利要求1所述的基于RDMA和HTM的分布式乐观并发控制方法,其特征在于,在事务的执行阶段,所述步骤S3,包括如下步骤:对于本地读集合的维护发生于步骤S1的开始和结束,在步骤S1开始前检查本地读集合,如果需要读取的内容已经出现在本地读集合内,则直接返回本地读集合中的内容,否则在完成步骤S1后,将读取的内容加入到本地读集合;对于远端读集合的维护发生于步骤S2的开始和结束,在步骤S2开始前检查远端读集合,如果需要读取的内容已经出现在远端读集合...

【专利技术属性】
技术研发人员:陈榕陈海波臧斌宇陈彦哲
申请(专利权)人:上海交通大学
类型:发明
国别省市:上海;31

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

1