Uses for the AKKA actors framework?
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
Good use case for Akka
我理解为什么使用akka actors框架解决令人尴尬的并行问题是有意义的。
那些不需要大量计算,完全不需要并行化,但仍然高度分布的问题呢?例如,成千上万的分布式客户机可以增加或减少一个特定的计数器?
除了明显的可分配性和可伸缩性之外,还有其他方面对于参与者来说是非常好的。
actor模型允许在消息传递和错误处理之间完全分离;这两者在传统的OO中紧密地交织在一起。当您调用一个方法时,您会得到返回值,但您还必须处理所有可能的错误。当您向参与者发送消息时,您只会得到返回的响应,而所有失败都由参与者的主管处理。
另一个好处是改进了封装:在"普通"OO中,您通常会看到对象上暴露了太多的内容,如果不是,您仍然可以使用反射。AKKA演员是完全封闭的(除非你通过发送"这个"参考来欺骗),除了演员本身,没有人会扰乱国家。
与前一点联系起来,消息接收是演员行为的唯一入口,这一事实使得他们比普通的OO代码更容易理解,在OO代码中,每个公共(或受保护)方法都可以用作入口。您不需要这些调用并发以错过未计划的交互。
参与者是一种计算模型,它既适用于分布,也适用于并发性(最终是并行性)(由于隔离和消息传递)。因此,当您在一台机器上只有一个执行线程,或者在数千台机器上只有数千个执行线程时,可以使用参与者。