1

我的团队正在讨论我们的演员应该有多精细。

例如,我们有一个actor负责将json字符串反序列化为一个对象。支持将其作为参与者的论点是反序列化会导致错误,参与者及其监督模型可用于控制流。

在这个和其他小任务中使用演员是个好主意吗?

4

1 回答 1

2

是的,将通常容易失败的任务委托给处理该特定任务的子角色是一个好主意。这种模式在 Petabridge 博客上被称为Character Actor 模式,但在下面重申,以防将来链接中断。

Character Actor Pattern 用于当应用程序有一些危险但关键的操作要执行,但需要保护其他参与者中包含的关键状态并确保没有负面影响时。

将这些有风险的操作简单地委托给一个专门构建但可随意使用的参与者通常更便宜、更快、更可靠,他们唯一的工作就是成功地执行操作,否则就死定了。

这些勇敢的、一次性的演员是角色演员。

角色演员可以是临时演员或长期演员,但通常他们被设计为仅执行一种特定类型的风险操作。通常,角色演员可以在整个应用程序中重复使用,属于许多不同类型的父母。例如,您可能有一个实用角色 actor 来处理发出外部网络请求,然后在整个应用程序中被父 actor 用于他们自己的目的。

用例

Character Actor 模式应用广泛。在您需要做一些有风险的事情时使用它,例如网络调用、文件 I/O、解析格式错误的内容等等。这些操作中的任何一个都是角色演员的良好候选者。

角色 Actor 在用于为其他一些重要类型的 Actor 提供保护和故障隔离时最有效,通常是包含一些重要状态的 Actor。

好处

使用 Character Actor Pattern 有三个主要好处:

  • 使有状态的和关键的参与者免受故障和风险操作的影响;
  • 可以轻松干净地引入特定于每种风险操作类型的重试/退避/撤消语义:由于您有一个特定于每个风险任务的角色参与者,因此您有一个明确定义的位置来放置重试处理和相关操作。这些特定于创建 Character Actor 的任务,不需要与您的其他 Actor 共享,这意味着该模式......</li>
  • 通过让 SupervisionStrategy 和 Actor 生命周期完成大部分繁重的工作来减少代码,您不需要在父 Actor 中使用各种异常处理代码。让它崩溃吧,宝贝。
于 2016-06-10T09:46:13.153 回答