Elasticsearch源码分析 | 单节点的启动和关闭

 

本文主要简要介绍Elasticsearch单节点的启动和关闭流程。Elasticsearch版本:6.3.2

相关文章

1、Google Guice 快速入门
2、Elasticsearch 中的 Guice
3、教你编译调试Elasticsearch 6.3.2源码
4、Elasticsearch 6.3.2 启动过程

创建节点

Elasticsearch的启动引导类为 Bootstrap 类,在创建节点 Node 对象之前,Bootstrap 会解析配置和进行一些安全检查等

创建节点对象

environment 对象主要是解析出来的配置信息

environment 对象

创建节点过程的主要工作是创建各个模块对象和服务对象,完成 Guice 依赖绑定,获取并初始化探测器。

ModulesBuilder 用于统一管理 Module

ModulesBuilder modules = new ModulesBuilder(); ClusterModule clusterModule = new ClusterModule(settings, clusterService, clusterPlugins, clusterInfoService); modules.add(clusterModule);     // 将模块加入管理 //.... // 实例绑定 modules.add(b -> {         b.bind(Node.class).toInstance(this);         b.bind(NodeService.class).toInstance(nodeService);         b.bind(NamedXContentRegistry.class).toInstance(xContentRegistry);         b.bind(PluginsService.class).toInstance(pluginsService);         b.bind(Client.class).toInstance(client);         b.bind(NodeClient.class).toInstance(client);         b.bind(Environment.class).toInstance(this.environment);         b.bind(ThreadPool.class).toInstance(threadPool);         b.bind(NodeEnvironment.class).toInstance(nodeEnvironment);         // ....     } ); injector = modules.createInjector();    // 生成注入器

主要的服务类简介如下:

服务 简介
ResourceWatcherService 通用资源监视服务
HttpServerTransport HTTP传输服务,提供Rest接口服务
SnapshotsService 快照服务
SnapshotShardsService 负责启动和停止shard级快照
IndicesClusterStateService 根据收到的集群状态信息,处理相关索引
Discovery 集群拓扑管理
RoutingService 处理路由(节点之间迁移shard)
ClusterService 集群管理服务,主要处理集群任务,发布集群状态
NodeConnectionsService 节点连接管理服务
MonitorService 提供进程级、系统级、文件系统和JVM的监控服务
GatewayService 负责集群元数据持久化与恢复
SearchService 处理搜索请求
TransportService 底层传输服务
plugins 插件
IndicesService 负责创建、删除索引等索引操作

启动节点

启动节点的主要工作是启动各个模块的服务对象,服务对象从注入器 injector 中取出来,然后调用它们的 start 方法,服务对象的 start 方法的工作基本是初始化内部数据、创建线程池、启动线程池等,详细的

50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信