[ https://issues.apache.org/jira/browse/FLINK-4354?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15643637#comment-15643637 ]
Zhijiang Wang edited comment on FLINK-4354 at 11/7/16 9:46 AM: --------------------------------------------------------------- Hi [~till.rohrmann], for heartbeat interaction between TM and RM, I have some issues need to be confirmed with you before implementation. 1. The current {{HeartbeatManagerImpl}} implements both {{HeartbeatManager}} and {{HeartbeatTarget}} interfaces in order to test easily. I think we need another HeartbeatManagerImpl that just implements {{HeartbeatManager}} interface so can be used directly in different components. And every component can implement the separate {{HeartbeatTarget}}. 2. For TM component, the {{HeartbeatManagerImpl}} can be constructed in {{TaskManagerRunner}} (maybe not put in {{TaskManagerServices}}) and passed into {{TaskExecutor}}. 3. The TM will create the {{HeartbeatListener}} and start the {{HeartbeatManagerImpl}}. 4. When RM leader changes, the TM registers the new RM. If the registration successes, {{TaskExecutorRegistrationSuccess}} should contain {{ResourceID}} of RM, so the TM can create the {{HeartbeatTarget}} and monitor it based on {{ResourceID}} and Gateway of RM. 5. For RM, when receive registration from TM, it will create the {{HeartbeatTarget}} and monitor it based on {{ResourceID}} and Gateway of TM. RM will schedule a heartbeat request to all the monitored TMs. 6. {{TaskExecutorGateway}} should define the requestHeartbeat RPC method, and {{ResourceManagerGateway}} should define the sendHeartbeat RPC method. Do you think the above processes are feasible? I wish your professional advices and them begin to implement this week. was (Author: zjwang): Hi [~till.rohrmann], for heartbeat interaction between {{TM}} and {{RM}}, I have some issues need to be confirmed with you before implementation. 1. The current {{HeartbeatManagerImpl}} implements both {{HeartbeatManager}} and {{HeartbeatTarget}} interfaces in order to test easily. I think we need another HeartbeatManagerImpl that just implements {{HeartbeatManager}} interface so can be used directly in different components. And every component can implement the separate {{HeartbeatTarget}}. 2. For {{TM}} component, the {{HeartbeatManagerImpl}} can be constructed in {{TaskManagerRunner}} (maybe not put in {{TaskManagerServices}}) and passed into {{TaskExecutor}}. 3. The {{TM}} will create the {{HeartbeatListener}} and start the {{HeartbeatManagerImpl}}. 4. When {{RM}} leader changes, the {{TM}} registers the new {{RM}}. If the registration successes, {{TaskExecutorRegistrationSuccess}} should contain {{ResourceID}} of {{RM}}, so the {{TM}} can create the {{HeartbeatTarget}} and monitor it based on {{ResourceID}} and Gateway of RM. 5. For {{RM}}, when receive registration from {{TM}}, it will create the {{HeartbeatTarget}} and monitor it based on {{ResourceID}} and Gateway of {{TM}}. {{RM}} will schedule a heartbeat request to all the monitored TMs. 6. {{TaskExecutorGateway}} should define the requestHeartbeat RPC method, and {{ResourceManagerGateway}} should define the sendHeartbeat RPC method. Do you think the above processes are feasible? I wish your professional advices and them begin to implement this week. > Implement TaskManager side of heartbeat from ResourceManager > ------------------------------------------------------------- > > Key: FLINK-4354 > URL: https://issues.apache.org/jira/browse/FLINK-4354 > Project: Flink > Issue Type: Sub-task > Components: Cluster Management > Reporter: Zhijiang Wang > Assignee: Zhijiang Wang > > The {{ResourceManager}} initiates heartbeat messages via the {{RmLeaderID}}. > The {{TaskManager}} transmits its slot availability with each heartbeat. That > way, the RM will always know about available slots. -- This message was sent by Atlassian JIRA (v6.3.4#6332)