首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多节点中的Akka会话参与者

多节点中的Akka会话参与者
EN

Stack Overflow用户
提问于 2014-12-09 04:56:00
回答 1查看 871关注 0票数 0

在这一刻,我只在一个节点上运行了这个参与者会话管理实现:

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-remoteakka-clusterakka-cluster-shardingakka-cluster-singletonakka-distributed-publish-subscribe-cluster,但我不确定哪一种方法是合适的,也是最简单的。(注意,SessionActors是无状态的,我需要在集群中的任何地方找到它们。)

EN

回答 1

Stack Overflow用户

发布于 2014-12-09 07:51:47

因为您有一个协议,可以验证会话是否已经存在,并且有时间在会话上运行,所以从技术上讲,这不是完全无状态的。例如,您可能不希望丢失现有的会话并再次任意地将它们拆分,而且您可能不希望在每个id中创建多个会话。

因此,我将研究聚类切分机制,可能与akka持久化相结合来持久化会话的过期状态。

这将为您提供一个容错设置,并在节点下降或新节点出现时进行再平衡。

例如,激活模板akka簇切分scala可能有助于编写代码。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27371688

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档