2011-06-28 18 views
2

我試圖實現一個撲克服務器。 http服務器將數據包轉發到處理所有撲克牌手狀態的後端服務器。在任何給定的手中,玩家行動需要10秒的時間來行動(下注,棄牌,打電話,加註等)。如果在10秒內沒有響應,服務器會自動摺疊。檢查10秒鐘是否通過了必須接收操作的事件列表。這是一個按時間順序排列的優先級隊列,當前正在播放的每一手牌在優先隊列中都有一個條目。在實時分佈式系統中處理延遲

考慮以下情況,自上一個操作在下一個操作到達http服務器之前經過了9.99秒。當動作轉發到後端服務器時,額外的時間過去了,現在總共過了10.1秒。後端服務器將宣佈手摺疊,但我希望處理該動作,因爲它在技術上在9.99秒後到達http服務器。現在有一種解決方案是讓後端等待一段額外的時間,然後宣佈摺疊手來查看是否有時間戳爲9.99秒。但是,當手中的下一個人開始行動時,這會導致延遲。

我想目標是

  1. 手柄操作9.99秒內達到http服務器,而不是摺疊他們的手。
  2. 減少熱映從延遲不必做空閒等待「解決」子彈點1

有什麼不同的解決方案中提到的問題產生?對於分佈式系統的專家來說,有關於各種解決方案的權衡的文獻。我想知道分佈式系統文獻認爲可接受的各種解決方案。不只是各種ad hoc解決方案。

回答

0

也許在服務器端的客戶端請求到達時,你可以採取時間戳? 所以你會採取「開始」和「停止」時間戳,準確地測量9.9s?