MessageProtocol.scala
package top.gldwolf.scala.akkademo.sparkmasterandworker.common
case class WorkerRegisterInfo(id: String, cpu: Int, ram: Int) {
}
class WorkerInfo(var id: String, cpu: Int, ram: Int) {
var lastHeartBeatTime = System.currentTimeMillis()
}
case object RegisteredInfo
case object SendHeartBeat
case class HeartBeat(id: String)
case object StartCheckTimeOutWorker
case object RemoveTimeOutWorker
SparkWorker.scala
package top.gldwolf.scala.akkademo.sparkmasterandworker.worker
import akka.actor.{
Actor, ActorRef, ActorSelection, ActorSystem, Props}
import com.typesafe.config.{
Config, ConfigFactory}
import top.gldwolf.scala.akkademo.sparkmasterandworker.common.{
HeartBeat, RegisteredInfo, SendHeartBeat, WorkerRegisterInfo}
import scala.concurrent.duration.FiniteDuration
object SparkWorker {
def main(args: Array[String]): Unit = {
if (args.length < 6) {
println("参数个数不正确:host, port, workerName, masterName, masterHost, masterPort...")
System.exit(-1)
}
val host = args(