1.心跳接口
一个分布式集群有多个节点。节点之间有心跳机制,以确认每个节点是正常工作的。心跳机制,就是每隔N秒,一个节点向其他节点发消息,其他节点收到后,回复一个消息。超过M秒没有回复,视为TimeOut,节点被视为不能正常工作。
假设一个flink集群有3个节点:A,B1,B2。A是master节点,B1和B2是worker节点。根据flink的心跳机制,A节点每3秒向B1和B2发起心跳请求,B1和B2收到请求后,向A返回心跳应答。心跳请求和心跳应答,都会带上Payload载荷,传递更多的业务信息。
flink集群有多种业务流程,每种业务流程都有自己的心跳机制。flink的心跳机制提供接口,具体功能由各业务流程实现。
flink的心跳机制代码在flink/flink-runtime/src/main/java/org/apache/flink/runtime/heartbeat,实现三个接口:HeartbeatTarget,HeartbeatListener, HeartbeatManager。实现了三个类,HeartbeatManagerImpl, HeartbeatManagerSenderImpl, HeartbeatServices,这个三个类是示例接口的用法。
flink集群的三个节点,A、B1、B2,在行为上而言,都有两种动作:向某个节点发送请求,处理某个节点发来的请求。这两个动作抽象成接口HeartbeatTarget,它有两个函数receiveHeartbeat和requestHeartbeat。这两个函数的参数也很简单:分别是请求的发送放和接收方,还有Payload载荷,对于一个确定节点而言,接收的和发送的载荷是同一类