Elasticsearch 源码分析 :节点启动

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

在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传输服务


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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,080评论 19 139
  • 此文为本人学习guice的过程中,翻译的官方文档,如有不对的地方,欢迎指出。另外还有一些附件说明、吐槽、疑问点,持...
    李眼镜阅读 3,571评论 2 5
  • feisky云计算、虚拟化与Linux技术笔记posts - 1014, comments - 298, trac...
    不排版阅读 3,939评论 0 5
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,985评论 6 342
  • 对于宿命,我们在劫难逃? 我离开家以后,风正的消息会断断续续的传到我的耳中,大多是在和父亲的通话中得知的。 听说风...
    散没阅读 364评论 0 2