概要
TaskExecutor向ResourceManager注册,用到了RPC通信,下面我将详细剖析它的原理
整体架构流程
1.首先,TaskExecutor启动会先调用onStart()方法
2.进入startTaskExecutorServices方法
3.点进ResouceManagerLeaderListener()中
4.第一次启动,会调用notifyOfNewResourceManagerLeader()方法,继续点进去
5.点进reconnectToResourceManager()方法
6.调用tryConnectToResourceManager()方法
7.判断RM地址是否为空,不为空,调用connectToResourceManager()方法
8.resourceManagerConnection.start()调用
9.点击startRegistration()开始注册
10.通过rpcService获取RM的代理对象,这是FlinkRpc通信相关的知识,前面的一篇文章有讲,这里不过多赘述,将代理对象传入register()方法中
11.调用invokeRegistration()方法
12.接下来会走Rpc通信,这里前面一篇文章讲过,最终会调用到RM的registerTaskExecutor()方法完成注册
13.进入registerTaskExecutorInternal方法
14.接下来会调用到createaNewRegistration内的whencompleteAsync方法,前面第八点有讲
小结
TaskExecutor的注册过程看起来很绕,其实也很简单,就是方法的不断调用,厘清楚就很清晰了