2012-03-03 10 views
0

私はの準備システムを探しています、自分自身でバックエンドでシステムをコーディングする方法を教えてください。NodeJS + Redis(または他のNoSQL)でトランザクションマネージャを探す

要件:

  1. は、単純な "アトミックオペレーション" があります。各アトミック操作にはIDがあります。
  2. 各アトミック操作には、成功または不成功を示すコールバック関数があります。しかし、何らかの問題が生じた場合、コールバックは一度も起動することはできません。
  3. コールバックは非同期で発生します(明らかです)。

  4. 「アクション」があります。各アクションは、いくつかのアトミックな操作で構成されます。

  5. 各アクションにはタイムアウトがあります。タイムアウトで完了していない場合は、ロールバックする必要があります。
  6. アクションは、それが構成するすべてのアトミック操作から正常にコールバックを受信すると完了です。それ以外の場合はロールバックする必要があります。
  7. 各「アクション」には、対応する「ロールバックアクション」が記述されています。
  8. ロールバックが失敗した場合))OH))のは、それはあまりにも複雑なものを作るわけにはいきませんが)最後に

  9. :?我々は

  10. の高負荷
  11. アクションの成功またはinsuccessを示すコールバックを発射する必要があります

あなたの経験が私を助けてくれることを願っています!

答えて

1

正確に何をしようとしているのか把握するのは少し面倒ですが、プライオリティキューはほとんどの問題を解決するように思えます。 Linusが示唆したように、それらのいくつかがあります。私はKueを個人的に(実際にはまだ使用していませんが素敵に見えて)探しています。これはRedisがサポートしており、Learnboostの人(Express、SocketIOなど)によって書かれています。

Kueはオプションの再試行と失敗の試行もサポートしています。

ロールバックのサポートに関して、アトミック操作は、あなたのジョブで手作業でコード化しなければならないものかもしれません。たとえば、複数のexecブロック(Transactionsを参照)と"Locking with SETNX" section on SETNXを参照して、Redisインターフェイスのジョブを記述した場合、いくつかのアトミック保証が得られます。

0

node.jsにはresqueのようなキューイングモジュールがいくつかありますが、npm search redis queueを試してみてください。彼らのいずれかがロールバックをサポートしているかどうかは言えません。

関連する問題