千家信息网

elasticsearch集群cluster怎么用

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要介绍"elasticsearch集群cluster怎么用"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"elasticsearch集群cluster
千家信息网最后更新 2026年11月03日elasticsearch集群cluster怎么用

这篇文章主要介绍"elasticsearch集群cluster怎么用"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"elasticsearch集群cluster怎么用"文章能帮助大家解决问题。

节点DiscoveryNode

首先是节点(DiscoveryNode),这里的节点不同于之前所说的node,只是集群上一个逻辑意义上的节点,只是一个实际节点的描述信息。它实现了Streamable接口和 serializable接口,可以在物理节点上传输。下图是它的field:

可以看到它只是一个节点的信息描述。在集群中每个节点会被抽象成一个DiscoveryNode,这些DiscoveryNode被封装到DiscoveryNodes中,同时提供一下操作如查找,连接等。这样集群维护所有节点的信息,同时可以根据集群状态进行节点的操作。

集群阻塞

集群还需要有一个机制就是集群阻塞,因为处于不同状态的集群能够进行的操作不同,如没有master节点的时候,所有的master操作都要停止,当前的任务是选举master,此时一个block就会引发,通知集群所有节点。不同于同一个jvm中的同步,不同的节点处在不同的jvm中,jvm的同步机制无法使用,因此只能使用这种阻塞机制进行节点间的协调。它的部分代码如下所示:

public class ClusterBlock implements Serializable, Streamable, ToXContent {    private int id;    private String description;    private EnumSet levels;    private boolean retryable;    private boolean disableStatePersistence = false;    private RestStatus status;    ClusterBlock() {    }    public ClusterBlock(int id, String description, boolean retryable, boolean disableStatePersistence, RestStatus status, EnumSet levels) {        this.id = id;        this.description = description;        this.retryable = retryable;        this.disableStatePersistence = disableStatePersistence;        this.status = status;        this.levels = levels;    }}

阻塞主要由三部分组成,描述(description),阻塞级别(READ(0),WRITE(1), METADATA(2)),及restful状态码RestStatus构成。阻塞级别主要用于节点间对于index的操作的阻塞,如某个index在进行恢复过程时,它的状态是MATEDATA级别,此时不能够对其进行任何读写操作。 RestStatus主要用于restful请求的阻塞。最后要说的就是ack机制,集群的很多操作都需要节点响应。因此cluster定义了ack的请求和响应接口。所有需要ack的请求通过实现此ack接口都能够实现。另外集群还涉及matedata和routing,这两部分其实都是针对数据(index),如matedata主要是mapping,index, alias的相关元数据,因此这两部分会在分析数据功能时在做分析。

clusterService接口

说完了DiscoveryNode和block,接下来通过clusterService接口,它的作用主要是提供对外调用。这个接口主要提供Listener,block的add和remove及cluster状态的更新提交。cluster只是一个理论上的实体,其实并不存在,所有功能都是由各个节点来完成的。因此clusterService接口主要方法是集群状态监听器的操作。它的类图:

这里着重说一下submitStateUpdateTask的实现。对于节点来说,如果它探测到集群状态的更新,如果它是master则它需要向其它节点发布。代码如下:

public void submitStateUpdateTask(final String source, Priority priority, final ClusterStateUpdateTask updateTask) {        if (!lifecycle.started()) {            return;        }        try {       //封装成updateTask            final UpdateTask task = new UpdateTask(source, priority, updateTask);       //会超时的任务            if (updateTask instanceof TimeoutClusterStateUpdateTask) {                final TimeoutClusterStateUpdateTask timeoutUpdateTask = (TimeoutClusterStateUpdateTask) updateTask;                updateTasksExecutor.execute(task, threadPool.scheduler(), timeoutUpdateTask.timeout(), new Runnable() {                    @Override                    public void run() {                        threadPool.generic().execute(new Runnable() {                            @Override                            public void run() {                                timeoutUpdateTask.onFailure(task.source(), new ProcessClusterEventTimeoutException(timeoutUpdateTask.timeout(), task.source()));                            }                        });                    }                });            } else {                updateTasksExecutor.execute(task);            }        } catch (EsRejectedExecutionException e) {            // ignore cases where we are shutting down..., there is really nothing interesting            // to be done here...            if (!lifecycle.stoppedOrClosed()) {                throw e;            }        }    }

上面的代码逻辑很简单,对于提交的task进行封装然后运行。这里运行的是ClusterStateUpdateTask, 它的实现很多,无法一一说明。但是它的方法说明了一切,它的类图如下所示:

子类的主要逻辑实现都在execute方法中,比如ZenDiscovery中handleMasterGone中的实现,master丢失后会进行master选举或者是试图加入新组成的集群。这些在后面的分析中可以看到。

关于"elasticsearch集群cluster怎么用"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注行业资讯频道,小编每天都会为大家更新不同的知识点。

节点 集群 接口 阻塞 状态 不同 只是 方法 机制 部分 代码 信息 数据 知识 级别 逻辑 分析 封装 更新 任务 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技 互联网新科技 今日互联网科技 科技互联网技术 互联网金融与金融科技 互联网与未来科技 唐信互联网科技 大连 融贸通互联网科技 深圳卡尔迅互联网科技有限公司怎么样 重庆威客帮互联网科技 华夏互联网科技业 广州市恰铎互联网科技有限公司 广西互联网科技孵化中心 卓翼科技产业互联网合作 互联网金融科技名词解释 工业互联网山东科技大学 互联网风格科技公司名称 信承诺互联网科技有限公司 广州梦谷互联网科技有限公司领导 互联网科技接地气 互联网金融与金融科技 苏州互联网科技贷款公司 互联网科技股午盘股票涨跌 洛阳共同富裕互联网科技有限公司 烟台灵鸽互联网科技有限公司 滨湖区互联网智能科技产品有哪些 广州有谷有贝互联网科技有限公司 福建互联网展示科技馆设计 互联网科技接地气 高科技和互联网的现代国家
0