我们正在使用 Scala + Akka 开发一个服务器系统,用于为 Android、iPhone 和 Second Life 中的客户端提供服务的游戏。该服务器的某些部分需要高度可用,在多台机器上运行。如果其中一台服务器死机(例如硬件故障),则系统需要继续运行。我想我希望客户有一个他们将尝试连接的机器列表,类似于 Cassandra 的工作方式。
到目前为止,我在 Akka 中看到的多节点示例在我看来似乎集中在可扩展性的概念上,而不是高可用性(至少在硬件方面)。多节点示例似乎总是存在单点故障。例如,有负载均衡器,但如果我需要重新启动其中一台具有负载均衡器的机器,我的系统将遭受一些停机时间。
是否有任何示例显示 Akka 的此类硬件容错?或者,您对实现这一目标的好方法有什么想法吗?
到目前为止,我能想出的最佳答案是研究 Erlang OTP 文档,思考它们,并尝试找出如何使用 Akka 中可用的构建块将我的系统组合在一起。
但是,如果有关于如何在多台机器之间共享状态的资源、示例或想法,如果其中一台机器出现故障,事情会继续运行,我肯定会很感激他们,因为我担心我可能会重新发明轮子在这里。也许有一个多节点 STM 容器可以自动保持共享状态在多个节点之间同步?或者这很容易做到,以至于文档不会费心展示如何做的例子,或者我的研究和实验还不够彻底。任何想法或想法将不胜感激。