如何处理主参与者失败

nzrxty8p  于 2021-06-04  发布在  Hadoop
关注(0)|答案(2)|浏览(300)

我是akka的新手,我建立了一个akka模型,它连接到hdfs,提取数据,处理数据,并将处理后的数据写回hdfs。现在,如果我的主参与者崩溃,那么相应的子参与者(工作者)将崩溃,整个系统必须重新启动。
因此,如果有一个过程来创建一个辅助主机,它会在主主机发生故障时以最短的恢复时间自动启动。我无法清楚地描述这一点。
任何帮助都将不胜感激。
谢谢

dy2hfwbg

dy2hfwbg1#

或者你可以有一个主管,一个/user-guardian的子级,它可以在你的情况下重新启动它的子级-你所指的主级。如果有什么可以导致一个演员得到一个例外,它应该由一个孩子演员。子角色可以在其他操作中重新启动

acruukt9

acruukt92#

从文档中:
/用户:卫报演员
与之交互最多的参与者可能是所有用户创建的参与者的父级,即名为“/user”的守护者。使用system.actorof()创建的参与者是此参与者的子级。这意味着当这个守护者终止时,系统中所有正常的参与者也将被关闭。这也意味着这个守护者的监督策略决定了如何监督顶级的正常参与者。因为akka 2.1,所以可以使用设置akka.actor.guardian-supervisor-strategy来配置它,它采用supervisorstrategyconfigurator的完全限定类名。当守护者升级失败时,根守护者的React将是终止守护者,这实际上将关闭整个演员系统。
您的主控是应用程序中的顶级参与者,因此他是用户guardian的子级,因此他将自动重新启动,因为guardian的监督默认为:

final val defaultDecider: Decider = {
    case _: ActorInitializationException ⇒ Stop
    case _: ActorKilledException         ⇒ Stop
    case _: DeathPactException           ⇒ Stop
    case _: Exception                    ⇒ Restart
  }

相关问题