锁定老帖子 主题:请教JTA中跨数据库事备的实现原理
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2004-08-24
charon 写道 欠可靠的网络和系统中,不论使用哪种协议,完全的可靠性是达不到的。但是两阶段提交能够解决绝大部分问题。
也就是说,在广域网上,难以保证完全可靠的事务,不管采用多少次提交,因为网络连接可能在提交阶段出错。 |
|
返回顶楼 | |
发表时间:2004-08-31
puzzle了很久的问题....
在XAResouce1 and 2 commit的时候, 可能XAResouce1 commit() 成功了,XAResouce2 commit()失败了。 这时候,会抛出一个 “启发式异常”。 不知道这个异常的几率有多大?由什么原因引起? mooniscrazy 写道 charon 写道 欠可靠的网络和系统中,不论使用哪种协议,完全的可靠性是达不到的。但是两阶段提交能够解决绝大部分问题。
也就是说,在广域网上,难以保证完全可靠的事务,不管采用多少次提交,因为网络连接可能在提交阶段出错。 一般appa server和db server之间的连接是可靠的(在一个机器上或者intranet中) |
|
返回顶楼 | |
发表时间:2004-08-31
zzsczz 写道 puzzle了很久的问题....
在XAResouce1 and 2 commit的时候, 可能XAResouce1 commit() 成功了,XAResouce2 commit()失败了。 这时候,会抛出一个 “启发式异常”。 不知道这个异常的几率有多大?由什么原因引起? 启发式异常,HeuristicCompletionException。Heuristic翻译为启发式(不是我翻译的)。我对Heuristic也一知半解,而且没有找到足够的参考资料,下面仅仅根据Java Doc,给出自己的一点理解,请指正。 大意是, 如果事务处理系统支持启发式(heuristics),那么允许准备的参与者做出关于提交或回滚的单方面决定。如果参与者所作的选择与其他参与者的不同,非原子性行为就出现了。 前面说的那种情况,第一个XA Resource已经提交了,第二个XA Recource提交失败,两个参与者做出不同了选择(尽管是被动的)。这个原因产生了HeuristicCompletionException。 Spring HeuristicCompletionException Java doc http://www.springframework.org/docs/api_1.0m1/org/springframework/transaction/HeuristicCompletionException.html 事务处理的nuts和bolts http://www2.linuxforum.net/mhss/TP/NutsAndBoltsOfTP.html |
|
返回顶楼 | |
发表时间:2004-08-31
去Mike Spille老的那个blog上看看
http://jroller.com/page/pyrasun/Weblog?catname=/XA 他写过一个XA Exposed系列,一共分三部分。很说明问题。 |
|
返回顶楼 | |
发表时间:2004-09-01
想想tcp的三方握手?
如果我两个都commit()了之后,让这两个数据库握一下手不就行了? |
|
返回顶楼 | |