iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >elasticsearch集群cluster怎么用
  • 272
分享到

elasticsearch集群cluster怎么用

2023-06-30 07:06:28 272人浏览 安东尼
摘要

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

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

节点Discoverynode

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

elasticsearch集群cluster怎么用

可以看到它只是一个节点的信息描述。在集群中每个节点会被抽象成一个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<ClusterBlockLevel> 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<ClusterBlockLevel> 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接口主要方法是集群状态监听器的操作。它的类图:

elasticsearch集群cluster怎么用

这里着重说一下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, 它的实现很多,无法一一说明。但是它的方法说明了一切,它的类图如下所示:

elasticsearch集群cluster怎么用

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

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

--结束END--

本文标题: elasticsearch集群cluster怎么用

本文链接: https://www.lsjlt.com/news/327751.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • elasticsearch集群cluster怎么用
    这篇文章主要介绍“elasticsearch集群cluster怎么用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“elasticsearch集群cluster怎么用”文章能帮助大家解决问题。节点Di...
    99+
    2023-06-30
  • elasticsearch集群cluster示例详解
    目录前言节点DiscoveryNode集群阻塞clusterService接口总结前言 上一篇通过clusterservice对cluster做了一个简单的概述, 应该能够给大家一个...
    99+
    2024-04-02
  • elasticsearch集群cluster主要功能是什么
    这篇文章主要介绍“elasticsearch集群cluster主要功能是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“elasticsearch集群cluster主要功能是什么”文章能帮助大家解...
    99+
    2023-06-30
  • elasticsearch集群cluster主要功能详细分析
    在源码概述中我们分析过,elasticsearch源码从功能上可以分为分布式功能和数据功能,接下来这几篇会就分布式功能展开。这里首先会对cluster作简单概述,然后对cluster...
    99+
    2024-04-02
  • Redis集群(Cluster)
    Redis集群 集群解决的问题代理主机和无中心化集群Redis集群的特点Redis集群环境搭建slots(插槽)在集群中录入值查询集群中的值故障恢复Redis集群的优缺点 集群解决的问...
    99+
    2023-08-31
    redis 数据库 服务器
  • 怎么用docker搭建elasticsearch集群
    本篇内容主要讲解“怎么用docker搭建elasticsearch集群”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用docker搭建elasticsearch集群”吧!概述用docker进...
    99+
    2023-06-19
  • elasticsearch集群cluster discovery可配式模块示例分析
    目录前言Discovery模块的概述cluster节点探测MasterFaultDetection的启动代码master连接失败的逻辑MasterPing的关键代码前言 elasti...
    99+
    2024-04-02
  • redis 3.0 cluster 集群
    周氏一族,整理技术文档,给下一代留点教程......redis 3.0 cluster 安装篇,请看 http://zhoushouby.blog.51cto.com/9150272/1560400 本篇,是在 "redis 3.0 clu...
    99+
    2023-01-31
    集群 redis cluster
  • win2003群集cluster下SQL
    windows2003下群集cluster详细配置过程3 -SQL2005 cluster安装和sp3补丁安装和相关配置 1.磁盘管理 在MES-DB服务器上初始化磁盘,此时将RPT-DB服务器关闭 (如果2台服务器都是开机状态,在某一台服...
    99+
    2023-01-31
    cluster SQL
  • Influxdb Cluster集群部署
    准备工作 确定安装版本 1、此次安装选择的是influxdb-cluster集群部署方案,参考项目开源地址为:https://github.com/chengshiwen/influxdb-clust...
    99+
    2023-10-07
    linux 服务器
  • MySQL 中怎么配置Cluster 7.2.4集群
    MySQL 中怎么配置Cluster 7.2.4集群,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。准备 32位和64位版本  3台服...
    99+
    2024-04-02
  • Elasticsearch集群是怎么搭建的
    Elasticsearch集群是怎么搭建的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一:资源集群: gh-cluster节点1:gh-cluster-node-01 &...
    99+
    2023-06-04
  • redis的cluster集群怎么进行选举
    在Redis Cluster中,每个节点都有可能成为主节点或从节点。当一个主节点宕机或无法连接时,Redis Cluster会通过选...
    99+
    2024-04-09
    redis
  • 怎么安装搭建redis cluster 4.0.9集群
    本篇内容主要讲解“怎么安装搭建redis cluster 4.0.9集群”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么安装搭建redis cluster 4...
    99+
    2024-04-02
  • Windows10怎么搭建ElasticSearch集群服务
    这篇“Windows10怎么搭建ElasticSearch集群服务”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Window...
    99+
    2023-06-05
  • ElasticSearch中怎么实现集群分布式
    本篇文章为大家展示了ElasticSearch中怎么实现集群分布式,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。索引(index)“索引” 这个词在 Elastic...
    99+
    2024-04-02
  • Redis高可用集群redis-cluster详解
    哨兵模式主要解决了手动切换主从节点的问题 1 , 哨兵模式的缺陷 .主从节点切换的时候存在访问瞬断,等待时间较长, .只有一个master节点提供写,slave节点提供读,尽管写的效...
    99+
    2024-04-02
  • Redis中的Cluster集群介绍
    这篇文章主要介绍“Redis中的Cluster集群介绍”,在日常操作中,相信很多人在Redis中的Cluster集群介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Redi...
    99+
    2024-04-02
  • Redis集群(cluster模式)搭建
    目录 1、什么是集群 2、为什么使用 3、集群连接 4、redis cluster 如何分配这六个节点 5、集群搭建: 1、什么是集群 Redis 集群(包括很多小集群)实现了对Redis的水平扩容,即启动N个redis节点,将整个数...
    99+
    2023-09-05
    redis 数据库 java linux
  • Elasticsearch集群搭建及Py
    本文记录Elasticsearch物理集群的安装步骤,在3台机器上部署一个集群。行文顺序为整个安装过程从头到尾,期间发现不少问题。因此,本文不适合一步步跟着做,建议您看完整篇文章,然后再开始搭建集群。 1 . 环境 机器: 3台...
    99+
    2023-01-31
    集群 Elasticsearch Py
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作