APP下载

面向读密集型应用的事务内存云研究

2014-04-29孙勇

计算机时代 2014年2期
关键词:云计算一致性

摘 要: 对于读密集型的云计算应用,现有系统很难同时满足它们对性能、一致性与可用性的需求。因此提出了一种基于事务内存和云存储技术的编程与存储模型TMC,能为云应用提供可配置的事务特性与数据存储服务。TMC包括事务与存储两个组件,事务组件允许所有只读事务无需远程验证即可顺利提交,其他事务则采用2PC算法提交;存储组件负责实现系统的可扩展性与可用性。仿真实验结果表明,TMC具有较高的性能与可用性。系统若经进一步改进和优化,将具有应用于实际生产环境中的潜力,可为用户提供高质量的云计算服务。

关键词: 读密集; 事务内存; 云计算; 数据副本; 一致性

中图分类号:TP302 文献标志码:A 文章编号:1006-8228(2014)02-11-04

0 引言

事务内存[1]是一种通过事务来实现并发控制的编程范式,事务的ACI特性由事务内存引擎来保证,无需开发者关心。与其他并发控制方法(例如锁)相比,事务内存具有安全、易用等优点,近年来在学术界受到了广泛关注。在云计算环境下,为了让系统管理员和应用开发者充分地利用云计算带来的强扩展和可用性,设计实现新型的适用于云计算的编程模型是一项极其紧迫的任务。当前已初露端倪的云计算编程模型以MapReduce[2]为代表,其他大体上是其变种,MapReduce的缺点是需要遵循复杂的开发模式,实际效率低下。事务内存是另一种可以作为云计算编程模型的技术,在开发复杂的分布式应用程序过程中,使用事务内存技术可以加快生产率,缩短开发周期,提高代码质量。但现有的事务内存研究多集中于共享内存多处理器的单机环境下,而适用于分布式环境、能满足云计算应用需求的研究迄今尚未出现。

现实中存在着大量读密集型应用(例如数据仓库),本文提出的面向读密集型应用的事务内存云(Transactional Memory Cloud,以下简称TMC),基于事务内存与云存储技术,设计了一种新型云计算编程存储模型,保证所有的只读事务均不会被撤销,系统可用性与可靠性则通过异步数据副本策略实现。以上特性使得TMC适用于对性能、可扩展性和数据一致性均有严格要求的读密集型应用。

1 相关工作

云计算为工业和学术界带来了大机遇,同时也为有效利用云中各类资源提出了挑战。尽管不同的云计算应用存在一定差异,但总的来说云计算应用的支撑平台应具有良好的性能、可扩展性和可靠性。

当前已有的商用云计算系统大多不支持事务特性,但各类相关应用对事务支持的需求却从未停止,例如社交网络、协作编辑、在线游戏等。将一致性检查等工作交给上层用户处理是目前常见的策略[3],但其方法增加了开发者负担,显然不是一种有效的手段。利用事务内存技术实现对云计算应用事务特性的支持是一种可行的新思路,但在研究应用过程中需要注意对各种云计算系统特性的权衡。

文献[4]提出的P-Store能够保证云计算系统的可扩展性和强一致性,但该协议要求只读事务在提交时首先要完成分布式验证,并有可能被回滚或撤销,而本文的TMC则不存在以上限制。文献[5]利用软件事务内存与多版本并发控制技术来支持分布式事务的一致性,但对其他诸如扩展性、可用性等系统特性并未提及,TMC则通过将事务组件与存储组件的解耦,对其进行了统筹权衡的考虑。

2 系统建模

TMC包括事务和存储两大组件,事务组件提供逻辑上的并发事务处理,无需了解数据的物理位置;存储组件负责存储数据副本,并保证其一致性,但不必关心事务特性。TMC系统模型如图1所示。

图1中的DC为数据中心,这些数据中心可通过10Gb/s的专用以太网互联(图1中以环为例),被部署为“私有云”或“公有云”。在每个数据中心内部,包含着成千上万台计算/存储机器节点(简称节点)。事务组件负责通过协调管理每个节点上的事务组件代理来接收处理用户通过互联网发来的事务处理请求,存储组件则通过共识协议和链路管理数据及其元数据的所有副本,并向事务组件提供一致、透明和弹性的数据访问服务。

