【问题标题】:Akka 2.1.0-RC cluster router terminating because of no found routees issueAkka 2.1.0-RC 集群路由器因找不到路由问题而终止
【发布时间】:2012-11-03 05:17:08
【问题描述】:

我正在编写一个 java/scala akka 概念证明,目前我正在摸索集群环境中的 actor 概念。

规格

我有一个特定的情况,系统将相同的消息发送到多个节点。我的工作是不丢弃任何这些消息,只将 1 条消息传递给后端系统。就像具有负载平衡/故障转移功能的独特过滤器。

想法

我正在考虑在 2 个节点上使用 2 个“前端”actor,系统会将消息发送到前端路由器(可以说是循环),该路由器将消息发送到发送到后端的前端actor。

另一种后备解决方案是使用 only-leader-send-to-backend 系统,在该系统中,他们都收到相同的消息,并且只有领导者将其转发。

问题

我面临的问题(见代码)是我希望路由器使用现有的前端参与者作为集群上的路由。这在示例代码中失败了,因为路由器仅在本地通过 routees-path(配置设置)查找路由,找不到任何路由并死掉。

路由器在集群节点上部署路由的配置也没有成功。它总是会在本地部署它们。

我在这里有示例代码http://ge.tt/2UHUqoQ/v/0?c。有2个入口点 * TransformationSample.App2 - 使用命令行参数 2551 和 2552 运行两个实例(种子节点) * TransformationSample.App1 - 运行一个没有命令行参数的实例

App1 尝试创建路由器并与之通信,但路由器终止,因为它无法在本地找到前端路由器。我将问题固定到 akka.cluster.routing.ClusterRouteeProvider 类 createRoutees 方法行 178 https://github.com/akka/akka/blob/releasing-2.1.0-RC1/akka-cluster/src/main/scala/akka/cluster/routing/ClusterRouterConfig.scala

结束

我可能在这里做错了,请原谅我的 scala(这是我编写它的第一个项目)。

我希望这个路由器能够工作的原因是,概念验证的下一步是使用类似的设置对后端系统进行负载平衡,其中前端参与者将与(单独的)后端集群进行通信将工作循环发送到后端参与者的路由器。

这是过度设计的吗?我们必须对前端进行故障转移,在后端进行负载平衡。

【问题讨论】:

    标签: java scala cluster-computing akka akka-cluster


    【解决方案1】:

    首先,您使用的是哪种演员? Scala 和 Akka 演员彼此不同。 如果您使用的是 akka actor,请尝试使用 Remote Actor System,它非常好,尤其是在您安装了 DB 的情况下。

    【讨论】:

    • 我不知道为什么我从来没有收到你回答这个问题的通知,我有点忘记了这个问题。与此同时,我们切换到另一种架构,这个问题变得无关紧要。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-22
    • 1970-01-01
    • 1970-01-01
    • 2017-09-25
    • 1970-01-01
    • 1970-01-01
    • 2016-11-09
    相关资源
    最近更新 更多