Board logo

标题: 事务服务浅析 [打印本页]

作者: look_wt    时间: 2018-10-15 19:06     标题: 事务服务浅析

第I部分 事务服务简述1. 事务综述事务是一个非常重要的编程概念,使用事务,可以很简单地构造出可靠稳定的应用程序,尤其对那些需要进行并发数据访问的应用程序,事务更是重要的多。事务的概念最初应用在那些用于商务操作的应用程序上,在这些应用中,事务用来保护中央数据库中的数据。随后,随着分布式计算的发展,事务在分布式计算领域中也得到了广泛的应用。现在,在分布式计算领域中,公认为事务是构造可靠性分布式应用程序的关键。
1.1事务产生的动机
1.1.1原子操作
考虑这样一个应用:用户把钱从一个银行账号转账至另一个银行账号,需要将资金从一个银行账号中取出,然后再存入另一个银行账号中。理想来说,这两次操作都应该成功。但是,如果有错误发生,则两次操作都应该失败,否则的话,操作之后其中一个账号中的金额将会是错误的,整个操作过程应该是原子性的,两个操作都是一个原子事务操作的一部分。
可以使用异常处理来处理上述问题,代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
try{
  //从账户1中取款
}
catch(Exception e){
    //如果发生错误,则终止操作
    return;
}
try {
    //如果第一步没有发生错误,则将提取出的资金存入账户2
}
catch(Exception e) {
//如果发生错误,则终止这步操作,并且将从账户1中取出的资金再重新存回到账户1中
return ;
}




上面这种解决方法从存在着下面的问题:
因此,需要一种事务处理机制来保证这种原子性的操作。
1.1.2 网络故障或机器故障
为了在发生严重故障之后,能够保证系统的状态是一致的,所以需要一种恢复性的机制来保证这一点。
1.1.3 数据共享
需要一种机制来保证多用户并发访问数据的问题。
以上这些问题的解决方法,便是使用事务服务。
1.2 使用事务服务带来的好处
使用事务,便可以利用事务的四个重要属性:ACID。
2. 事务应用事务服务支持的应用由下列实体组成:
下图展示了一个简单的事务应用,包含了基本的事务元素:
3. 事务服务提供的功能事务服务提供下列操作:
3.1事务模型
3.2 事务的终止
通过发出提交请求或回滚请求来终止事务。通常,事务是由发起事务的客户(事务发起者)来终止的。
3.3事务的完整性
某些事务服务的实现为了保证事务的完整性,在事务服务接口的使用上施加了一些限制。这称为checked事务行为。例如,在事务的所有任务完成之前提交事务会导致数据不完整。事务服务的Checked实现会阻止事务的过早提交。其他事务服务的实现则完全依赖应用程序来提供事务的完整性保证,这称为unchecked事务行为。
3.4事务的上下文
事务上下文惟一标识了一个事务,保存了事务的当前状态。通过查询事务上下文,可以得知自身是否处于事务中,所在事务的状态以及其他一些有用的信息。
事务上下文可以作为事务操作调用的一部分隐式地传递给事务对象。事务服务也允许程序员将事务上下文作为事务请求的显示参数来传递。
4. 分布式事务分布式事务是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。为了实现分布式事务,需要使用下面将介绍的两阶段提交协议。
在分布式事务两阶段提交协议中,有一个主事务管理器负责充当分布式事务协调器的角色。事务协调器负责整个事务并使之与网络中的其他事务管理器协同工作。
为了实现分布式事务,必须使用一种协议在分布式事务的各个参与者之间传递事务上下文信息,IIOP便是这种协议。这就要求不同开发商开发的事务参与者必须支持一种标准协议,才能实现分布式的事务。
以上从事务整体描述的角度简要介绍了事务服务产生的动机、事务服务的应用和事务服务的功能,下面以J2EE中的事务服务为例对事务的实现作简要的介绍。




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0