Akka演员如何帮助进行轻松的远程通信

问题描述 投票:0回答:2

来自akka文档:

与对象不同,参与者不仅封装了它们的状态,还封装了它们的执行。与参与者的通信不是通过方法调用,而是通过传递消息。尽管这种差异看似微不足道,但实际上是让我们在并发和远程通信方面摆脱了OOP的局限。

我了解并发性,但是对于远程通信不是很清楚。

akka actor
2个回答
0
投票

在Akka工具包中,Actor可以封装状态和行为:

An Actor = State + behavior

但是,此状态只能自己访问或修改。没有其他人可以访问它。

就像在共享状态并发模型中一样,线程是执行的基本单位;在Actor中,Aactor是执行的基本单位。

演员也是对象;但是,它不像普通的OOP对象。它不是简单或简单的对象。它内部具有许多组件,并且可以执行许多其他操作来轻松地执行其工作或计算。

ActorRef
Dispatcher
Mailbox
Actor

0
投票

远程通信本质上总是异步消息传递。

在OOP中,对象间通信通常是通过同步方法调用(即,直到获得结果之前的调用块)来完成。因此,为了与远程对象进行通信,必须使用一种RPC机制来包装传递的底层异步消息以呈现一个同步接口,或者使用诸如Future之类的东西使该接口成为同步和异步的混合体。两种方法都增加了很多复杂性:RPC机制倾向于增加很多隐藏的复杂性,而期货倾向于增加很多明显的复杂性。

对于参与者,通信是异步消息传递。将消息发送到与发送方运行在相同JVM中的Akka actor与运行在不同JVM(同一台机器或不同计算机)中的Akka actor之间的唯一概念差异是,在前一种情况下,可以通过不序列化消息来进行优化。除了使两个不同的JVM进行通信的固有开销外,使参与者进行远程通信没有增加任何复杂性。如果两个参与者可以在本地成功地共同组成一个工作系统,则几乎可以肯定,即使他们需要通过网络进行通信,他们也可以轻松地(例如使用Akka远程处理)一起工作。

© www.soinside.com 2019 - 2024. All rights reserved.