java - 聊天服务和持久性

标签 java concurrency playframework-2.0 webserver akka

我打算编写一个简单的一对一聊天服务。我选择使用 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/

相关文章:

swift - 为什么 XMPPFramework 会阻塞?

java - 在 Play Framework 2.0 中将服务器上的文本文件读取为字符串的最简单方法是什么

java - 如何 "try start"一个线程从几个其他线程,java

java - 从应用程序启动不同的启动器 Activity

java - jython 独立 jar 减少了软件包列表?

heroku - 尝试将 Play framework 2.1.1 应用程序部署到 Heroku 时出错

playframework-2.0 - 尝试在 Globals.InitialData 之后添加模型时出现 PersistenceException

java - 客户端断开后进程是否仍然继续

java - 如何确保 Java 中的内存可见性?

java - 测试驱动开发。断言类的内部结构是否正确?