Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
akka actor如何帮助轻松远程通信_Akka_Actor - Fatal编程技术网

akka actor如何帮助轻松远程通信

akka actor如何帮助轻松远程通信,akka,actor,Akka,Actor,来自akka文件: 与对象不同,参与者不仅封装了它们的状态,还封装了它们的执行。与参与者的通信不是通过方法调用,而是通过传递消息。虽然这种差异看起来很小,但实际上,在并发性和远程通信方面,正是这种差异使我们能够突破OOP的限制 我了解并发性,但不太清楚远程通信。在Akka工具包中,参与者可以封装状态和行为: An Actor = State + behavior 但是,此状态只能由自身访问或修改。没有其他人可以访问它 与共享状态并发模型一样,线程是基本的执行单元;在Actor中,Aactor是

来自akka文件:

与对象不同,参与者不仅封装了它们的状态,还封装了它们的执行。与参与者的通信不是通过方法调用,而是通过传递消息。虽然这种差异看起来很小,但实际上,在并发性和远程通信方面,正是这种差异使我们能够突破OOP的限制


我了解并发性,但不太清楚远程通信。

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

An Actor = State + behavior
但是,此状态只能由自身访问或修改。没有其他人可以访问它

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

演员也是对象;但是,它与普通OOP对象不同。它不是一个简单或简单的对象。它内部有许多组件,可以做更多的事情来轻松地执行其工作或计算

ActorRef
Dispatcher
Mailbox
Actor

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

在OOP中,对象间通信通常通过同步方法调用来完成(即,调用阻塞,直到有结果为止)。因此,为了与远程对象通信,必须使用RPC机制来包装底层异步消息传递以呈现同步接口,或者使用类似futures的东西使接口成为同步和异步的混合体。这两种方法都增加了很多复杂性:RPC机制往往会增加很多隐藏的复杂性,而未来往往会增加很多明显的复杂性

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