from:http://blog.sina.com.cn/s/blog_4a1f59bf0100pplp.html
随着网络环境的日益普及,新的应用呈现出许多相似的特点那就是开放性和分布性。对于Internet商业应用来说分布性和开放性更是最基本的要求,并且随着人们对电子商务、安全防范等复杂的Web应用需求的增加,Web应用不仅仅是对只读信息的存取,面向商业活动的读取将迅速增加。这意味着,从简单的数据系统全球联网查询,逐步转向更具有分布式数据库系统特色的应用环境。
我们知道,研究分布式数据库系统的目的、动机主要是组织目标,即为应用所驱动。开放性、分布性不仅是当前新应用的要求,也同样是分布式数据库系统的优势所在。可以预料在当前的网络、分布、开放的大环境下,分布式数据库系统将会有更加长足的发展和应用。
第三章 分布式事务
分布式数据库通过两种策略:分布式事务和数据复制,保持各种数据副本的 一致性。数据复制主要用于更新多个服务器上的大量数据。除此之外,还需要在本地的数据库服务器之间更新若干表。这时所需更新的数据量不是很大,因此决定采 用分布式事务处理的方法来解决。当一个服务器上的数据进行修改时,为了保证数据的一致性,需要引起其它服务器上的数据随之更新,这就要用到分布事务(distributed transaction)的概念,并且要采用分布式的事务处理方法。
3.1分布式事务处理
为了更好的说明分布式事务处理的机制,首先介绍一下事务的概念。首先讨论一下分布式事务,分布式事务用两阶段提交协议保证事务的原子性。两阶段提交协议中,各结点采取的是完全同步的方法来保证数据库的一致性。
3.1.1事务的概念
事务作为数据库的重要概念,是并发控制的基本单位[10]。所谓“事务”是一系列有单个用户或应用程序提交的数据库操作,这些操作是一个不可分隔的整体。
3.1.2事务具有四个特性
原子性(Atomicity),即一事务的操作要么全部执行,要么全部不执行。当事务非正常终止时,其中间结果将被取消。
一致性(Consistency),又叫可串行性。并发执行的几个事务,其操作的结果应与以某种次序串行执行它们的结果相同,因此称为可串行性。这种可串行化的并发调度是由数据库系统的并发控制机制来完成,以保证并发事务执行时数据库状态一致,所以这种性质也称为事务的一致性。
隔离性(Isolation),一个未完成事务不能在提交前就把其中间结果提供给其它事务使用。
耐久性(Durability),一个事务正常结束即提交后其操作的结果将永久化且与提交后发生的故障无关。
事务的ACID属性[11]对开发可靠的分布式应用起着重要的作用。可串行性和隔离性主要涉及到多个事务对数据库进行存取操作时的并发控制机制;而原子性和持久性更是为了保证数据库状态一致,特别是在出现故障后仍能恢复到前一个数据库一致状态,所以涉及到恢复机制。
3.2分布式事务管理
在分布式数据库系统中,分布式事务管理的目的在于保证事务的正确执行及执行结果的有效性,主要解决系统可靠性、事务并发控制及系统资源的有效利用等问题。
在分布式数据库中对各种数据项的访问常常通过事务来完成,一个事务可能要访问分布存储在多个站点上的数据,该事务将被划分成多个子事务,每个子事务负责对一个数据存储站点进行访问。在分布式数据库中把事务分为两种类型:局部事务和全局事务。局部事务是那些仅访问和更新一个局部数据库中数据的事务:全局事务是那些访问和更新多个局部数据库中数据的事务。
3.3分布式事务的恢复
分布式数据库系统中,各个场地除了可能发生如同集中式数据库的那些故障外,还会出现通信时信息丢失、传送延时、线路中断等事故。因此,情况比集中式数据库更复杂,相应的恢复过程也就复杂些。
为了执行分布事务,通常在每个场地都有一个局部事务管理器,用来管理局部子事务的执行,保证事务的完整性,并且各局部事务管理器之间必须相互协调,保证所有场地对它们所处理的子事务采取相同的策略:确保要么执行,要么回滚[12]。确保这一策略的常用技术是两段提交协议(2-Phase-Commitment Protocol)简称2PC。
3.3.1两段提交协议2PC
两段提交协议把一个分布事务的事务管理分为两类:一个是协调者,所有其他的是参与者。协调者负责做出最后的提交或夭折决定。参与者负责本地子事务的动作。2PC的基本思想是为全部参与者做出关于提交或夭折全部本地子事务的唯一决定。如果其中有一个参与者不能本地提交其子事务,则全部参与者必须本地天折。此协议有两阶段组成,第一阶段的目的是达到一共同的决定,第二阶段的目的是实现这个决定。协议的原理如下[13]:
采用两段提交协议后,当系统发生故障时,各场地利用各自相关的日志信息便可执行恢复操作[14]。针对站点故障、丢失报文及网络分割等常见故障的恢复操作过程描述如下:
1.站点故障
(1)当参与者在写入“准备提交”前发生故障时,该参与者无法向协调者发回答信息,因此当协调者等待超时后,将决定天折事务。当该故障恢复后,重启动过程无须收集其它站点的信息即可夭折事务。
(2)参与者在写入“准备提交”后发生故障,这时其它的参与者可以正常 的结束该事务“提交”或“天折”,因为协调者可以根据收到的应答决定“提交”或“天折”。因此,故障恢复后,重启动过程要访问协调者或参与者,以了解事务 己做出的决定,然后执行相应的操作。这里我们假设在日志中写入“准备提交”记录和发送“准备提交”信息给协调者这两个动作具有原子性。
(3)协调者在日志中写入“预提交”记录后,写入“全部提交”或“全部夭折”前发生故障,这时己发出“准备提交”的参与者将等待协调者恢复。协调者的重启动过程从头恢复提交协议,从“预提交”记录中读出参与者的标志符,重发“预提交”报文给参与者,重新执行提交过程。
(4)协调者在写入“全部提交”或“全部夭折”记录后,在写入“事务结束”记录前发生故障。在这种情况下,协调者恢复时必须给所有的参与者重发其决定,未收到信息的参与者不得不等待协调者的恢复。和(3)一样,参与者不应因收到两次一样的命令而受影响。
(5)协调者在日志中写入“事务结束”记录后发生故障,这种情况下事务己结束,不需恢复处理。
2.丢失报文
(1)来自参与者的回答报文(“准备提交”或“夭折”)至少丢失一个。在这种情况下,协调者将等待回答而超时,整个事务被夭折。但它无法决定是站点故障还是通讯故障,而参与者正确执行,它不会启动恢复过程。
(2)丢失“预提交”报文,由于至少一个参与者收不到“预提交”命令,因此参与者处于等待状态,而协调者也等待参与者的回答,所以协调者会因为等待超时而夭折事务。
(3)丢失“提交”或“天折”报文,这种情况下参与者处于等待协调者命令的状态下,当未收到命令时会因等待而超时,这时向协调者发请求重发该命令的信息。
(4)丢失了“己执行”报文,当协调者未收到全部的“己执行”报文时,协调者会因等待而超时,这时协调者重发命令报文给参与者,这时参与者必须给予“执行”报文回答,即使此时相应的子事务己不在活动也要重发。
3.网络分割
假设在出现网络分割时,整个网络分为两个组,包含协调者的组称为协调者组,其它的则组成参与者组。这种情况对于协调者来说相当于参与者组中的多个参 与者同时发生故障,这时协调者可以做出决定,然后把命令发给协调者组中的参与者,因此这些站点上的子事务可以结束。这与站点故障中的(1)和(2)两种情况类似。对于参与者失去联系,这时它们认为出现故障。这种情况与站点故障中的(3)和(4)相似。
3.3.2三阶段提交协议3PC
在基本的2PC协议中,当参与者等待协调者的回答时,可能因为网络故障或协调者故障使之收不到回答信息而出现等待超时,这时事务进入等待状态。当故障一直持续时,则事务就一直处于阻塞状态,因此降低了整个系统的可用性。为此,我们引入了3PC协议,这是一种非阻塞提交协议[15]。这里所说的非阻塞的提交协议只是相对一定的故障模型,到目前为止还没有一种协议可以完全避免阻塞,但是我们可以通过一定的处理减少阻塞。
在2PC协议中,参与者的提交是在它知道了其它所有的参与者均发生了“准备提交”的报文后进行的。若在2PC中增加一阶段使得参与者的提交不仅要等到它知道所有的参与者均发出了“准备提交”的报文,而且还知道所有参与者的状态(如:故障状态或已经恢复)以后才执行。这时2PC变成3PC协议。在3PC协 议中,报文有三次接收和发送,协调者第二次向参与者发出的报文不是“提交报文”,而是提交前的预备报文,告诉所有的参与者均可以自己做出决定或夭折或提 交,而不必因等待协调者恶意问答而进入阻塞状态,因为即使此时发生故障,系统的恢复机制迟早也要恢复故障前的一刻,即个参与者的子事务都要提交,因此,参 与者可以自行决定先执行下去而不是处于等待状态,从而减少了阻塞。
3PC可以避免阻塞是基于一定的故障模型的。一般来说,在下列故障出现时3PC不会进入阻塞状态:
(1)只允许出现场地故障而不会出现网络分隔的情况。
(2)场地故障但不影响通讯功能,即它仍能进行正常的收发工作且信息是正确的。
(3)场地故障使得系统必须进行恢复处理,恢复机制应能知道已发生过故障且其它场地进行通信,了解故障前的情况是参与者恢复到提交状态中去。
(4)场地五故障时必须在超时以前向曾求助于它的场地发回答报文。
(5)网络不会丢失报文且场地间传送报文的次序和接收报文的次序一样。
3.4小结
本章主要讨论了分布式事务的概念,分布式事务提交,并具体分析了两阶段提交协议(2PC)中针对站点故障、丢失报文及网络分割等常见故障等常见故障的恢复操作做了介绍。最后引入了三阶段提交协议(3PC)。
相关推荐
base zz zz zz zz zz base zz zz zz zz zz base zz zz zz zz zz base zz zz zz zz zz
本文件为“ZZ-2021027 分布式光伏系统的装调与运维赛项规程”,它是2021年全国职业院校技能大赛中职组信息技术类参赛选手备赛的重要参考资料,主要包含竞赛目的、赛项内容、竞赛方式、竞赛流程等方面的知识点。...
"ZZ-2022027 分布式光伏系统的装调与运维赛项赛题.zip"这个压缩包文件,显然包含了关于这一赛项的详细资料,为参赛者提供了宝贵的参考资源。 分布式光伏系统,顾名思义,是指在用户侧或小型电站级别的光伏发电系统...
喵呜手机端APP通信协议 一、协议总则 * 发送协议:帧头 + 长度 + 内容 + 校验 + 帧尾,例如 "#17,CM,-27.314,-5.716*56;" * 帧头:#,长度:17,内容:CM,-27.314,-5.716,校验:56,帧尾:; * 长度:内容字节数 *...
通过分析源码,你可以学习到如何处理用户输入,如何设计数据库模型,如何实现用户认证,以及如何进行前后端交互。此外,还可以了解到如何对用户提交的数据进行过滤和验证,以防止SQL注入等安全问题。 总的来说,...
我们研究了四轻子最终状态ℓ+ℓ-ℓ+ℓ-的产生,这些状态主要由一对弱电Z玻色子ZZ产生。 使用LoopSim方法,我们合并ZZ和ZZ + jet的NLO QCD结果,并获得ZZ产生的近似NNLO预测。 还包括对ZZ过程的精确胶子融合环平方的...
《中医大夫助理信息系统 zz-doctor 深度解析》 中医大夫助理信息系统“zz-doctor”是一款基于Android平台的应用程序,旨在为中医医生提供智能化、便捷化的诊疗辅助工具。通过深入剖析这款应用的源码,我们可以了解...
ZZ561401.CAB ZZ561401.CAB ZZ561401.CAB
例如,Eterm协议可能定义了一套特定的命令格式,如"XX YY ZZ",其中"XX"代表命令类型,"YY"表示操作码,"ZZ"可能包含附加参数。在实际应用中,代理人可能输入如“CA QS 20220701”这样的指令来查询某一天CA航空公司...
wincc SIMATIC WinCC是第一个使用最新的32位技术的过程监视系统,具有良好的开放性和灵活性。 从面市伊始,用户就对SIMATIC WinCC印象深刻。
标题中的“ZZ_MODIFIED_GEEBINF.ENS.zip”是一个压缩包文件,主要包含一个名为“ZZ_MODIFIED_GEEBINF.ENS”的文件。这个文件是一种特殊格式,用于定义EndNote的引用样式。EndNote是一款强大的文献管理软件,广泛应用...
Paxos的核心在于两阶段提交(2PC)和三阶段提交(3PC)的改进,能够在存在拜占庭错误的环境中保持系统的正确运行。理解Paxos协议对于掌握分布式系统中的状态一致性至关重要。 接着,我们要了解Zookeeper,它是...
在CAD中想要快速测量长度,在CAD工具栏找到加载应用程序,再点击加载 加载成功后在输入栏输入“zz”(不分大小写)在选择你需要测量的线段即可。
”拥有此 IP 地址的计算机 Bob 会将其 MAC 地址 ZZ —zz —zz —zz —zz —zz 告知 Alice。然后,Alice 会将所有发往 A B.c F 的三层包封装成二层的形式发给 ZZ —zz —zz —zz —zz —zz。 然而,可能发生的一种...
cad标高归零,好用的
标题中的“zz经典C代码.rar_C语言 图像_ZZ丫C香烟代码”暗示了这是一个包含C语言编程中关于图像处理的代码集合,可能是一些示例或实践项目。"ZZ丫C香烟代码"可能是作者或者这个代码库的特定代号或者命名风格。描述中...
3. 数据存储:理解Hadoop、HBase、Spark等分布式存储系统,以处理大规模数据。 4. 数据处理:运用MapReduce、Spark SQL等工具进行数据预处理和转换。 5. 数据分析:运用统计学方法和机器学习算法,如聚类、分类、...
事件处理可以是简单的客户端操作,也可以是复杂的服务器端处理。 ##### 5. **业务逻辑** 业务逻辑是Web应用的核心,负责处理具体的业务需求。在JSF框架中,通常通过后端Bean(如Managed Bean或CDI Bean)来实现...
,主图指标,顶底信号,突破,转折信号,都很明显