码迷,mamicode.com
首页 > 其他好文 > 详细

好记性不如烂笔头28-面向业务流的事务控制(6)

时间:2015-02-04 18:46:13      阅读:134      评论:0      收藏:0      [点我收藏+]

标签:事务   电子商务   


面向业务流的事务控制,也不知道这个名称是否科学,根据自己在工作中遇到的实际情况定义的一个名字。

面向业务流的事务控制,主要是针对一些相对复杂的业务场景,有很多的制约条件下的事务控制。

用一个案例来描述我的想法:

例如:设想网上购物的一次交易,其付款过程至少包括以下几种操作:

一、更新客户所购商品的库存信息(可能是从本地数据库获取,也可能通过接口从别处获取)

二、客户付款(可能要和银行的支付接口交互)

三、生成订单(可能要和供货商接口交互)

四、更新用户相关信息(可能是数据库,也可能是文件系统)

正常的情况下,这些操作将顺利进行,最终交易成功,与交易相关的所有信息也成功地更新。整个事务的全过程也不可能回滚,比如在第四步发生了异常,前面几步几乎是不可能回滚,比如第二步客户付款,能直接让银行把钱直接给退回来吗?不是在这一个事务中,能够马上实现的。

因此,我们没法直接用数据库事务来确保整个业务的执行,但是数据库的很多思想我们可以借鉴和考虑。

方法还是日志。

我们准备进行一次交易的时候,首先把用户购物车信息进入日志记录。

所有的状态,都用日志进行记录,而不是简单的考虑回滚。

在整个业务流程中,单个环节的原子性必须要有。从宏观上来看,将整体流程作为一个事务,用日志作为全过程的记录。当某一个环节出现异常后,上一个环节的情况还是能够保持。

核心重点在与,下一个环节出现故障后,上一个环节的情况必须要保持,并且还能够支持下一个步骤的继续开展。

 

好记性不如烂笔头28-面向业务流的事务控制(6)

标签:事务   电子商务   

原文地址:http://blog.csdn.net/ffm83/article/details/43488469

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!