当程序的要求达到一台计算机的极限时,我们便需要将程序分布式化,让程序运行在多台计算机上。akka提供了remote actor用来构建分布式应用。

akka构建简单分布式应用

一、remote actor

1.Actor path

  actor的路径设计采用了类似URL的形式,即scheme://domain:port/path。scheme代表协议(http或者ftp),domain代表域名或者ip地址,port代表端口,path代表路径。所以表示一个actor的路径是akka://ServerSys@10.102.141.77:2552/user/SomeActor。路径表示远程actor的主机ip是10.102.141.77,端口是2552,actorsystem是ServerSys,Actor的名字是SomeActor。通过Actor path,我们就可以远程访问一个actor,进而进行消息的传递。

2.Actor引用

当知道远程actor的url后,我们便可以远程访问一个actor。访问通过引用远程actor来实现。

val actor = context.actorFor("akka://actorSystemName@10.0.0.1:2552/user/actorName")

一旦得到了actor的引用,你就可以象与本地actor通讯一样与它进行通迅了

actor ! "Pretty awesome feature"

二、一个简单例子

akka构建简单分布式应用

有一个本地actor:LocalActor,一个远程actor:RemoteActor。我们要实现相互之间的通信。LocalActor向RemoteActor发送一个消息"Hi there",RemoteActor返回"Hi there got something"。

1.remote端。

remote端的目录结构如下

akka构建简单分布式应用

 包含四个文件:application.conf,build.sbt,RemoteNodeApplication.scala,RemoteActor.scala

application.conf:

RemoteSys {
    akka {
          actor {
            provider = "akka.remote.RemoteActorRefProvider"
          }
       remote {
        transport = "akka.remote.netty.NettyRemoteTransport"
        netty {
          hostname = "192.168.178.192"
          port = 2552
        }
      }
    }
}
View Code

相关文章: