未验证 提交 8d5b36ba 编写于 作者: 梦境迷离's avatar 梦境迷离 提交者: GitHub

Update 2019-10-14-Akka-Actor的监督与监控.md

上级 16ce0d04
......@@ -12,8 +12,12 @@ description: 本章概述了监督背后的概念、提供的原语及其语义
### 监督是什么意思
* 监控(watch)主要用于监视任意Actor的死亡以便作出应对。
* 监督(supervision)用于上级负责当子Actor出现异常后作出正确的的恢复操作
Actor系统监督描述了actor之间的依赖关系:主管将任务委托给下属,因此必须对他们的失败做出反应。
当下属检测到故障(即抛出异常)时,它会挂起自己和它的所有下属,并向其主管发送消息,发出故障信号。根据所监督工作的性质和失败的性质,主管可选择以下四种选择:
当下属检测到故障(即抛出异常)时,它会挂起自己和它的所有下属,并向其主管发送消息,发出故障信号。
根据所监督工作的性质和失败的性质,主管可选择以下四种选择:
* 恢复下属,保持其累积的内部状态
* 重新启动下属,清除其累积的内部状态
......@@ -164,8 +168,18 @@ val supervisor = BackoffSupervisor.props(
上面的代码设置了一个备用监控器,如果抛出MyException,任何其他异常都会升级。如果子程序在10秒内没有抛出任何错误,则自动重置回退。
### 重新启动的顺序
1. 暂停Actor(这意味着它将在恢复之前不会处理正常消息),并递归地暂停所有子级
2. 调用旧实例的preRestart钩子(默认为向所有子Actor发送终止请求并调用postStop)
3. 等待在preRestart期间被请求终止的所有子Actor实际被终止(使用context.stop();这是异步的,最后一个被杀死的孩子的终止通知将影响下一步的执行
4. 通过再次调用最初提供的工厂来创建新的Actor实例
5. 在新实例上调用postRestart(默认情况下也调用preStart)
6. 向所有未在步骤3中杀死的孩子发送重启请求;重新启动的孩子将从第2步开始递归地执行相同的过程
7. 恢复Actor
[文档](https://doc.akka.io/docs/akka/current/general/supervision.html)
* 使用搜狗翻译、百度翻译、谷歌翻译,仅供参考
* 来自官方文档、参考《响应式架构 消息模式Actor实现与Scala、Akka应用集成》
* 后续随着理解深入会继续修改错误和描述,以便更好理解,本博客开源,欢迎指出错误
\ No newline at end of file
* 后续随着理解深入会继续修改错误和描述,以便更好理解,本博客开源,欢迎指出错误
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册