saga转账的lock

brighthas 14-09-13
    

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);

}



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

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

    

banq
2014-09-13 13:39

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