【发布时间】:2015-03-25 13:26:41
【问题描述】:
我第一次尝试围绕 Akka/actors 进行研究,但对每个 Actor 职责的粒度有点困惑。
在我的应用程序中有Widgets 可以使用WidgetRegistrar 注册/取消注册。要将自己注册到 Registrar 和 Widget 被传递给 registerWidget 方法:
interface WidgetRegistrar {
public void register(Widget w);
}
当Widget 尝试注册时,会发生验证过程。如果此过程通过,则Widget 会显示一个 URL,必须不断(每秒一次)轮询和检查(使用 HTTP GET)以确保该 URL 仍然健康。
我的问题是:这些工作量应该如何在演员之间分配?
我可以马上想到几种不同的策略:
-
WidgetRegistrar演员首先以某种方式委托给WidgetVerifier演员(见下文),如果经过验证,则使用新注册/验证的Widget更新WidgetChecker演员 -
WidgetVerifier验证Widget尝试注册自己的参与者 - 1 个主
WidgetChecker检查每个已注册/已验证Widget的 URL
或者不同的策略:
-
WidgetRegistrar演员首先以某种方式委托给WidgetVerifier演员(见下文),如果经过验证,以某种方式实例化一个新的WidgetChecker演员(见下文) -
WidgetVerifier验证Widget尝试注册自己的参与者 - 1
WidgetChecker用于每个注册/验证的Widget
或者不同的策略:
-
WidgetRegistrar演员在现场验证Widgets(而不是委托给单独的演员),如果通过验证,则使用新注册/验证的Widget更新WidgetChecker演员 - 1 个主
WidgetChecker检查每个已注册/已验证Widget的 URL
...变化的列表不胜枚举。
所以我问:Akka Actor 的粒度是多少,我如何知道何时应该将功能分解为另一个 Actor 并以某种方式连接这两个 Actor?
【问题讨论】:
标签: java akka actor thread-synchronization