2011-07-18 2 views
0

도박 시장을 처리하기 위해 Sinatra/Ruby에 기본 RESTful API를 작성했습니다. 고정 된 확률의 본질 때문에, 나는 시장에서 현재의 확률을 특정 간격 이상으로 재 계산해야한다. 5 분이라고 말할 수있다. 일반적으로 이런 일을 cron 작업에 넣거나 시계 작업을 실행하여 5 분마다 이벤트를 실행할 수 있습니다. 그러나 문제는 내가 수 백 또는 수천 개의 이러한 시장을 한 번에 돌릴 수 있으며 모든 것을 동기화하지 않기를 바랍니다. 내가 그것을 피할 수 있다면 같은 시계로.Ruby에서 이벤트 재발행

첫 번째 생각은 지정된 간격으로 확률을 다시 생성하기 위해 항목을 지연된 작업 대기열에 넣는 것입니다. 그러나 작업이 제 시간에 실행되도록 보장 할 수 있습니다 (또는 대기열 서버가 다운 될 경우)

이것을 처리하는 가장 우아한 방법은 데이터베이스에 타임 스탬프를 넣고 확률이 일정 시간 이상이면 새로운 내기가 들어 오면 자동으로 확률을 다시 계산하는 것입니다. 이것에 대한 단점은 베팅이 느린 경우, 나는 놓기 전에 확률을 무효화하기 때문에 끊임없이 최신 베팅을 거부 할 것입니다. 안좋다.

의견이 있으십니까? 내가 완전히 문제의 배경을 이해하지만, 어쩌면이 전략이 유용 할 수 있다는 것을 확실하지

+0

고려해야 할 또 다른 것 : 확률 계산시 베팅을 일시 중지 하시겠습니까? – jtbandes

+0

좋은 점은 계산 속도가 빠르지 만 마켓이 중단되는 동안 문제가 발생합니다. 물론 실패한 베팅을 클라이언트에서 처리하는 오류가 발생합니다. – Samuel

답변

1

:

분할 모든 N 시장을 m 덩어리로는 m하여 ID를 나누는 모듈을 사용하여 말한다.

재 계산 기간이 T 인 경우 T/m마다 재 계산을 실행하고 한 번에 하나의 청크 만 다시 계산하십시오.