辅助对象

scheduler

mesos.reset(new Mesos(
  master,
  mesos::ContentType::PROTOBUF,
  process::defer(self(), &Self::connected),
  process::defer(self(), &Self::disconnected),
  process::defer(self(), &Self::received, lambda::_1),
  credential));

src/scheduler/scheduler.cpp

mesos::v1::scheduler::Mesos

构建函数

class MesosProcess : public ProtobufProcess<MesosProcess>

  • 142-148:初始化私有变量,状态为DISCONNECTED、初始化回调函数、认证信息等等
  • 150:初始化libprocess
  • 167:初始化log
  • 181-193:调用MasterDetector::create创建detector并调用detector.reset

send(call)

  • 237-251:构造POST请求
  • 256-260:发送SUBSCRIBE类型调用
  • 261-268:发送非SUBSCRIBE类型调用
  • 271-275:收到response后,调用_send

initialize

  • 299-300:检测master,调用detector->detect得到masterinfo,再调用detected

detected

参数:MasterInfo类型的Future变量,future

  • 418-425:若状态是CONNECTED/SUBSCRIBING/SUBSCRIBED,调用回调函数中的disconnected断连
  • 428:disconnect,断连
  • 430-439:若future无相应内容或已经被抛弃,则将master置为空
  • 439:MasterInfo存在,进行连接动作:
    • 440-459:构建针对master的请求地址,可能是SSL
    • 463:生成随机UUID作为连接ID
    • 467-473:延迟一个随机值(从0到flags.connectionDelayMax)再调用connect
  • 477-478:和函数initialize一样,调用detector->detect得到masterinfo,再调用detected。这里的意思是每隔一段时间会再检测master,且再连接master????(可能detector->detect会一直阻塞吧?????????)

connect

参数:

  • _connectionId

流程:

  • 315:状态改为CONNECTING
  • 317-319:初始化一个lambda函数connector,该函数调用process::http::connect(master.get())连接master
  • 323-324:调用两次connector创建两个连接,在每个连接上再调用connected

connected

参数:

  • _connectionId
  • _connections:两个连接

流程:

  • 333-347:一些错误检查
  • 351:状态改为CONNECTED
  • 353-354:从_connections得到两个连接放在变量connections(是本对象的私有变量)中
  • 356-366:在connections两个连接上都先调用其定义的disconnected再调用本对象的disconnected
  • 370-374:调用回调函数的connected

    executor

src/executor/executor.cpp

mesos::v1::executor::Mesos

这个对象负责从agent接收消息(通过事件)及发送消息给agent(通过call)。

class MesosProcess : public ProtobufProcess<MesosProcess>

构建函数

MesosProcess

  • 174:初始化libprocess
  • 190:启动VersionProcess
  • 193:是否设置了MESOS_LOCAL(为了测试)
  • 195-202:从环境变量得到agent的PID
  • 207-212:构造访问agent的网址
  • 215-216:检查环境变量是否有CHECKPOINT
  • 218-249:如果有CHECKPOINT,设置相关变量
  • 235-249:得到MESOS_SUBSCRIPTION_BACKOFF_MAX
  • 252-265:得到MESOS_EXECUTOR_SHUTDOWN_GRACE_PERIOD

results matching ""

    No results matching ""