【发布时间】:2014-12-09 04:56:00
【问题描述】:
此刻,我只在一个节点上运行了这个actor会话管理实现:
1) 我有一个处理所有会话的 SessionManager 演员
2) SessionManagerActor 收到两条消息:CreateSesion(id) 和 ValidateSesion(id)
3) 当SessionManagerActor 收到CreateSesion(id) 消息时,它会使用actorFor 方法创建一个SessionActor,如下所示:
context.actorOf(Props(new SesionActor(expirationTime)), id)
4) 当SessionManagerActor 收到ValidateSesion(id) 消息时,它会查找现有的SessionActor 并使用resolveOne 方法评估是否存在,如下所示:
context.actorSelection("akka://system/user/sessionManager/" + id).resolveOne()
这种逻辑效果很好,但我需要在多个节点(集群)中实现相同的行为
我的问题是,建议使用哪种方法来实现该会话管理行为,以便它在一个或多个节点中工作?
我已阅读 akka 文档,它提供了 akka-remote、akka-cluster、akka-cluster-sharding、akka-cluster-singleton、akka-distributed-publish-subscribe-cluster 但我不确定哪一个是合适且最简单的方法. (请注意,SessionActor 是无状态的,我需要将它们定位在集群中的任何位置。)
【问题讨论】:
标签: akka session-management akka-cluster