我是Akka的新手。但我已经在网络项目工作了好几年。 以前,我们用户“ngix + tomcat cluster”计划,一旦其中一个tomcat服务器崩溃(物理机崩溃),tomcat集群的其他成员将接管发往故障服务器的请求。我们通过这个实现了高可用性。 在我们的新Web项目中,我们计划使用akka来实现容错和可伸缩性。这是一个服务器作为主操作员,其工作是将请求消息从外部发送给子actor。儿童演员可以在本地或远程分发。一旦任何一个儿童演员失败,主演员就会修复它。 我的问题是,一旦主要演员失败(可能机器崩溃),在这种情况下我应该如何实现高可用性?如果主机所在的机器崩溃,我们必须手动重启机器。在此期间,服务必须暂停一段时间。这对我们来说是不可接受的。 谁能告诉我,我该如何解决这个问题?
答案 0 :(得分:0)
我建议使用外部负载均衡器。例如,您可以将您的Akka集群节点的所有地址报告给Web应用程序的中间层(并在那里缓存它们一段时间),并将来自中间层的负载平衡请求发送到您的Akka后端(例如,选择随机集群节点)每一次)。
如果您的Akka后端为您的孩子演员重新获得某种单点资源获取,您可以尝试使用Cluster Singleton作为主演员。在这种情况下,所有集群节点都应该将客户端请求发送到Cluster Singleton和Cluster Singleton,然后可以以某种特定方式在所有集群节点之间分配任务。