TMC是一个通过消息传递进行通信的分布式系统,其中每个节点只能运行一个内存事务,令Γ={Tx1,…,Txn}表示系统中全体事务的集合。每个数据项则由三元组do=表示,其中do.id为数据项标识,do.value为原始数据,do.ver为数据项版本号。对于某个数据项doi,rep(doi)表示存储doi全部数据副本的节点集合。

任一个内存事务Txi均由事务开始操作Start、针对数据项的读(Read)写(Write)操作序列、事务提交操作Commit或事务撤销操作Abort三部分构成。Txi可由任一个节点启动并读写任一个数据项,事务集T(T?Γ)的历史HIS(T)是由T上的事务操作(Start,Read,Write,Commit,Abort)事件组成的集合。每个Txi还需要维护三个属性writeID、nextID和ts,writeID用于记录Txi中最近提交的写事务(至少包含一个写操作)的时间戳;nextID用于记录下一个将要提交的事务(至少访问Txi中的一个数据项)的时间戳;ts用于记录Txi执行第一个读操作Read1的时间戳,设Read1所访问的数据项所在的内存事务为Txj,则ts=max(Txi.writeID,Txj.writeID),Read1之后读操作所访问的数据项的版本号均不能大于ts。

3 事务组件

事务组件负责支持分布式事务内存编程范式,并保证其正确性。为使所有读事务不被撤销,需要解决两个问题:①建立系统全局快照,使所有内存事务的读操作可以从数据项的多个版本中选择合适的一个;②为写事务在提交阶段建立全局串行化以保证事务性。

TMC基于两阶段提交算法[6](2PC)和文献[7]中的方法解决上述两个问题。为了正确地实现事务串行化,事务组件会在每个Txi的读操作后更新其nextID属性。如果Txi的节点接收到了来自另一个事务Txj的读请求并且Txj.ts>Txi.nextID,则推进Txi.nextID至Txj.ts。

3.1 内存事务的读写操作

TMC采用延时读写策略,事务Txi执行写操作时先将要写入的数据项do保存在Txi的写集合ws中,Txi.ws只有在提交阶段时才对外可见。Txi对数据项do的读操作则分为本地读(来自Txi)和远程读(来自Txj)两种类型。本地读如算法1。

4 存储组件

存储组件以云的形式向事务组件(也可以直接面向最终用户)提供数据存储服务。从用户角度来看,所有的读写操作只针对一个数据副本,数据一致性和可用性、系统可扩展性由存储组件透明地实现。TMC中的存储组件是一群相互依存的服务集合,共同实现系统设计目标,如图3所示。

Locator服务将数据项id映射到数据中心,Router服务将消息转发到节点,Allocator服务决定存放数据项及元数据的节点,Selector服务选择存放数据副本的数据中心,MetaData与RawData服务用于存储元数据和数据值,Logger服务记录针对每个数据项的操作。

4.1 存储组件的扩展性

TMC存储组件的设计目标之一是系统吞吐量与容量同系统节点数之间成正比,即具有良好的可扩展性。为实现这个目标,课题组首先在前期工作基础上[8],采用机架选举和多路线性散列算法,将工作负载均匀地分布到不同的数据中心以及每个数据中心的内部节点,该过程不需要“中心节点”来管理,全体数据中心和节点各司其职,防止了系统瓶颈的产生。

为进一步增强扩展性,存储组件的另一个设计目标是将元数据(包括位置、大小、副本信息等)与数据项本身解耦,具体实现上采用了层次化的设计方法。最上层是定位层,在访问每个数据项时,均需通过Locator服务计算出存储其元数据的数据中心,为提高可用性,元数据也被多处存储(见图1),并使用强一致性协议同步,Locator从多个副本中根据预设策略(例如距离)选择合适的元数据。

存储组件第二层是操作层,由MetaData服务负责处理数据项的创建与删除,并确保数据项与其id属性间的一一对应。

存储组件的最下层是数据层,其中的Allocator服务根据数据项id计算其元数据和数据值的存储节点;Router服务负责接收来自用户或其他数据中心的请求,并将其转发至相应节点。本文假设所有数据中心均具有一定的稳定性,每个数据中心均有一张全局成员信息表。每当增加或移除一个数据中心时,需要更新所有信息表。

4.2 数据一致性

因为从用户角度来看,所有读写操作只针对一个数据副本,所以需要使用数据一致性协议来更新其他副本。存储组件共实现了三种数据一致性协议[6]供用户在创建数据项时自由动态地选择,见表1。

5 实验

