实现:心跳通信与宕机移除
1、客户机在连接master成功后创建一个定时器,每5秒发送一次心跳给master
2、master接收到客户端心跳后,查找对应的客户机,并根据当前时间更新一次内存中的客户机最近一次心跳时间
3、master主动在一启动时,创建一个定时器,检测当前内存中的客户机最近一次心跳时间是否超过10秒,若超过10秒还没有就从当前内存中移除
最终效果:
1、创建客户机信息类,记录当前的配置信息以及最后一次心跳机制时间 lastUpdateTime
/**
* Worker的本机信息类
* id:主机名称 momery:内存大小 cores:CPU核数
*/
class WorkerInfo(val id: String, var memory: Int, var cores: Int) {
//上次更新的时间
var lastUpdateTime:Long = _
override def toString: String = s"WorkerInfo($id, $memory, $cores)"
}
2、创建消息队列:
客户机给master发送:Heartbeat 及客户机自己内部发送的SendHeartbeat 以及master的检测消息CheckTimeoutWorker
//Worker发送给Master的注册信息,case class默认实现序列化
case class RegisterWorker(id: String, me