[原创]浅谈Weblogic中的事务管理_Tomcat, WebLogic及J2EE讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Tomcat, WebLogic及J2EE讨论区 »
总帖数
9
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 8345 | 回复: 8   主题: [原创]浅谈Weblogic中的事务管理        上一篇   下一篇 
dawei.hu
注册用户
等级:上尉
经验:590
发帖:4
精华:0
注册:1970-1-1
状态:离线
发送短消息息给dawei.hu 加好友    发送短消息息给dawei.hu 发消息
发表于: IP:您无权察看 2015-7-29 17:09:25 | [全部帖] [楼主帖] 楼主

什么是事务

北京联动北方科技有限公司 “事务”是处理成组操作的一种机制,该机制将一组操作作为一个整体对待。

北京联动北方科技有限公司 一个事务中的所有操作要么全部发生,要么一个都不发生。

北京联动北方科技有限公司 事务所涉及的操作可能依赖于多个服务器和数据库。

我们都知道,事务应具有以下ACID 属性

北京联动北方科技有限公司原子性-全部执行或什么都不执行;事务中涉及的所有操作要么都实现,要么都不实现。

北京联动北方科技有限公司一致性-数据库必须从一个一致的状态修改为另一个一致的状态。如果系统或数据库在事务发生期间失败,将还原到(回滚到)原始状态。

北京联动北方科技有限公司隔离性-就事务访问的数据库记录而言,一个正在执行的事务独立于其它正在执行的事务。

北京联动北方科技有限公司持久性-事务一旦提交,其在系统或数据库失败后可以还原到提交时的状态。

事务是一组相关的操作。这些操作要么全部执行,要么一个都不执行。例如,使用Web 应用程序购买产品便是一个事务,该事务包括多个操作,如选择产品、下订单、减少应用程序数据库中待售产品的数量、从买方的信用卡帐户中借记相应金额的货款,以及在卖方的帐中贷记这些货款。

要成功完成此事务,必须成功执行该事务中涉及的所有操作此时,称事务已提交。不过,即使只有一个操作失败,该事务也将被回滚。这意味着必须撤消在该失败操作之前执行的所有操作产生的影响。

事务管理是指在应用程序资源之间对事务进行的端到端管理。提供端到端事务管理的两个基本组件是事务管理器资源管理器。事务管理器包含用于实现事务管理的逻辑。资源管理器是用于实现资源和事务管理器交互的驱动程序。事务管理器代表应用程序管理事务。事务管理器通过与参与事务的所有资源管理器通信来协调应用程序的命令,从而启动和完成事务。大致架构参见下图:

北京联动北方科技有限公司

在具体的事务管理上,通常采用两阶段事务提交(2-Phase Transition Commit)协议,其主要特性如下:

北京联动北方科技有限公司两阶段提交(2PC) 协议使用两个步骤提交分布式事务中的更改。

北京联动北方科技有限公司阶段1 :要求RM 准备进行更改

北京联动北方科技有限公司阶段2 :要求RM 提交更改并使更改成为永久性的,或者回滚整个事务

北京联动北方科技有限公司全局事务ID(XID) 用来跟踪与分布式事务相关联的所有更改

在WLS中使用JTA实现和管理事务,具体来说,WLS JTA可为业务事务提供以下支持:

• 在客户端应用程序启动事务时创建唯一的事务标识符。

• 支持可选事务名称(描述事务所表示的业务流程)。事务名称使统计信息和错误消息更易于理解。

• 与WebLogic Server基础结构配合工作以跟踪事务涉及的对象,因此必须在事务准备好提交时与之协调。

• 资源管理器(通常为数据库)被访问时,JTA代表事务通知资源管理器。然后,资源管理器将锁定被访问的记录,直到事务结束为止。

• 在事务完成时编制两阶段提交,这可确保所有事务参与者同时提交它们的更新。

在WLS中,具体的2PC提交实现上,不得不谈扩展架构(XA)协议,其具有如下特性

北京联动北方科技有限公司在WLS和RM之间使用的接口

北京联动北方科技有限公司实现2PC协议

北京联动北方科技有限公司使程序能够控制分布式事务所涉及的RM

北京联动北方科技有限公司

WLS中事务可以分为本地事务与全局事务两种类型:

北京联动北方科技有限公司本地事务处理单个资源管理器。对于这类事务,在WLS和资源管理器之间使用非扩展架构(非XA)接口。

北京联动北方科技有限公司全局事务可处理多个资源管理器。对于这类事务,在WLS和资源管理器之间使用扩展架构(XA)接口。

具体到数据库侧,通常由对应的数据库驱动决定其是否提供了XA接口实现,XA数据库驱动程序支持分布式事务或全局事务;而非XA驱动程序支持本地事务。但是,如果XA驱动程序不可用,可以通过如下JDBC资源配置实现全局事务:

• Logging Last Resource (记录最后一个资源):在此方法中,事务管理器处理并准备参与全局事务的所有XA资源管理器。然后,事务管理器将涉及非XA资源的事务分支作为本地事务处理。然后,它基于此最后一个事务分支的结果提交或回滚整个事务。

