2011-06-28 7 views
2

私はポーカーサーバーを実装しようとしています。 httpサーバは、すべてのポーカーハンドの状態を処理するバックエンドサーバにデータパケットを転送します。任意の手の中で行動するプレイヤーは、行動するのに10秒間を要する(賭け、折り返し、呼び出す、上げる、など)。 10秒以内に応答がない場合、サーバーは自動的にフォールドします。 10秒が経過したことを確認するには、アクションを受信する必要があるイベントリストが維持されている必要があります。これは、時間順に並べられた優先キューであり、現在再生されている各ポーカーハンドには、優先キューにエントリがあります。リアルタイム分散システムにおける遅延の処理

次のアクションがHTTPサーバーに到着する前に最後のアクションが9.99秒経過してから、次のシナリオを検討してください。アクションがバックエンドサーバーに転送されるまでに余分な時間がかかり、合計10.1秒が経過しました。バックエンドサーバーは手を折りたたんだと宣言していますが、技術的にはHTTPサーバーに9.99秒後に到着したため、処理を処理したいと思います。今、1つの解決策は、バックエンドに何らかの余分な時間を待たせて、手を入れて9.99秒のタイムスタンプが付いたかどうかを確認することです。しかし、それは手の中の次の人が行動するのを遅らせる結果となるでしょう。私は希望

目標は9.99秒でhttpサーバに到達する代わりに、彼らの手を折る

  1. ハンドルアクションです。
  2. 積極的に様々なソリューションは何ですか?箇条書きに記載された問題1.

を「解決」するためにアイドル待機を行うには持っ起因する遅延を最小限に抑えますか分散システムの専門家には、さまざまな解決策とのトレードオフに関する文献が知られています。私は分散システムの文献で受け入れられると思われる様々な解決策を知りたいと思っています。さまざまなアドホックなソリューションだけでなく、

答えて

0

おそらくクライアント側のリクエストが到着したときにサーバー側でタイムスタンプを取ることができますか? 正確に9.9秒を測定するには、「開始」と「停止」のタイムスタンプを使用しますか?

関連する問題