深入理解Flink Rpc

FlinkRpc核心理解

其实在其他的大数据组件重也有类似于Actor类似的概念:

  • HDFS:Proxy
  • Akka:ActorRef
  • Flink:XXXGateway 例如JobManager、TaskManager
  • Akka的Actor 对应的是Flink的RpcEndpoint
  • Akka的ActorRef对应的是Flink的XXXGateway

在我们阅读Flink的源码的过程中,经常会见到类似的代码,其他他就是在发送RPC的请求。

resourceManagerGateway.requestSlot()
在HDFS当中就相当于获取RPCServer的代理,来进行RPC调用

其实这么来看的话,Flink中的RpcEndpoint在作用上,等同于Akka中的Actor

在Flink中RPC的实现主要在flink-runtime的模块重的rpc包重,涉及到最重要的API主要是以下四个:

接口含义
RpcGateway用于远程调用的代理接口,RpcGateway接口提供了获取他的代理RpcEndpoint的地址的方法。在实现一个提供RPC调用的组件时,通常需要先定一个接口,该接口继承RpcGateway并约定好提供的远程调用的方法,也就相当于Akka的ActorRef对象
RpcServer相当于RpcEndpoint自身的代理对象,例如Akka中的self,在RpcService启动RpcEndpoint的时候返回的就是RpcServer,可以通过调用getSelfGateway方法就可以获取自身的代理,然后调用该Endpoint提供的服务。
RpcEndpoint对RPC框架中提供具体服务的实体的抽象,所有提供远程调用的类都需要继承这个抽象类,也就是说,在flink中只要提供Rpc接口,肯定需要实现继承RpcEndpoint
RpcService是RpcEndpoint的运行时环境,RpcService提供了启动RpcEndpoint和连接到RpcEndpoint提供者并且返回RpcEndpoint的代理对象,供使用者获取RpcEndpoint来远程调用Rpc。

简单总结一下:

  1. RpcGateway 相当于RPC的老祖宗,所有的RPC组件都是他的孩子
  2. RpcServer RpcService(ActorSystem)和RpcEndpoint(Actor之间的黏合层)
  3. RpcEndpoint 业务逻辑的载体,对应的是Actor的封装
  4. RpcService 对应ActorSystem的封装

image-20220314223502580

RpcEndpoint下面有四个重要的子类:

  1. TaskExecutor 这个就可以理解为TaskManager。
  2. Dispatcher 主要负责调度
  3. JobMastrt 应用程序中的主控程序,类似于Spark中的Driver。
  4. ResourceManager 集群中的主节点 JobManager中的负责资源管理的角色和TaskExecutor一起构成资源管理的主从架构

当我们在任意地方发现要创建这四个组件的对象的时候,创建成功了就会调用start方法,就类似于Actor启动成功就会调用preStart生命周期方法。然后就会去启动RpcEndpoint,然后就会执行他内部的onStart方法,其实在这里面有很多需要注意的地方,因为大部分重要的东西都在onStart里面初始化。

既然我们知道类图了,那么我们是否可以实现这个需求呢?

image-20220313142903804

需求:

1、两个进程JobManager、TaskManager

2、当TaskManager启动的时候,向JobManager发送注册信息,报告本地的内存、CPU

3、当JobManager收到注册消息的时候,返回给TaskManager注册成功的消息

4、TaskManager每间隔三秒向JobManager发送心跳消息

5、JobManager每间隔3秒扫描一下,有哪些TaskManager下线

因为篇幅有限(比较晚了,想睡觉了),明天我们继续使用Flink的原生RPC接口实现这个需求。

为什么要这么着重的要看RPC这一块呢,因为在分布式系统中,如果不看懂这一块,熟悉这一块,看源码只会一会这里,一会哪里 都不知道在哪里了。

这些知识都是我学习来的一些东西,我也是一个菜鸡,只是想把自己学到的东西记录一下,生成自己的一些知识做一些记录以后找的时候方便,现在免费分享给大家,谢谢大家的观看。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值