初学者对分布式事务处理的必要条件的理解,请大家指定一二,谢谢!

racerman 2003-08-20 09:33:39
假设有一个事务处理Tran涉及到对资源A的操作operateA和对资源B的操作operateB.

那么要保证Tran处理的完整性,必须满足的条件如下:

1.对事务处理涉及到的资源,资源提供可由用户控制的事务处理接口和自管理,接口保证对资源的成功操作后,在接收到用户的提交确认后,才更新资源;资源自管理保证在超时未接收到用户的提交确认,回滚对资源的操作。

2.在事务处理层,只要对某个资源的操作后,超时未得到响应或出现某些异常或某个操作失败,则认为整个事务处理失败,必须将资源恢复到对其操作前的状态。
...全文
35 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
racerman 2003-08-20
  • 打赏
  • 举报
回复
是的,你的想法没错。我是想讨论一下实现事务处理所需要的特征!
hj12 2003-08-20
  • 打赏
  • 举报
回复
事务处理可以看成原子操作,就是所有的任务必须一起完成。老兄如果学过操作系统应该
知道P,V操作吧,其实原理和那一样。
Leric 2003-08-20
  • 打赏
  • 举报
回复
模拟一个商业交易,应用程序需要完成几个步骤。例如,一个财物应用程序,可能会将资金从经常性帐户(checking account)转到储蓄性账户(saving account),该交易的伪码表示如下:
begin transaction
debit checking account
credit savings account
update history log
commit transaction
三个步骤要么全部完成,要么一个都不做。否则数据完整性将被破坏。因为事务中的所有步骤被看作一个统一的整体,所以事务一般被定义为一个不可分割的工作单元。
结束事务有两种方法:提交或者回滚。当一个事务提交,数据修改被保存。如果事务中有一个步骤失败,事务就回滚,这个事务中的已经执行的动作被撤销。例如在上面的伪码中,如果在处理第二步的时候硬盘驱动器崩溃,事务的第一步将被撤销。尽管事务失败,数据的完整性不会被破坏,因为帐目仍然保持平衡。
前面伪码中,begin和commit标明了事务的界限。当设计一个企业Bean的时候,你要决定怎样通过容器管理或bean管理事务来指定事务界限

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