可能重复:
Akka 的良好用例
我理解为什么使用 AKKA 演员框架来解决令人尴尬的并行问题是有意义的。
那些不涉及大量计算并且根本不需要并行化但仍然高度分布的问题呢?例如,数以千计的分布式客户端可以增加或减少特定计数器?
可能重复:
Akka 的良好用例
我理解为什么使用 AKKA 演员框架来解决令人尴尬的并行问题是有意义的。
那些不涉及大量计算并且根本不需要并行化但仍然高度分布的问题呢?例如,数以千计的分布式客户端可以增加或减少特定计数器?
除了明显的可分布性和可扩展性论点之外,还有其他方面对演员来说非常好。
Actor 模型允许消息传递和错误处理之间的完全解耦;这两者在传统的 OO 中紧密结合在一起。当你调用一个方法时,你会得到返回值,但你还必须处理所有可能的错误。当您向参与者发送消息时,您只会得到响应,而所有失败都由参与者的主管处理。
另一件好事是改进的封装:在“普通”OO 中,您通常会看到太多的东西暴露在一个对象上,如果没有,您仍然可以使用反射。Akka Actor 是完全封装的(除非您通过发送“this”引用来作弊),除了 Actor 本身之外,没有人会弄乱状态。
与前一点联系起来,消息接收是参与者行为的唯一入口点这一事实使得它们比普通的 OO 代码更容易推理,其中每个公共(或受保护的)方法都可以用作入口。您不需要这些调用是并发的,以便错过计划外的交互。
Actors 是一种计算模型,它适用于分布和并发(以及最终的并行性)(由于隔离和消息传递)。因此,如果您在一台机器上只有 1 个执行线程,或者在数千台机器上只有数千个执行线程,则可以使用 Actor。