石头:2229 - 371 x
特蕾莎修女k Abuya*,何塞·理查德博士m . Rimiru博士学位,Dr.Cheruiyot W。K博士
|
相关文章Pubmed,谷歌学者 |
访问更多的相关文章全球研究计算机科学杂志》上
分布式数据库系统带来不同的问题当访问分布式和复制数据库。两阶段提交协议(2 pc)是一个标准的算法在分布式系统维护事务的ACID属性。它确保每个事务在一个分布式系统是执行其承诺的完成或者它的一个业务。在分布式数据库系统中,事务块在两阶段提交(2 pc)处理期间如果协调员网站失败,同时一些参与者网站宣布自己准备提交事务。阻塞现象减少系统的可用性,因为参与者保持锁定的资源,直到他们从协调器接收下一条消息后恢复。一个备份协调员来处理这个问题,但引入更多的通信开销。本文地址事务阻塞的问题,同时减少通信开销使用模拟算法。仿真算法是用Jcreator mySQL开发作为一个后端数据管理器,Bitronix事务管理器(BTM)这是一个简单但完整的Java应用程序的实现。Bitronix事务一个项目经理是一个完美的选择使用事务能力唱Java传输管理器(JTM)外观。仿真交易算法最小化在分布式事务协调器失败的问题。
介绍 |
分布式事务管理的主要目的是实现原子性在所有网站和减少交易失败。分布式数据库系统(比如航空订票系统、银行应用程序,信用卡系统广泛使用这些协议的通过网络交易。橡皮并发控制是分布式系统的非常困难的任务,因为缺乏全局时钟和缺乏共享内存。事务管理的重要的问题是,如果数据库处于一致状态之前启动一个事务,那么数据库应该返回一个一致的状态后,交易完成。分布式系统允许人们从任何地方查询系统的分布式网络和itA¢年代没有必要知道网络上的数据被寻求。用户问题查询,然后返回结果,称为位置透明性的功能[2] |
一个分布式数据库结合了两种不同的技术用于数据处理:数据库系统和计算机网络。检索的数据从不同的网站被称为查询处理。查询处理更复杂和困难在分布式环境中分布式查询处理器的目标是有效地执行这些查询,以最小化响应时间和通信总成本与查询数据库。原子提交协议用于分布式系统在多个网站需要更新他们的数据库相同的信息。一个客户机请求信息上传和站点接收该请求,并开始一个过程,他成为这个请求的协调员。系统中的其他网站将成为特定请求的参与者[4]。协议意味着事务的原子性财产必须在所有网站或不执行;这是通过让所有参与者投票是或否的特定事务取决于他们是否能提交与否。只有当所有网站准备提交,协调器发送一个GLOBAL_COMMIT参与者的确认,他们可以提交事务。一个网站可以协调者和参与者都在同一时间,但对于不同的事务。 If a coordinator site crashes and a participant waits for a final answer from the coordinator, if he should commit the transaction or not, the participant is blocked as long as the coordinator is down. This is a problem associated with Two-Phase Commit (2PC) protocol.To enhance its performance, a simulation algorithm in 2PC is created to show how coordinator failure is minimized in distributed transactions [10] |
2.0事务的ACID属性 |
数据库事务或原子事务的概念已经演变为了使一个很好的理解数据库系统行为在错误的环境中,随时可能发生事故的地方,从了解数据库崩溃和恢复状态。数据库事务是一个工作单元,通常封装的操作在一个数据库[5]。每个事务都有定义良好的边界的程序/代码执行包含在事务由事务的程序员通过特殊事务的命令。每一个数据库事务遵循酸(原子性、一致性、隔离性和持久性)产权规则数据库系统:[12] |
原子性:原子性保证多业务捆绑在一起,表现为一个连续的工作单元,操作在一个孤注一掷的范例。所有的数据执行更新或没有在任何时候如果出现错误。换句话说,在失败的事件在任何交易的一部分,所有数据将保持在其前状态事务从来没有尝试。在事务性的术语中,这称为回滚事务。 |
一致性:每笔交易必须离开数据库处于一致状态,即。,maintain the predetermined integrity rules of the database like constraints upon and among the database's objects. A transaction must transform a database from one consistent state to another consistent state. Since a database can be normally changed only by transactions; all the database's states are consistent. An aborted transaction does not change the database state it has started from, as if it never existed. |
隔离:这个属性在分布式系统保护并发执行事务看到每个otherA¢年代不完整的结果。隔离允许多个事务读取或修改数据,而不了解彼此,因为每笔交易被孤立于他人。提供隔离是并发控制的主要目标。 |
耐用性:这可以保证成功的影响已提交的事务必须坚持通过崩溃通常通过记录事务的影响及其提交事件在非易失性内存。 |
3.0两阶段提交协议分析 |
两阶段提交协议(2 pc)是一个分布式的算法中使用计算机网络和分布式数据库系统。同步数据更新时,它应该被应用在分布式数据库中。在这个协议中,一个节点充当协调者,也称主和所有其他节点在网络被称为参与者或奴隶。在第一阶段,所有这些参与者同意或不同意协调提交,即。,vote yesâÂÂs or noâÂÂs and in 2nd phase they complete the transaction simultaneously by getting the commit or the abort signal from the coordinator [13] |
3.1。2 pc的原子性 |
原子性是确保当与一个项目相关单位执行的所有操作完成或没有执行。在分布式系统需要保证原子性事务协调员负责以下:- |
开始事务的执行。 |
将事务分解成许多sub-transactions,和分发这些sub-transactions为执行适当的网站。 |
协调事务的终止,这可能会导致事务被提交网站或流产的网站。 |
2 pc的执行是由协调器后的最后一步交易已经达成。 |
协议是发起时,事务可能仍然被执行在当地的一些网站。协议包括所有的当地网站事务执行。让T是一个事务发起现场Si并让事务协调员Si Ci 2 pc的第1阶段是通常被称为“准备阶段”。下面是在这个阶段执行的操作: |
4所示。如果日志不包含控制记录关于T,该网站执行撤销(T)。 |
协调失败2 pc以以下方式处理: |
1。如果一个活跃的网站包含一个<提交T >记录在日志中,T必须提交。 |
2。如果一个活跃的网站包含一个<中止T >记录日志,那么T必须中止。 |
3所示。如果某些活性部位不包含日志的记录<准备T >然后失败的协调员Ci不能决定提交T .而不是等待Ci恢复,最好中止T。 |
4所示。如果所有活跃的站点有一个<准备T >日志记录,但没有额外的控制记录,需要等待协调者恢复。 |
5。阻塞问题:T是阻塞等待网站Si的恢复。 |
3.2。一般要求提交协议 |
提交协议提出了如下的一般要求:- |
R1。协调器中止事务如果至少一个参与者投票终止。 |
R2。提交一个事务协调器只有在所有的参与者进行投票。 |
R3。所有non-faulty参与者包括协调员应最终决定中止或提交。 |
R4。如果任何一个参与者包括协调器决定中止或提交任何其他参与者将决定提交或中止。 |
3.3查询处理流程 |
一个查询流程显示了如何在一个分布式事务环境使用两阶段提交协议[11] |
从上面的图我们可以解释的成功和失败在如下2 pc分布式事务; |
成功:如果发送方收到消息的协议所有接收器在commit-request阶段: |
一)发送方发送一个提交消息的接收者。 |
b)每个接收机完成操作,并释放所有的锁和资源事务期间举行。 |
c)每个接收器发送一个确认消息的发送者。 |
d)发送方完成交易当所有确认已收到。 |
失败:如果任何接收器票没有在commit-request阶段或者发送方的超时过期: |
一)发送方发送一个回滚信息接收器。 |
b)每个接收器取消使用撤销事务日志,和释放资源和锁事务期间举行。 |
c)每个接收器发送一条确认消息的发送者。 |
d)发送方撤销事务当所有确认已收到。 |
3.4 2 pc的阻塞问题 |
在2 pc协议,考虑一个参与者VOTE-COMMIT消息发送到协调器,并没有收到GLOBAL-COMMIT或GLOBAL-ABORT消息由于coordinatorA¢s失败。在这种情况下,所有这些参与者将被阻塞,直到经济复苏的协调员终止的决定。 |
描述的阻塞问题是用给定的情况下,如果协调器无法运作,同时一些参与者已经确认自己提交状态。在这种情况下结束阻塞事务,参与者应该等到协调员会复苏。阻塞事务继续保持所有的资源,直到他们获得的最终决定协调员复苏后[8] |
3.5备份协调员2 pc流程图 |
备份协调员提出了解决协调失败和阻塞问题2 pc以这种方式工作:工作方式如下:- - - - - -主协调器生成一个消息准备2 pc分布式事务,包括备份协调员的一个地址。主要协调维护一个分布式事务的事务日志,在事务日志访问主协调器和备份协调员。准备消息发送到多个参与者。主协调器故障转移到备份协调分布式事务而不中断。下图给出了一个通用的信息流动在一个分布式环境中,一个备份协调员中使用2 pc [12]。 |
图1.1使用2 pc协议流程图备份协调员 |
4.0协调失败在两阶段提交协议 |
2 pc协议是最简单和最著名的协议作为对象,以确保分布式事务的原子的承诺。这是一个集中控制机制协调的基础上,协调他人的行为称为参与者。一个协调器发送交易请求到参与者,并等待他们的回复在第一阶段。在收到所有回答,协调器发送一个最终决定参与第二阶段[7] |
协议意味着事务的原子性财产必须在所有网站或不执行;这是通过让所有参与者投票是或否的特定事务取决于他们是否能提交与否。只有当所有网站准备提交,协调器发送一个GLOBAL-COMMIT参与者的确认,他们可以提交事务。一个网站可以协调者和参与者都在同一时间,但对于不同的事务。如果一个协调员网站崩溃和参与者等待最终答案的协调员,如果他应该提交事务,参与者只要协调拦了下来。这是2 pc的问题算法降低了高度的数据可用性[9]。 |
4.1。工具和规范的交易算法 |
为了显示协调员和站点故障在两阶段提交协议,以下工具和规范采用:- |
我)Britonix事务管理器(BTM)是一个简单但完整的实现Java事务API (JTA) 1.1 API(应用程序编程接口)。这是一个完全工作XA事务管理器,提供所需的所有服务JTA API在试图保持代码尽可能简单容易理解的XA语义。 |
(二)MySQL数据库管理系统——作为后端数据资源管理器。这应该是MySQL 5.1或更高版本。 |
3)Java开发环境,提供虚拟机环境 |
5.0 - 2 pc协调员故障仿真 |
两个实际的实现协调失败进行了演示2 pc阻碍这一事实。Bitronix事务管理器,mySQL服务器和JCreator IDE被用来模拟一个两阶段提交协议的失败。它证明了分布式事务协调器失败在分布式数据资源。在这两种情况下: |
5.1分布式系统实体之间的关系 |
这些实体之间的关系如下图1.2所示。事务管理器负责做出最后的决定或者任何分布式事务提交或回滚。提交决定应该导致一个成功的交易;回滚离开了数据库中的数据没有改变。JTA事务管理器之间指定标准的Java接口和其他组件的分布式事务:应用程序,应用程序服务器和资源管理器。 |
编号的箱子,1、2和3在事务管理器对应的三个接口部分JTA。的信箱号码1 userTransaction接口,它提供了应用程序以编程的方式控制事务边界的能力。第二个事务管理器(2),这是一个接口,允许应用程序服务器控制事务边界代表应用程序进行管理。最后,XAResource盒3号,是一个行业标准的Java映射XA(扩充体系结构)。XA和事务性资源用于通信。中创建的两个数据库是MySQL,名叫KisiiBranch NairobiBranch。 |
5.2。协调失败2 pc的示范 |
演示协调失败,数据资源放到网上,跑涉及分布式事务协调器失败的源代码指向一个分布式数据资源。下面的表1.1给出的输出的一个片段Bitronix事务管理器日志文件,在分布式事务协调器故障和分布式数据资源。 |
两阶段提交算法将数据插入和检索到这些表。如表所示,Bitronix事务管理器首先获取Java虚拟机独特的ID,这是本地主机的地址,即127.0.0.1。行上面的三个片段显然表明„TwoPCCoordinatoFailureClass1A¢,Java应用程序的主类,因此我们的协调员,失败了。这是明显的Bitronix输出语句,„资源标记为失败(背景回收器将重试复苏)¢。 |
5.3协调Failure-Distributed-Transactions和分布式数据资源 |
如下表1.2所示,Bitronix事务管理器首先获取Java虚拟机唯一的ID,这是本地主机的地址,即127.0.0.1。 |
表1.2协调员Failure-Distributed事务和分布式数据资源 |
行上面的三个片段显然表明„TwoPCCoordinatoFailureClass1A¢,Java应用程序的主类,因此我们的协调员,失败了。这是明显的Bitronix输出语句,„资源标记为失败(背景回收器将重试复苏)¢。 |
6.0提出交易算法 |
图1.3总体仿真体系结构(出版社,2015) |
6.3过程仿真算法 |
1。三个数据库是MySQL服务器中创建。这些名字KisiiBranch NairobiBranch和总店。 |
2。三个表,创建一个在每一个数据库中,bankcustomer名称。 |
3所示。表bankcustomer有五列,即CustomerID、地址、城市和AccountBalance CustomerName。这些表的结构类似于上面的图1.4所示。 |
上述算法在Jcreator IDE编译和运行。如表所示,该算法由三个查询,两个用于插入,另一个用于从数据库中更新记录。这表明事务分区没有被使用。这是只有一个声明。 |
尝试{………} |
catch {…}。 |
观察这个算法表明,它只包含操作的一个分支。第一部分的该算法由sub-transactions为了插入和更新数据库,而另一部分被用于错误处理。因此有一个更好的并发控制和sub-transactions不阻止另一个,因为它们都执行前,同时进行。因此如果他们失败了,他们这样做在一组和事务管理器启动一个回滚。 |
在两阶段提交协议7.0交易算法输出 |
当一个算法运行所有的网站投票事务提交和决定GLOBAL-COMMIT协调员。这证明了成功的聚类算法在处理协调失败。所有事务提交或者没有提交。 |
检查三个网站在这些交易实际上已经承诺如表1.5所示,1.6和1.7所示。 |
上面的表展示并发性和阻止新集群的控制算法。如果管理不善的事务协调员,另外两个网站投票,TRANSACTION_COMMIT,因为他们的网站从未受到改变。然而,没有一个投票,因此发达算法可以管理并发访问分布式数据库。此外,由于没有一个网站投票TRANSACTION_COMMIT,他们不能声称已经被网站的失败,NairobiBranch。TRANSACTION_COMMIT他们投票,他们可以声称已经被NairobiBranch,因为它们属于相同的协调员,因此根据原子性的两阶段提交协议的要求,他们将提交在一起作为一个整体。 |
因此该事务聚类算法解决了问题协调员失败的同时确保没有阻塞的事务提交作为一个群体或群。要么全部或没有实现事务的原子性财产事务提交条件。 |
8.0结论 |
获得的结果表明,利用该算法,协调员失败交易与当前的两阶段提交可以减少有关。这是通过消除事务分区,这是当前的一个固有特性两阶段提交(2 pc)协议。在分区环境中,阻塞造成的失败协调员当参与者处于不确定状态是一个常见的问题。为了应对这一问题,我们聚集sub-transactions在一个子类,并使用继承的原则获得主要的变量和方法,父类的协调员,通过消息传递和消息调用。事务管理器被用来协调执行活动的协调员。事务提交或回滚的事务是由事务管理器。通过使用这种方法,子类中的所有事务提交全部或失败的,这是符合原子事务的原则。新算法有一个改进的性能在协调失败而言。结果表明,所有事务提交或中止和数据库提交后离开了一致性状态,或不变状态的事务中止进程。最后,还有在其他跛需要实现该算法,比如SQL和oracle服务器。 |
引用 |
|