2016-10-13 7 views
1

RPCが原子的に実行されるかどうか教えてください。アトミックRPC呼び出し

1. client.rpc.provide('xfer', (data, response) => { 
2. var srcWallet = getRecord(data.srcWalletId); 
3. var dstWallet = getRecord(data.dstWalletId); 
4. if (srcWallet.get('balance') >= data.xferAmount) { 
5.  srcWallet.set('balance', srcWallet.get('balance') - xferAmount); 
6.  dstWallet.set('balance', dstWallet.get('balance') + xferAmount); 
7. } 

それはsrcWalletバランスがライン4と5の間で変更できないことは確かである:

は、2つのアカウント間の取引をする例えば、私はそのようなRPCを持っているでしょうか?

答えて

0

明確にするために、deepstreamはds.rpc.make/ds.rpc.provideを使用してRPCの(要求/応答)を行います。この例ではレコードを参照しています。

上記の例は、シングルスレッドのJavaScript実装では一時的に機能しますが、ウォレットの残高を変更するクライアントへの着信トランザクションがないことを確認することはできません。上記のようなルールを適用するには、サーバー上のValveルールを使用します。

_('src-wallet').balance >= data.xferAmount

https://deepstream.io/tutorials/core/permission-conf-simple/ https://deepstream.io/tutorials/core/permission-conf-advanced/ https://deepstream.io/tutorials/core/permissions-dynamic/

+0

でより多くのを見つけてください、私はRPCを残し簡潔にするために上記の提供、私は(RPCページのために尋ねるhttps://deepstream.io/tutorials/core/request-response-rpc /)は、「安全にマルチステップレコードトランザクションを組み合わせる」と答えています。 – Perky

関連する問題