pomelo服务器启动过程2

pomelo服务器启动过程 一文中,知道了master服务器是如何启动其他服务器的。那么在最初开始app.start是启动过程又是如何的呢?

    可以看看app.start的函数实现:

	Application.start = function(cb) {
  this.startTime = Date.now();
  if(this.state > STATE_INITED) {
    utils.invokeCallback(cb, new Error('application has already start.'));
    return;
  }
  
  var self = this;
  appUtil.startByType(self, function() {
    appUtil.loadDefaultComponents(self);
    var startUp = function() {
      appUtil.optComponents(self.loaded, Constants.RESERVED.START, function(err) {
        self.state = STATE_START;
        if(err) {
          utils.invokeCallback(cb, err);
        } else {
          logger.info('%j enter after start...', self.getServerId());
          self.afterStart(cb);
        }
      });
    };
    var beforeFun = self.lifecycleCbs[Constants.LIFECYCLE.BEFORE_STARTUP];
    if(!!beforeFun) {
      beforeFun.call(null, self, startUp);
    } else {
      startUp();
    }
  });
};

这里关键的函数appUtil.startByType并没有如我们所想的就调用到了starter.runServers(app);而是直接调用了utils.invokeCallback(cb);那么在startByTypecallback中的函数appUtil.optComponents呢?该函数主要是启动了各个载入的组件。这其中就有master组件。只有master服务器会有master组件,而所有服务器都会有monitor组件。optComponents中会调用各个组件的start方法。看看master组件的start方法,正好是调用了master服务器的启动方法start。这样会导致runServers的调用。后续的过程就和pomelo服务器启动过程一致了。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值