Flink RPC详解
2022-04-08 17:20:28 15 举报
Flink RPC详解
作者其他创作
大纲/内容
RpcGateway 接口是用于远程调用的代理接口。 RpcGateway 提供了获取其所代理的 RpcEndpoint 的地址的方法。* 在实现一个提供 RPC 调用的组件时,通常需要先定一个接口,该接口继承 RpcGateway 并约定好提供的远程调用的方法。
<class>FencedAkkaInvocationHandler
implements
<class>YarnResourceManager
extends
<class>StandaloneResourceManager
use
<interface>RpcService
<class>MiniDispatcher
<class>AkkaInvocationHandler
<interface>AkkaBasedEndpoint
* 注释:基于 Akka 的 {@link RpcService} 实现。 *注释:RpcService 启动Akka actor,以从{@link RpcGateway}接收 RPC调用。
<interface>RpcServer
注释: 每一个 JobGragh 的运行,都会有一个 JobMaster 的主控程序来进行控制协调
<class>StandaloneDispatcher
RpcServer 是 Actor 与 RpcEndpoint 两层之间的胶合层
<abstract>Dispatcher
<interface>RpcGateway
<class>MesosResourceManager
<class>AkkaRpcService
<class>TaskExecutor
这个类是 Task 执行器的实现, 主要负责执行多个 Task
注释: Dispatcher 主要是用于作业的提交、并把它们持久化、为作业创建对应的 JobManager 等 * Client 端提交的 JobGraph 就是提交给了 Dispatcher 服务
RpcEndpoint 是对 RPC 框架中提供具体服务的实体的抽象,所有提供远程调用方法的组件都需要继承该抽象类。 * 另外,对于同一个 RpcEndpoint 的所有 RPC 调用都会在同一个线程(RpcEndpoint 的“主线程”)中执行,因此无需担心并发执行的线程安全问题。
<abstract>ResourceManager
<abstract>FencedRpcEndpoint
<interface>FencedRpcGateway
<abstract>JobMaster
Flink 的 RPC 实现:基于 Scala 的网络编程库: Akka1、ActorSystem 是管理 Actor生命周期的组件, Actor是负责进行通信的组 2、每个 Actor 都有一个 MailBox,别的 Actor 发送给它的消息都首先储存在 MailBox 中,通过这种 方式可以实现异步通信。 3、每个 Actor 是单线程的处理方式,不断的从 MailBox 拉取消息执行处理,所以对于 Actor 的消息处 理,不适合调用会阻塞的处理方法。 4、Actor 可以改变他自身的状态,可以接收消息,也可以发送消息,还可以生成新的 Actor 5、每一个ActorSystem 和 Actor都在启动的时候会给定一个 name,如果要从ActorSystem中,获取一 个 Actor,则通过以下的方式来进行 Actor的获取: akka.tcp://asname@bigdata02:9527/user/actorname 6、如果一个 Actor 要和另外一个 Actor进行通信,则必须先获取对方 Actor 的 ActorRef 对象,然 后通过该对象发送消息即可。 7、通过 tell 发送异步消息,不接收响应,通过 ask 发送异步消息,得到 Future 返回,通过异步回到 返回处理结果。Flink 中的 RPC 实现主要在 flink-runtime 模块下的 org.apache.flink.runtime.rpc 包中,涉及到的最重要的 API 主要是以下这四个:1、RpcGateway 路由,RPC的老祖宗,各种其他RPC组件,都是 RpcGateWay 的子类 2、RpcServer RpcService 和 RpcEndpoint 之间的粘合层 3、RpcEndpoint 业务逻辑载体,对应的 Actor 的封装 4、RpcService 对应 ActorSystem 的封装
<abstract>RpcEndpoint
0 条评论
下一页