• Emulate Two-Phase Commit(仿真两阶段提交):在此方法中,非 XA资源在事务的准备阶段返回成功。然后,非XA资源尝试提交或回滚其本地事务。全局事务的最终结果不取决于非XA资源的提交或回滚操作的结果。因此,如果非XA资源的提交或回滚操作失败,将发生试探性错误。在这种情况下,参与全局事务的其它资源可能已经提交或回滚。但是,无论其它资源的状态如何,非XA资源将错误地提交或回滚。这可能会使数据处于不一致的状态。

• One-Phase Commit(一阶段提交):在此方法中,仅非 XA资源参与全局事务,且事务使用一阶段提交协议来完成。如果有多个资源尝试参与全局事务,将引发异常。

通过配置JDBC数据源以启用“记录最后一个资源”(LLR)事务优化,不仅实现允许非XA资源参与全局事务,还能得到与XA同样的ACID保证,优化应用性能。具体来说,LLR在如下方面提供性能优化:

北京联动北方科技有限公司免除了使用 XA JDBC 驱动程序连接数据库的需要。与非XA JDBC 驱动程序相比,XA JDBC驱动程序通常较为低效。

北京联动北方科技有限公司减少完成事务的处理步骤数,这还可以减少网络流量和I/O

北京联动北方科技有限公司免除了在数据库级别处理XA的需要(如果数据库是一个非XA资源)

注:2PC事务的提交记录会插入资源自身的表中,且此结果决定了全局事务准备阶段是成功还是失败。

另外,每一个服务器都具有一个事务日志,其中存储着由服务器协调的、可能尚未完成的已提交事务的相关信息。

北京联动北方科技有限公司WLS从系统崩溃或网络故障中恢复时使用事务日志。

北京联动北方科技有限公司因为事务日志记录为二进制格式,所以不能直接查看。

北京联动北方科技有限公司如果迁移到新的计算机,则必须迁移事务日志文件。




赞(0)    操作        顶端 
lanqie
注册用户
等级:下士
经验:186
发帖:0
精华:0
注册:2015-7-16
状态:离线
发送短消息息给lanqie 加好友    发送短消息息给lanqie 发消息
发表于: IP:您无权察看 2015-7-31 19:38:13 | [全部帖] [楼主帖] 2  楼

北京联动北方科技有限公司



赞(0)    操作        顶端 
Fafer
注册用户
等级:上等兵
经验:121
发帖:0
精华:0
注册:2015-7-13
状态:离线
发送短消息息给Fafer 加好友    发送短消息息给Fafer 发消息
发表于: IP:您无权察看 2015-8-4 21:57:22 | [全部帖] [楼主帖] 3  楼

北京联动北方科技有限公司



赞(0)    操作        顶端 
arcona
注册用户
等级:少校
经验:1100
发帖:10
精华:0
注册:2015-6-1
状态:离线
发送短消息息给arcona 加好友    发送短消息息给arcona 发消息
发表于: IP:您无权察看 2016-3-25 8:03:15 | [全部帖] [楼主帖] 4  楼

学习了,楼主好腻害~



赞(0)    操作        顶端 
beefly
注册用户
等级:上尉
经验:758
发帖:1
精华:0
注册:2015-7-27
状态:离线
发送短消息息给beefly 加好友    发送短消息息给beefly 发消息
发表于: IP:您无权察看 2016-3-25 19:56:40 | [全部帖] [楼主帖] 5  楼



赞(0)    操作        顶端 
filogra
注册用户
等级:少校
经验:1408
发帖:13
精华:0
注册:2015-6-2
状态:离线
发送短消息息给filogra 加好友    发送短消息息给filogra 发消息
发表于: IP:您无权察看 2016-5-27 8:05:44 | [全部帖] [楼主帖] 6  楼

学习了~



赞(0)    操作        顶端 
duff
注册用户
等级:少校
经验:968
发帖:0
精华:0
注册:2015-7-22
状态:离线
发送短消息息给duff 加好友    发送短消息息给duff 发消息
发表于: IP:您无权察看 2016-5-31 7:46:40 | [全部帖] [楼主帖] 7  楼



赞(0)    操作        顶端 
koei123
注册用户
等级:大校
经验:4196
发帖:16
精华:0
注册:2011-7-21
状态:离线
发送短消息息给koei123 加好友    发送短消息息给koei123 发消息
发表于: IP:您无权察看 2018-12-22 5:40:29 | [全部帖] [楼主帖] 8  楼


比较精炼~~



赞(0)    操作        顶端 
koei123
注册用户
等级:大校
经验:4196
发帖:16
精华:0
注册:2011-7-21
状态:离线
发送短消息息给koei123 加好友    发送短消息息给koei123 发消息
发表于: IP:您无权察看 2019-6-19 16:39:45 | [全部帖] [楼主帖] 9  楼

一阶段普通的,和两阶段的JTA,都有~



赞(0)    操作        顶端 
总帖数
9
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论