在 Akka 中停止 actors 的目的是什么?
What is the purpose of stopping actors in Akka?
我读过 Akka docs on fault tolerance & supervision,我 认为 我完全理解它们,有一个很大的例外(没有双关语意)。
你为什么要want/need停止一个child演员???
文档中唯一的线索是:
Closer to the Erlang way is the strategy to just stop children when they fail and then take corrective action in the supervisor...
但对我来说,停止 child 等同于说“不再执行此代码 ",对我来说,这实际上与将新更改部署到已完全删除该参与者的代码相同:
- 每个Actor在actor系统中都扮演着重要的角色
- 简单地停止 actor 意味着 actor 当前不再有任何作用,并且假定系统现在可以以某种方式(神奇地)在没有它的情况下工作
- 所以,对我来说,这与重构代码甚至没有演员,然后部署这些更改没有什么不同
我确定我只是没有在这个上看到森林中的树木,但我只是没有看到任何用例,我会拥有这个大型复杂的演员系统,每个演员都在其中发挥关键作用工作,然后将其交给下一个关键演员,但随后我停止了一个演员,神奇的是整个系统继续完美地工作。
简而言之:阻止演员(对我来说)就像从行驶中的车辆上拆下变速器。这怎么会是good/desirable的事情?!?
如果儿童演员正在执行可以安全终止的较长过程,例如视频编码或某种文件转换,并且您必须部署新版本,在这种情况下,终止标志将很有用停止 运行 正常处理。
"error kernel" 模式的本质是委托有风险的操作并保护基本状态,通常为 one-off 操作生成 child-actors,当该操作完成并它的结果发送到其他地方,child-actor 或 parent-actor 需要停止它。 (否则 child-actor 将保持 active/leak)
Every Actor plays some critical role in the actor system
这就是你 运行 遇到麻烦的地方,我可以创建一个子演员来完成一项工作,例如对数据库执行查询或维护连接用户的状态,这是唯一的目的。
一旦数据库查询完成或用户优雅地断开连接,子 actor 不再扮演任何角色,应该停止,以便释放它持有的所有资源。
To simply stop the actor means that actor currently doesn't have a role any >longer, and presumes the system can now somehow (magically) work without it
系统能够继续,因为我可以创建新的儿童演员 if/when 他们是需要的。
我读过 Akka docs on fault tolerance & supervision,我 认为 我完全理解它们,有一个很大的例外(没有双关语意)。
你为什么要want/need停止一个child演员???
文档中唯一的线索是:
Closer to the Erlang way is the strategy to just stop children when they fail and then take corrective action in the supervisor...
但对我来说,停止 child 等同于说“不再执行此代码 ",对我来说,这实际上与将新更改部署到已完全删除该参与者的代码相同:
- 每个Actor在actor系统中都扮演着重要的角色
- 简单地停止 actor 意味着 actor 当前不再有任何作用,并且假定系统现在可以以某种方式(神奇地)在没有它的情况下工作
- 所以,对我来说,这与重构代码甚至没有演员,然后部署这些更改没有什么不同
我确定我只是没有在这个上看到森林中的树木,但我只是没有看到任何用例,我会拥有这个大型复杂的演员系统,每个演员都在其中发挥关键作用工作,然后将其交给下一个关键演员,但随后我停止了一个演员,神奇的是整个系统继续完美地工作。
简而言之:阻止演员(对我来说)就像从行驶中的车辆上拆下变速器。这怎么会是good/desirable的事情?!?
如果儿童演员正在执行可以安全终止的较长过程,例如视频编码或某种文件转换,并且您必须部署新版本,在这种情况下,终止标志将很有用停止 运行 正常处理。
"error kernel" 模式的本质是委托有风险的操作并保护基本状态,通常为 one-off 操作生成 child-actors,当该操作完成并它的结果发送到其他地方,child-actor 或 parent-actor 需要停止它。 (否则 child-actor 将保持 active/leak)
Every Actor plays some critical role in the actor system
这就是你 运行 遇到麻烦的地方,我可以创建一个子演员来完成一项工作,例如对数据库执行查询或维护连接用户的状态,这是唯一的目的。
一旦数据库查询完成或用户优雅地断开连接,子 actor 不再扮演任何角色,应该停止,以便释放它持有的所有资源。
To simply stop the actor means that actor currently doesn't have a role any >longer, and presumes the system can now somehow (magically) work without it
系统能够继续,因为我可以创建新的儿童演员 if/when 他们是需要的。