2012-03-03 6 views
0

준비 시스템, 솔루션 또는 백엔드 시스템을 직접 작성하는 방법을 찾고 있습니다.NodeJS + Redis (또는 다른 NoSQL)에서 트랜잭션 관리자 찾기

요구 사항 :

  1. 는 간단한 "원자 작업"이 있습니다. 각 원자 연산에는 ID가 있습니다.
  2. 각 원자 작업에는 성공 또는 실패를 나타내는 콜백 함수가 있습니다. 그러나 어떤 콜백이 잘못되면 어떤 콜백도 결코 해고 될 수 없다.
  3. 콜백은 비동기 적으로 발생합니다 (분명합니다).

  4. "작업"이 있습니다. 각 동작은 여러 개의 원자 연산으로 구성됩니다.

  5. 각 작업에는 시간 초과가 있습니다. 타임 아웃에서 완료되지 않은 경우 롤백해야합니다.
  6. 구성된 모든 원자 작업에서 성공적인 콜백을 받으면 작업이 완료됩니다. 그렇지 않으면 롤백해야합니다.
  7. 각 "동작"에는 해당하는 "롤백 동작"이 잘 기록되어 있습니다.
  8. 롤백이 실패 할 경우)) 오의는

    마침내
  9. )))이 너무 복잡 일하지하자 : 우리는 행동

  10. 높은 부하
  11. 의 성공 또는 insuccess를 나타내는 콜백을 발사한다을

경험이 도움이되기를 바랍니다.

답변

1

정확히 무엇을 하려는지 알아내는 것은 약간 까다 롭지 만 우선 순위 대기열은 대부분의 문제를 해결하는 것처럼 보일 것입니다. 리누스 (Linus)가 제안했듯이, 몇 가지가 있습니다. 나는을 개인적으로 탐험 해왔다. (실제로 사용하지는 않았지만 멋지게 보인다.) 레디 스가 뒷받침되었는데, Learnboost 녀석 (Express, SocketIO 등)이 썼다.

Kue는 선택적 재시도 및 실패 시도도 지원합니다.

롤백 지원에 관한 한, 원자 적 조작은 작업에서 직접 코드를 작성해야 할 수도 있습니다. 예를 들어, 다중 실행 블록 (Transactions 참조) 및 "Locking with SETNX" section on SETNX에서 Redis 인터페이싱 작업을 작성한 경우 원자 적 보증이 제공됩니다.

0

node.js에 대해 resque과 같은 대기열 모듈이 몇 개 있습니다. 시도하려면 npm search redis queue을 시도하십시오. 그들 중 누구라도 롤백 지원을한다고해도 나는 말할 수 없다.

관련 문제