我们正在Scala + Akka开发一个服务器系统,用于为Android,iPhone和Second Life的客户提供服务.此服务器的某些部分需要高度可用,在多台计算机上运行.如果其中一台服务器死亡(例如硬件故障),系统需要继续运行.我想我希望客户有一个他们将尝试连接的机器列表,类似于Cassandra的工作方式.
到目前为止,与阿卡我见过的多节点例子似乎对身边的可扩展性的理念为中心,而不是高可用性(至少在硬件方面).多节点示例似乎始终存在单点故障.比如有负载均衡,但如果我需要重新启动具有负载均衡的机器之一,我的系统会遭受一些停机时间.
是否有任何示例显示Akka的这种类型的硬件容错?或者,您是否有任何关于实现这一目标的好方法的想法?
到目前为止,我能够提出的最佳答案是研究Erlang OTP文档,冥想它们,并试图找出如何使用Akka中提供的构建块将我的系统放在一起.
但是,如果有关于如何在多台机器之间共享状态的资源,示例或想法,如果其中一台机器停机运行,我肯定会欣赏它们,因为我担心我可能会重新发明这里的轮子.也许有一个多节点STM容器可以自动保持多个节点之间的共享状态同步?或者这可能很容易使文档没有显示如何做到的例子,或者我在研究和实验中还不够彻底.任何想法或想法将不胜感激.
HA和负载管理是可扩展性的一个非常重要的方面,可作为AkkaSource
商业产品的一部分提供.