saga转账的lock

14-09-13 brighthas
    

saga中lock money字段时,目的是怕别人更改,这个可以不通过“语言本身或框架本身”实现,而是通过普通的方法达到。伪代码如下:

// saga 转账方法
function transfer(fromId, toId, money) {

           // 略一些东东

            var fromUser = this.mix(u1, fromRole); // dci 方式得到 from角色
            var toUser = this.mix(u2, toRole); // to 角色

            fromUser.deduct(money);  
            toUser.recharge(money);

}
<p>

这里的 deduct/recharge 角色方法调用时,会先 lock money字段,操作后放开,这里的放开是操作成功和失败都会unlock。

请各位予以批评指正,嘎嘎。

    

banq
2014-09-13 13:39

关键是如何保证transfer这个方法的原子性