2012-03-03 48 views
0

我正在尋找某種準備好的系統,解決方案或建議如何在後端編寫自己的系統。正在尋找NodeJS + Redis(或其他NoSQL)的事務管理器

要求:

  1. 有簡單的 「原子操作」。每個原子操作都有一個ID。
  2. 每個原子操作都有一個回調函數,它被觸發指示成功或不成功。但是,如果出現問題,一些回調永遠不能被解僱。
  3. 異步觸發回調(很明顯)。

  4. 有「行動」。每個動作由幾個原子操作組成。

  5. 每個操作都有超時。如果超時未完成,則必須回滾。
  6. 如果我們從它所組成的所有原子操作接收到成功的回調,則操作完成。否則應該回滾。
  7. 每個「行動」都有一個很好的對應的「回滾行動」。
  8. 如果回滾失敗))哦,我們不要把事情搞得太複雜)))

  9. 在最後:我們應該解僱回調指示作用

  10. 高負荷
  11. 的成功或insuccess

我希望你的經驗能幫助我!

回答

1

這是一個有點棘手弄清楚究竟你正在試圖做的,但優先級隊列會像它會解決大部分的問題。像萊納斯所建議的那樣,其中有幾個。我一直在探索Kue個人(並沒有實際使用它尚未但它看起來不錯),這是Redis的支持,由Learnboost傢伙(快遞,SocketIO等)編寫。

Kue還支持可選的重試和失敗嘗試。

至於回滾支持,原子操作可能是一個你必須手工編寫的作業。例如,你會得到一些原子的保證,如果你在多EXEC塊(見Transactions)和"Locking with SETNX" section on SETNX)寫你的Redis-接口工作。

0

有幾個resque類似於node.js的排隊模塊,請嘗試npm search redis queue。我不能說他們是否有任何回滾支持。