实验的主要目的是为了验证TMC能适用于读密集型的云计算应用,同时也应具备良好性能和高可用性。本文利用澳大利亚墨尔本大学的开源系统CloudSim[9]作为测试平台来模拟云计算环境,课题组实现了TMC原型及相关算法,并集成到CloudSim中。实验机器的软硬件配置为Windows 7 64bit+四核Intel Corei5 2.53GHz+内存4GB。

本实验选用了TPC-C作为测试基准和数据集,TPC-C是专门针对联机交易处理系统(OLTP)的面向事务处理与数据库性能的测试标准,可在其中模拟比较复杂并具有代表意义的OLTP应用环境。实验的比较对象包括另一种典型分布式事务内存系统GenRSTM[10]和MySQL集群。实验结果如下。

图4所示吞吐量实验中,首先通过CloudSim模拟出了五个数据中心,所有节点随机均匀地分布其中,再将TPC-C测试集中的只读事务比例设置为80%。对于MySQL,创建一张包含id和value字段的临时表,将记录作为数据项存取。从实验结果中可看出,三个系统的吞吐量均可随着节点数增多而线性增长,但在以读任务为主的环境下,TMC的优势更为明显。同时由于日志记录等磁盘操作的影响,MySQL在读密集环境下的吞吐量明显低于另外两种事务内存系统。

6 结束语

在云计算环境下,存在着大量对数据密集型应用的需求,传统的分布并发式编程模型与数据存储架构的不足已日益凸显,尤其是在需要同时应对系统性能、可扩展性和数据一致性需求的场合下。本文提出了一种基于事务内存与云存储技术面向读密集型应用的编程与存储模型TMC,TMC分为事务组件与存储组件两大模块,事务组件在保证数据一致性的前提下,允许所有只读事务无需远程验证即可顺利提交,系统可扩展性与可用性则通过存储组件中的相关服务集合实现。以上特性使得TMC适用于对性能、可扩展性和数据一致性均有严格要求的读密集型云计算应用。

由于受实验条件和环境的限制,课题组只对TMC原型进行了简单的仿真模拟实验,尚未开发实现完整的可用于生产环境下的系统。我们计划在本文工作基础上,完成对TMC在“云”中的测试,并对其商用化进行更加深入的研究与实践。

参考文献:

[1] Tim Harris,et al. Transactional Memory: An Overview[J]. IEEEMicro,2007.27(3):8-29

[2] Jeffrey Dean,Sanjay Ghemawat. MapReduce: simplified dataprocessing on large clusters[J]. Commun.ACM,2008.51(1):107-113

[3] Avinash Lakshman, Prashant Malik. Cassandra: a decentralizedstructured storage system[J]. SIGOPS Oper. Syst. Rev.,2010.44(2):35-40

[4] Nicolas Schiper, et al, P-Store:Genuine Partial Replication in WideArea Networks[C]. Proceedings of the 2010 29th IEEE Symposium on Reliable Distributed Systems,2010:214-224

[5] Bieniusa A, Fuhrmann T.Consistency in hindsight: A fully decentralized STM algorithm[C]. Proceedings of the 2010 IEEE International Symposium on Parallel and Distributed Processing,2010:1-12

[6] 徐俊刚,邵佩英.分布式数据库系统及其应用(第三版)[M].科学出版社,2012.

[7] Rachid Guerraoui,et al. Genuine atomic multicast in asynchronousdistributed systems[J]. Theor. Comput. Sci.,2001.254(1-2):297-316

[8] 林菲,张万军,孙勇.一种分布式非结构化数据副本管理模型[J].计算机工程,2013.39(4):36-38

[9] R.N.Calheiros.CloudSim:a toolkit for modeling and simulation ofcloud computing environments and evaluation of resource provisioning algorithms[R]. NY, USA: Software: Practice and Experience,Wiley Press,2010.

[10] Nuno Carvalho,Generic replication of software transactional memory[C]. Proceedings of the 7th Middleware Doctoral Symposium,Bangalore,India,2010:14-19

猜你喜欢

云计算一致性
关注减污降碳协同的一致性和整体性
注重教、学、评一致性 提高一轮复习效率
对历史课堂教、学、评一体化(一致性)的几点探讨
IOl-master 700和Pentacam测量Kappa角一致性分析
ONVIF的全新主张:一致性及最访问控制的Profile A
志愿服务与“互联网+”结合模式探究
云计算与虚拟化
基于云计算的移动学习平台的设计
实验云:理论教学与实验教学深度融合的助推器
云计算中的存储虚拟化技术应用