本文主要简要介绍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 对象主要是解析出来的配置信息

创建节点过程的主要工作是创建各个模块对象和服务对象,完成 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%
就业率
