【发布时间】:2018-08-15 19:25:44
【问题描述】:
假设我有一个有 n 个从属的主控,其中从属位于其他计算机上。
男主角长得像
class MasterActor extends Actor {
val router: ActorRef = // ... initialized router to contact the slaves
override def receive: Receive = {
case work: DoWork => router ! work
}
}
虽然我的奴隶看起来像
class SlaveActor extends Actor {
override def receive: Receive = {
case work: DoWork => // Some logic that takes a couple of seconds
}
}
如果托管一些从属服务器的机器崩溃,或者应用程序在处理一些work 时已停止,我希望有一种后备机制使系统(我想是主服务器)能够意识到这一点失败,然后将 lost work 重新分配给其他从站。
我已经理解了 Akka 中的监督原理,当子 actor 无法访问时,master 可以得到通知,但是我怎样才能取回 actor 必须重新分配的 work 的具体实例呢?
由于我最近开始使用 Akka,我的方法可能不适合最佳实践,我应该以其他方式解决这种情况吗?
谢谢!
【问题讨论】:
标签: scala akka akka-cluster