現時点では、このアクター セッション管理の実装を 1 つのノードだけで実行しています。
1)SessionManager
すべてのセッションを処理するアクターがいます
2) は次のSessionManagerActor
2 つのメッセージを受信CreateSesion(id)
します。ValidateSesion(id)
3)メッセージSessionManagerActor
を受信すると、次のようなusingメソッドを作成します。CreateSesion(id)
SessionActor
actorFor
context.actorOf(Props(new SesionActor(expirationTime)), id)
4)メッセージSessionManagerActor
を受信すると、既存のものを探し、次のようなメソッドを使用して存在するかどうかを評価します。ValidateSesion(id)
SessionActor
resolveOne
context.actorSelection("akka://system/user/sessionManager/" + id).resolveOne()
そのロジックはうまく機能しますが、複数のノード(クラスター)で同じ動作を実装する必要があります
私の質問は、1 つまたは複数のノードで動作するようにセッション管理動作を実装するために推奨される方法はどれですか?
akka のドキュメントを読んだところakka-remote
、akka-cluster
、akka-cluster-sharding
、akka-cluster-singleton
、akka-distributed-publish-subscribe-cluster
が提供されていますが、どれが適切で最も簡単な方法なのかわかりません。(SessionActors はステートレスであり、クラスター内の任意の場所に配置する必要があることに注意してください。)