elasticsearch 启动过程源码(三)

本文深入解析Elasticsearch启动过程中NodeEnvironment的构造,关注节点本地存储需求、最大共享存储节点数配置、文件锁机制。当node.client为true或node.data和node.master均为false时,节点不需要本地存储。同时,文章详细介绍了如何通过max_local_storage_nodes配置限制共享存储目录,并通过NativeFSLock实现不同实例间的文件锁,确保目录锁定。
摘要由CSDN通过智能技术生成

elasticsearch 启动过程源码(三)

主要涉及NodeEnvironment

es 版本1.0

上次看到了InternalNode构造函数中的压缩配置,今天就涉及到InternalNode中的非常重要的一行代码

NodeEnvironment nodeEnvironment = new NodeEnvironment(this.settings, this.environment);

构造NodeEnvironment对象,我们一段一段的来看这个构造函数中都干了什么。

super(settings);

if (!DiscoveryNode.nodeRequiresLocalStorage(settings)) {//node.client true 或者(node.data false 且 node.master false)
    nodeFiles = null;
    nodeIndicesLocations = null;
    locks = null;
    localNodeId = -1;
    return;
}

NodeEnvironment与PluginsService一样都继承AbstractComponent,这里的super主要用来初始化AbstractComponent中的settings配置和componentSettings配置。DiscoveryNode.nodeRequiresLocalStorage做了一个判断,来看下什么时候会执行if其中代码并返回。

public static boolean nodeRequiresLocalStorage(Settings settings) {
    return !(settings.getAsBoolean("node.client", false) || (!settings.getAsBoolean("node.data", true) && !settings.getAsBoolean("node.master", true)));
}

node.client为true 或者(node.data为false 且 node.master为false)时,也就是这两种情况的节点不需要本地存储,因此将相关属性都初始化为null。

 int maxLocalStorageNodes = settings.getAsInt("node.max_local_storage_nodes", 50);
for (int possibleLockId = 0; possibleLockId < maxLocalStorageNodes; possibleLockId++) {
    for (int dirIndex = 0; dirIndex < environment.dataWithClusterF
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值