我已阅读关于Akka容错和监管的文档,我认为我完全理解了它们,但有一个例外(无意冒犯)。
为什么你需要停止一个子Actor??
文档中唯一的提示是:
更接近Erlang的方式是,当子Actor失败时,只需停止子Actor,然后在监管者中采取纠正措施...
但对我来说,停止一个子Actor就像是说“不再执行这段代码”,这对我来说实际上等同于部署新更改以完全删除该Actor的代码:
- 每个Actor在Actor系统中扮演着至关重要的角色 - 简单地停止Actor意味着该Actor目前不再担任任何角色,并且假设系统现在可以以某种方式(神奇地)在没有该Actor的情况下工作 - 因此,对我来说,这与重构代码以不再具有Actor,然后部署这些更改没有任何区别。
我相信我只是没有看到这个问题的全貌,但我就是找不到任何使用案例,其中我会有一个大而复杂的演员系统,每个演员都做重要的工作,然后将其移交给下一个关键演员,但是我停止一个演员,整个系统就会神奇地继续完美地工作。
简而言之:对我来说,停止演员就像从运动车辆中拆卸传动装置。这怎么可能是好的/可取的事情?!?
为什么你需要停止一个子Actor??
文档中唯一的提示是:
更接近Erlang的方式是,当子Actor失败时,只需停止子Actor,然后在监管者中采取纠正措施...
但对我来说,停止一个子Actor就像是说“不再执行这段代码”,这对我来说实际上等同于部署新更改以完全删除该Actor的代码:
- 每个Actor在Actor系统中扮演着至关重要的角色 - 简单地停止Actor意味着该Actor目前不再担任任何角色,并且假设系统现在可以以某种方式(神奇地)在没有该Actor的情况下工作 - 因此,对我来说,这与重构代码以不再具有Actor,然后部署这些更改没有任何区别。
我相信我只是没有看到这个问题的全貌,但我就是找不到任何使用案例,其中我会有一个大而复杂的演员系统,每个演员都做重要的工作,然后将其移交给下一个关键演员,但是我停止一个演员,整个系统就会神奇地继续完美地工作。
简而言之:对我来说,停止演员就像从运动车辆中拆卸传动装置。这怎么可能是好的/可取的事情?!?