如何在分布式系统中解耦 akka,以实现高可用性



我是阿卡的新手。但是我已经在网络项目中工作了几年。以前,我们用户"ngix+ tomcat集群"计划,一旦其中一个tomcat服务器崩溃(物理机器崩溃),tomcat集群的其他成员将接管发往故障服务器的请求。我们通过这一点实现了高可用性。 在我们的新 Web 项目中,我们计划使用 akka 来实现容错和可扩展性。下面是一个作为主参与者的服务器,其工作是将请求消息从外部分派给子参与者。儿童演员可以分布在本地或远程。一旦任何一个子演员失败,主演员就会修复它。 我的问题是,一旦主角色出现故障(可能是机器崩溃),在这种情况下我应该如何实现高可用性?如果主机所在的机器崩溃,我们必须手动重新启动机器。在此期间,服务必须停止一段时间。这对我们来说是不可接受的。 谁能告诉我,我应该怎么做才能解决这个问题?

我建议使用外部负载均衡器。例如,您可以将 Akka 群集节点的所有地址报告给 Web 应用的中间层(并在那里缓存一段时间),并将来自中间层的请求负载均衡到 Akka 后端(例如,每次都选择随机群集节点)。

如果您的 Akka 后端需要为子演员获取某种单点资源,您可以尝试使用群集单例作为主角色。在这种情况下,所有群集节点都应将客户端请求发送到群集单一实例和群集单一实例,然后可以通过某种特定方式在所有群集节点之间分配任务。

最新更新