我打算编写一个简单的一对一聊天服务。我选择使用 Play!框架(Java 网络框架)。
假设一个聊天服务器正在为两个用户提供服务,突然服务器崩溃了。
这是我需要考虑的事情吗?
预计多久发生一次? (聊天服务器的平均水平)。
还有最重要的问题:
如何处理这种情况?从技术上讲,两个用户都应该无缝转移到云上的另一个节点 + 我想保存两个用户的状态和与聊天 session 相关的其他信息
脚注:
- 我听说过一种叫做 Akka 的工具,但乍一看,它似乎是一种需要深入学习的重型工具。
- 我希望我的问题不属于“广泛问题”。我认为它非常具体和集中。
最佳答案
Akka 有很好的集群支持,你描述的似乎是 Akka Cluster Singleton 的一个很好的用例。 . Akka 将确保聊天服务器的一个实例将始终在您的集群中运行。如果您想保留用户的状态,您还需要使用 Akka Persistence,最好在后端使用分布式日志。
根据我的经验,使用 Akka 非常简单且有趣,但您需要首先解决一定的学习曲线问题。
因为您想使用 Akka 来使用 Play 是有道理的,因为 Play 是在 Akka 上构建的,所以集成将非常无缝,您的项目中已经有了 Akka。
关于java - 聊天服务和持久性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25095487/