浅谈分布式并发控制
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
浅谈分布式并发控制
摘要:本文首先介绍了分布式系统的基本概念和并发控制的原理及目的方法。着重描述了几种基本的分布式并发控制的技术,例如基于锁的并发控制技术、基于时间戳的并发控制技术和基于事务的并发控制技术,等等。
关键字:分布式并发控制,基于锁的并发控制,基于时间戳的并发控制,基于事务的并发控制技术
0.引言
计算机现在一般不再单独使用,办公室工作站常与远程打印机、文件服务器、数据库相联。家庭计算机也可通过调制解调器访问电子信息,如电子邮件、公告板、web节点等。大的公司和企业有成百上千乃至上万台计算机通过网络连接起来,协同控制诸如汽车生产、石油提炼、钢铁冶炼、食品生产、电站运行以及商品的设计、开发、销售等。分布式计算已经成为必不可少的技术。
1.分布式系统
分布式计算机系统是一种计算机硬件的配置方式和相应的功能配置方式。它是一种多处理器的计算机系统,各处理器通过互连网络构成统一的系统。系统采用分布式计算结构,即把原来系统内中央处理器处理的任务分散给相应的处理器,实现不同功能的各个处理器相互协调,共享系统的外设与软件。这样就加快了系统的处理速度,简化了主机的逻辑结构,特别适合于工业生产线自动控制和企事业单位的管理,成本低,易于维护,成为计算机在应用领域发展的一个重要方向。
分布式处理系统是一个紧密耦合的系统。并且,分布式处理系统一般有比较复杂的互连网络。它和网络的区别是:计算机网络虽然与分布式计算机系统有相同之处,但二者并不等同。分布式系统的最大特点是整个系统中的各计算机和系统资源对用户都是透明的,也就是说,用户通过键入命令就可以运行程序,由操作系统为用户选择一台最合适的计算机来运行他的程序,并把运行结果传到合适的地方,而这些都不需要用户的干预。网络则一般不对用户透明,对数据的处理需要有用户的参予。一般,分布式系统是计算机网络的一个特例。
分布式系统常常意味着各组成部分之间相当严格的同步以达到协同操作、远程过程调用(rpc:remoteproce durecall)或消息传送,而网络系统则意味基于消息的通信、可能很长的延迟(在收发消息之间)、松散的同步性以及没有全局的目标。事实上,在网络和分布式系统之间并没有很清晰的界限。但人们一般认为分布式处理的主要特征为:各部件是合作、
自治的,资源和控制是分散的并对用户是透明的,另外还有全局的操作系统。概括起来,即:①硬件资源分散;②数据资源分散;③控制分散,不是集中式的,没有主次分别;④并行处理,即应用程序采用了并行计算;⑤任意两台计算机可通过通信达到资源共享。一般把达到上述条件的计算机系统称为分布式计算机系统,简称为分布式系统。
分布式系统中的每个节点既独立工作,又与所有其他节点并行工作。每个节点多于一个进程(执行程序),每个进程多于一个线程(并行执行任务),可在系统中充当组件。大多数组件具有反应性,对来自用户的命令和来自其他组件的消息不断地进行响应。像操作系统一样,分布式系统旨在避免终止,因此应始终保持至少部分可用的状态。
分布式并发控制作为分布式事务管理的基本任务之一,其目的是保证分布式数据库系统中多个事务高效而正确地并发执行。
分布式计算机系统的特点:无主从区分;计算机之间交换信息;资源共享;相互协作完成一个共同任务
分布式计算机系统的功能:通信结构;网络操作系统;分布式操作系统(透明性)2.分布式并发控制
所谓并发控制就是负责正确协调并发事务的执行,保证这种并发存取操作不会破坏数据库的完整性和一致性,以确保并发执行的多个事务能够正确运行并获得正确结果。并发控制算法主要用于控制事务冲突操作的交错执行,以保持数据库的完整性。并发控制旨在提高系统执行效率,并保证分布式事务的一致性,保证允许非冲突的事务可以并发进行,冲突的事务可以串行化进行。利用并发控制的数学理论,可以将分布式控制归结为两个基本问题,即读—写同步( read - writesynchronization) 和写—写同步(write - write synchro2nization) 。
分布式并发控制基本算法常见的有基于锁机制的并发控制方法、基于时间戳的并发控制方法还有基于多数法的并发控制方法,等等。下面是对几种并发控制方法的介绍。
2.1基于锁机制的并发控制方法
基于锁(Locking)机制的并发控制方法,是常见的一种并发控制算法。这种锁机制的基本思想是:事务对任何数据的操作均须先申请该数据项的锁,只有申请到锁,即加锁成功后才可对数据进行操作。操作完成以后,释放所申请的锁。如果需申请的锁已被其它事务锁定则要等待,直到那个事务释放该锁为止。通过锁的共享及排斥特性,来实现事务的可串行化调度。采用锁模型实现并发控制的最著名算法,是两段锁协议(即2P L 协议) ,另外常用的
还有多副本并发控制方法。
2.1.1两段锁协议
简单说,两段锁协议[3,4]的原则是事务在释放某锁后不能再提加锁请求。或者说,一个事务应当在确定其不再需要其它加锁的情况后才释放所持有的锁。两段锁协议把每个事务的执行均分为两个阶段:生长阶段和衰退(或收缩)阶段。在生长阶段,事务获得锁并访问数据项,这在阶段,事务可以申请获得任何数据项上的任何类型的锁,但是不能释放任何锁。在衰退阶段,事务释放锁,在这阶段,事务可以释放任何数据项上的任何类型的琐,但是不能再申请任何琐。两段锁协议不要求事务必须一次将所有要使用的数据全部加锁,因此遵守两段锁协议的事务可能发生死锁。两阶段的锁发的封锁序列如下图所示:
图1 封锁序列
2.1.2多副本并发控制方法
多副本的存在一方面改善了系统的性功,提高了系统的稳定性,所以必须通过某种手段,保证各个副本之间的一致性。基本的多副本并发控制算法有:读--写全法,主副本法,中心场地法,多数法。
读—写全法:该方法的特点是:当事务对某一数据项加锁时,若加读锁则只对多副本中的某一副本加锁。
多数法:多数法对数据项的加锁,只有当获得多于副本数一半以上的锁(包含读或写锁)后才可以进行,即加锁的副本数总要大于未加锁的副本数。因此,当两个事务对同一个数据项申请加锁时,一个事务锁住了该数据项半数以上的副本,另一事务也要申请在半数以上的副本上加锁,则至少有一个副本会发生冲突,局部管理程序将拒绝后一事务的加锁请求,从而实现了同一时刻内两事务不可能对同一数据项及副本加排他锁,只可以加共享锁。
主副本法:当对某一数据项加锁时,不管其副本数多少,只要对其中一个称为主副本的加上锁,即得到该数据项的锁。
2.2基于时间戳的分布式并发控制
时间戳顺序[2,5]与两段锁是不同的,两相端锁(2P L)技术可简单认为是一种保证事务执行的串行性次序的方法,它用上锁和开锁来执行,并用事务得到锁的先后次序作为事务操作