私は実際のお金の取引について話しているのではありません
私が取り組んでいるプロジェクトは、プレイヤー同士で物を交換するゲームです。これは基本的に取引プロセスであり、プレイヤー A はプレイヤー B に牛 30 頭と引き換えに 10 穀物を与える、ということはおわかりでしょう。
しかし、インタラクティブで一度に多くのプレイヤーがいるので、チャットルームのような環境ですべてランダムに取引することで、そのようなことが可能かどうか疑問に思っていましたが、node.js
問題がありました.
私は、DB の健全な状態を維持するためにトランザクションの処理とその性質が必要なrollback
DBのバックグラウンドを持っています。commit
しかし、私たちがnode.js
プラスmongoDB
(または他のノーSQL DB)について話している場合、それは確かにまったく異なる考え方ですが、頼らずに2つの当事者だけが関与する必要があるという意味で、取引をどのように処理できるかわかりません何らかの形のロックに、しかし確かにそれが目的ではありませんnode
。
私はまだ何も見つけていませんが、node.js
とても新しいので、それは私を驚かせません.
更新私はトランザクションのメカニズム、特に銀行スタイルのトランザクションを認識していますが、これは同じことではありません。明確にしていないかもしれませんが、問題は、プレイヤー B がバイヤーのコミュニティに何かを販売していることです。
つまり、プレーヤー A がクライアント側で購入指示を開始しても、同じ頃にプレーヤー CD または E もクリックして同じ牛を購入する可能性もあります。
通常のトランザクションでは、少なくとも最初にレコード レベルのテーブル ロックを取得した人が、他の当事者がその時点で続行するのを少なくともブロックすることが期待されます。
ただし、ノードの使用の性質、特にその速度、同時処理、およびリアルタイムの更新データベースを表示するための使用は、最も遅い人 (ミリ秒を話している) が勝つことを容易に想像できることを意味します。
たとえば、プレーヤー A はプレーヤー C と同時に購入を開始します。プレーヤー A の取引が完了し、Groats がプレーヤー B に支払われ、データベース上で牛がプレーヤー A に割り当てられます。1 ミリ秒後、Cow はプレイヤー C に割り当てられます。
それが問題をよりよく説明することを願っています。