弄清flink1.8的远程过程调用rpc.pdfVIP

  • 12
  • 0
  • 约1.71万字
  • 约 12页
  • 2022-04-11 发布于北京
  • 举报
弄清 Flink1.8 的 过程调用(RPC) 2019 年 06 月 01 日 22:51:57 super_wj0820 阅读数 34 :本文为博主 文章, 博主允许不得 。 基于 Flink1.8 版本,分析 Flink 各节点之间的 RPC 实现: 介绍 RPC 相关的主要接口 RPC 节点之间的 式 Flink 老版本处理 Rpc 时,各节点通过继承 FlinkActor 接口,接收 Actor 消息, 根据消息类型进行不同的业务处理。此种方式将流程业务和具体通信组件耦合在 一起,不利于后期更换通信组件(如使用 netty),因此Flink 引入了 RPC 调用, 各节点通过 GateWay 方式回调,隐藏通信组件的细节,实现解耦。 RPC 相关的主要接口 RpcEndpoint RpcService RpcGateway RpcEndpoint: 过程调用(remote procedure calls) 的基类 RpcEndpoint 是 Flink RPC 终端的基类,所有提供 过程调用的分布式组件 必须扩展 RpcEndpoint, RpcEndpoint 功能由 RpcService 支持。 RpcEndpoint 子类 如上图所示,RpcEndpoint 的子类只有四类组件:Dispatcher,JobMaster , ResourceManager,TaskExecutor ,即Flink 中只有这四个组件有RPC的能力, 换句话说只有这四个组件有 RPC 的这个需求。 这也对应了 Flink 这的四大组件:Dispatcher,JobMaster ,ResourceManager, TaskExecutor ,彼此之间的通信需要依赖RPC 实现。(目前通信组件依然是 Akka) RpcService:RPC 服务提供者 RpcServer 是 RpcEndpoint 的成员变量,为 RpcService 提供 RPC 服务,连接 Server,其只有一个子类实现:AkkaRpcService ,可见目前Flink 的通信 方式依然是 Akka。 RpcServer 用于启动和连接到 RpcEndpoint, 连接到 rpc 服务器将返回一个 RpcGateway,可用于调用 过程。 Flink 四大组件 Dispatcher,JobMaster ,ResourceManager,TaskExecutor , 都是 RpcEndpoint 的实现,所以构建四大组件时,同步需要初始化 RpcServer。 如 JobManager 的构造方式,第一个参数就是需要知道 RpcService : public JobMaster( RpcService rpcService, JobMasterConfiguration jobMasterConfiguration, ResourceID resourceId, JobGraph jobGraph, HighAvailabilityServices highAvailabilityService, SlotPoolFactory slotPoolFactory, SchedulerFactory schedulerFactory, JobManagerSharedServices jobManagerSharedServices, HeartbeatServices heartbeatServices, JobManagerJobMetricGroupFactory jobMetricGroupFactory,

文档评论(0)

1亿VIP精品文档

相关文档