美文网首页程序员
Elasticsearch 源码分析 :节点启动

Elasticsearch 源码分析 :节点启动

作者: 特例独行的猪 | 来源:发表于2018-11-02 14:27 被阅读25次

    前面三节讲述了启动之前做的一系列。命令行检查,安全设置,环境变量设置等操作。所有的操作都合法之后,开始执行启动节点。

    在Bootstrap.java中,有start()方法来调用Node.java中的start()方法进行节点启动执行,启动执行流程如下:

    1:通过代码Lifecycle.java中的moveToStarted进行节点状态的检测。

    Elasticsearch定义了四种状态:INITIALIZED,STOPED,STARTED,CLOSED

    如果当前节点状态为INITALIZED或者STOPED,修改状态为STARTED,返回true。如果节点状态为STARTED,返回false.如果节点为CLOSED状态,那么抛出异常。

    2: pluginLifecycleComponents.forEach(LifecycleComponent::start);

    启动所有插件。所有的插件都通过实现LifecycleComponent接口,在node启动时,安装好的插件进行启动

    3: injector.getInstance(MappingUpdatedAction.class).setClient(client)

    设置MappingUpdatedActionl类中IndicesAdminClient值为NodeClient。MappingUpdatedActionl实现了动态修改index 的Mapping功能。

    4: injector.getInstance(IndicesService.class).start();  启动索引服务

    5: injector.getInstance(IndicesClusterStateService.class).start();  启动集群索引状态服务

    6: injector.getInstance(SnapshotsService.class).start(); 启动快照服务

    7:injector.getInstance(SnapshotShardsService.class).start(); 启动分片快照服务

    8:injector.getInstance(RoutingService.class).start(); 启动路由服务

    9:nodeService.getMonitorService().start(); 启动监控服务

    10:injector.getInstance(ResourceWatcherService.class).start(); 启动资源监控服务

    11:injector.getInstance(GatewayService.class).start(); 启动网关服务

    12:transportService.start(); 启动transport服务 

    13:discovery.start(); 启动节点发现服务

    14:clusterService.start(); 启动集群服务

    15:discovery.startInitialJoin(); 启动节点join服务

    16:injector.getInstance(HttpServerTransport.class).start(); 启动Http传输服务

    下篇继续分析,各个服务之间的关系和每个服务的作用

    相关文章

      网友评论

        本文标题:Elasticsearch 源码分析 :节点启动

        本文链接:https://www.haomeiwen.com/subject/mwvqxqtx.html