事务策略: 高并发策略-学习如何为支持高用户并发性的应用程序实现事务策略 - 编程入门网
BEAN) 注释。注意,这 个注释是类级的(而不是方法级的),这表示您不能在相同的类中结合 Declarative 和 Programmatic 事务模型。选择并坚持其中之一。
低级技巧 假设您希望坚持使用 Declarative Transaction 模型来简化事务处理,但是仍然能在高用户并发性场 景中增加吞吐量。同时,您应该在这种事务策略中使用低级技巧。通过此技巧,您通常会遇到与先读取技 巧相同的折衷问题:读取操作通常是在事务作用域的外部完成的。并且,实现这种技巧最有可能需要代码 重构。 我仍然从 清单 1 中的示例入手。不用在相同的方法中使用编程事务,而是将更新操作移动到调用栈 的另一个公共方法中。然后,完成读取操作和处理时,您可以调用更新方法;它会开始一个事务,调用更 新方法并返回。清单 3 演示了这个技巧: 清单 3. 使用 High Concurrency 策略(低级技巧) @TransactionAttribute (TransactionAttributeType.SUPPORTS)public void processTrade(TradeData trade) throws Exception { try { //first validate the trade TraderData trader = service.getTrader(trade.getTraderID()); validateTraderEntitlements(trade, trader); verifyTraderLimits(trade, trader); performPreTradeCompliance (trade, trader); //now adjust the account AcctData acct = service.getAcct (trade.getAcctId()); verifyFundsAvailability(acct, trade); adjustBalance (acct, trade); performPostTradeCompliance(trade, trader); //Now perform the updates processTradeUpdates(trade, acct); } catch (Exception up) { throw up; }}@TransactionAttribute(TransactionAttributeType.REQUIRED) public void processTradeUpdates(TradeData trade, AcctData acct) throws Exception { try { service.insertTrade(trade); service.updateAcct(trade); } catch (Exception up) { ctx.setRollbackOnly(); throw up; }} 事务策略: 高并发策略-学习如何为支持高用户并发性的应用程序实现事务策略(6)时间:2011-10-21 IBM Mark Richards通过此技巧,您可以有效地在调用栈的较低层次开始事务,从而减少花费在数据库中的时间。注意, processTradeUpdates() 方法仅更新在父方法(或以上)中修改中创建的实体。再次,保持事务的时间不 再是 6 秒,您只需要 300 ms。 现在是最难的部分。与 API 层策略或 Client Orchestration 策略不同,High Concurrency 策略并 未使用一致的实现方法。这便是 图 1 看上去为何像一名经验丰富的曲棍球员(包括缺少的牙齿)的原因 。对于一些 API 调用,事务可能会在 API 层的末端开始,而其他时候,它可能仅限于 DAO 层(特别是 对于LUW 中的单表更新)。技巧是确定在多个客户机请求之间共享的方法,并确保如果某个事务是在较高 级的方法中开始的,则它将在较低级的方法中使用。遗憾的是,此特性的效果是,作为非事务拥有者的较 低级方法可以对异常执行回滚。结果,开始事务的父方法不能对异常采取正确的措施,并且在尝试回滚( 或提交)已经标记为回滚的事务时会出现异常。 实现指南 有些情况仅需要稍微小些的事务作用域来满足吞吐量和并发性需求,而另一些情况需要大大缩小事务 作用域来实现所需的目的。不管具体情况如何,您都可以遵循以下的实现指导,它们能够帮助您设计和实 现High Concurrency 策略: 在着手使用低级别技术之前,首先要从先读技术开始。这样,事务至少包含在应用程序架构的 API 层 ,并且不扩散到其他层中。 当使用声明性事务时,经常使用 REQUIRED 事务 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |