Prerequisites

  • Flink的RPC服务是基于Akka Remote实现的。一个简单的Akka Remoting ActorSystem的配置如下:

    1. akka {
    2. actor {
    3. provider = remote
    4. }
    5. remote {
    6. enabled-transports = ["akka.remote.netty.tcp"]
    7. netty.tcp {
    8. hostname = "127.0.0.1"
    9. port = 2552
    10. }
    11. }
    12. }
    • 从这份配置文件可以看出,要建立一个ActorSystem,首先需要提供ActorSystem运行的机器的地址和端口。
  • 参考Akka Remoting的文档,获取远程节点的Actor有两条途径。
    • 第一条,通过actorSelection(path),在这儿需要知道远程节点的地址。获取到了ActorSelection就已经可以发送消息过去,也可以通过回信获取这个Actor的ActorRef。
    • 第二条,通过配置,配置文件如下。通过这种方式,远程系统的daemon会被请求建立这个Actor,ActorRef可以直接通过system.actorOf(new Props(…)获取。
      1. akka {
      2. actor {
      3. deployment {
      4. /sampleActor {
      5. remote = "akka.tcp://sampleActorSystem@127.0.0.1:2553"
      6. }
      7. }
      8. }
      9. }