0

もう少し状況を説明するために、タスクに次のステート マシンがあるステートフル アプリケーションを用意しました。

  • 州にはサービスが提供され、サービスが提供されていません
  • 開始状態は未処理です。
  • 遷移表は次のとおりです。
    • 未処理の状態で、ユーザー要求を表す HTTP 要求: 処理済みに遷移し、応答を発行します。
    • 処理済み状態では、ユーザー応答を表す HTTP 要求で: 非処理状態に遷移し、応答を送信します。
    • サービス提供状態で、10 分間のタイムアウト時: 非サービス提供状態に移行し、何もしません。

したがって、問題は次のとおりです。このステートマシンを確実に実装するにはどうすればよいですか? タイムアウト遷移がなければ、これは状態を含むキー値ストアとして簡単に実装でき、要求ハンドラーは応答のためにストア内の状態をチェックします。

ただし、タイムアウト遷移は、タイムアウト操作を処理するために何らかのキューが必要であることを意味します。現在の私の設計は次のとおりです。1 つのキューには、サービス スレッドによってキューから取り出されたサービスされていないタスクが含まれ、別のキューには、期限切れに設定された時期に基づいて別のハンドラーによって循環されるサービスされたタスクが含まれます。

したがって、私の質問は次のとおりです。キューイング理論の問題以外に、この設計でうまくいかない可能性のある恐ろしいことはありますか? 2 つのキューよりも、このステート マシンを実装するためのより良い方法はありますか?

4

1 に答える 1

1

あなたはすでに提供されている/提供されていない状態を保存しているので、実際にはそれとともに遷移のタイムスタンプを保持します. 次に、複雑な(壊れやすい)機械をすべて使用せずに、完全な状態を推測するだけです。

于 2013-03-20T17:49:28.710 に答える