h2o.ai源码解析(2)—启动流程

本文深入剖析H2O.ai的启动流程,包括registerCoreExtensions()加载扩展类、startLocalNode()启动节点和cloud、initializePersistence()初始化持久化层、startNetworkServices()启动网络服务、加载数据源解析器、registerResourceRoot()加载WEB静态资源以及registerRestApiExtensions()注册REST API资源等关键步骤。详述每个步骤的功能和涉及的核心组件。
摘要由CSDN通过智能技术生成

上一篇中已经给出h2o.ai的整体介绍以及其核心项目h2o.ai/h2o-3的源码目录,本篇给出h2o启动流程的源码分析。启动过程的时序图如下:
这里写图片描述
下面挑选时序图中的关键接口进行详细功能介绍:

1. 【步骤3】 registerCoreExtensions()加载扩展类
这里写图片描述
利用Java ServiceLoader的原理加载当前项目目录中所有/resources/META-INF/目录下water.AbstractH2OExtension文件中定义的服务类:(这些服务类都继承了AbstractH2OExtension)。汇总了下加载了扩展类如下:

Project File Content
h2o-core water.AbstractH2OExtension water.FailedNodeWatchdogExtension
h2o-ext-krbstandalone water.AbstractH2OExtension hex.security.KerberosExtension
h2o-ext-xgboost water.AbstractH2OExtension hex.tree.xgboost.XGBoostExtension
h2o-grpc water.AbstractH2OExtension ai.h2o.api.GrpcExtension

*2.【步骤5,6】 startLocalNode()启动当前节点和当前cloud并将当前节点作为当前cloud的唯一成员*

/** Initializes the local node and the local cloud with itself as the only member. */
  private static void startLocalNode() {
    // Figure self out; this is surprisingly hard
    NetworkInit.initializeNetworkSockets();
    // Do not forget to put SELF into the static configuration (to simulate
    // proper multicast behavior)
    if( !ARGS.client && STATIC_H2OS != null && !STATIC_H2OS.contains(SELF)) {
      Log.warn("Flatfile configuration does not include self: " + SELF+ " but contains " + STATIC_H2OS);
      STATIC_H2OS.add(SELF);
    }
    ......
}

其中调用【步骤6】的 initializeNetworkSockets() 初始化启动一个jettyServer加载Web API(默认为ip:host为localhost:54321)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值