elasticsearch集群cluster主要功能详细分析

 更新时间:2022年04月21日 15:17:46   投稿:ychy  
这篇文章主要为大家介绍了elasticsearch集群cluster主要功能详细分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

在源码概述中我们分析过,elasticsearch源码从功能上可以分为分布式功能和数据功能,接下来这几篇会就分布式功能展开。这里首先会对cluster作简单概述,然后对cluster所涉及的主要功能详细分析。

 elasticsearch的集群功能代码在cluster包中,通过ClusterService接口对外暴露。

cluster主要包括以下功能:

发现(Discovery),路由(routing),传送功能(transport),集群状态(clusterstates)等。

发现功能功能主要用于节点启动后发现集群,master向所有节点发布集群状态,选举master节点并引发集群节点变得事件;

routing记录了集群中各个shard的位置,为节点提供数据信息;

transport是节点间交流的主要通道,elasticsearch应用了netty框架实现了功能强大的transport功能;

集群状态(clusterstates)实现了一些集群状态,同时提供了一些方法,在集群每次变得时,master节点都会重新构建clusterstates,并将集群状态发送给每个节点。

节点根据cluster状态来确定某些操作是否能执行。

下图是显示了clusterstate的主要Fields

clusterstate的version是clusterstate的版本每次被更新它都会增加,routingTables包含了集群中所有索引的位置信息,nodes是当前集群中的所有节点,metaData是索引的一些元数据,blocks包含了集群的阻塞状态,

集群一共有三种阻塞级别:read,write和matedata;

status集群的状态有四种:unknown,RECEIVED,BEING_APPLIED,APPLIED。

集群功能的接口clusterservice的继承关系如下所示:

所有实现都在InternalClusterService中,它同时继承了AutoCloseAble接口和LifecycleComponent接口。

上图为clusterservice的方法,这些方法包括集群的启动与关闭,集群状态修改和发布及节点间ping通信等,这些方法只是从从内部看集群是不存在实体的,它的功能是由一个个节点实现的。因此对于集群的操作最终还是对每个节点的操作。单有些操作只能由master来进行,有些则是所有节点都需要进行的操作。每个加入集群后就会增加clusterstatelistener及localmasterlisener,但是clusterstate的发布则只能由master节点来实现。

以上就是对clusterservice的概述,限于篇幅。下一篇会对其进行详细分析,希望大家以后多多支持脚本之家!

相关文章

  • Slf4j+logback实现JSON格式日志输出方式

    Slf4j+logback实现JSON格式日志输出方式

    这篇文章主要介绍了Slf4j+logback实现JSON格式日志输出方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • servlet重定向详解(八)

    servlet重定向详解(八)

    这篇文章主要为大家详细介绍了servlet重定向的相关资料,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-09-09
  • MyBatis-Plus自定义SQL的详细过程记录

    MyBatis-Plus自定义SQL的详细过程记录

    Java开发使用mybatis-plus来执行sql操作,往往比mybatis能够省时省力,下面这篇文章主要给大家介绍了关于MyBatis-Plus自定义SQL的相关资料,需要的朋友可以参考下
    2022-02-02
  • java如何获取两个日期的时间差

    java如何获取两个日期的时间差

    这篇文章主要为大家详细介绍了java获取两个日期时间差的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-07-07
  • 解决使用mybatis-plus时,生成的SQL大写变小写加下划线问题

    解决使用mybatis-plus时,生成的SQL大写变小写加下划线问题

    这篇文章主要介绍了解决使用mybatis-plus时,生成的SQL大写变小写加下划线问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • Tomcat+Eclipse乱码问题解决方法与步骤

    Tomcat+Eclipse乱码问题解决方法与步骤

    乱码问题是大家在日常开发过程中经常会遇到的问题,由于各自环境的不同,解决起来也费时费力,本文主要介绍一般性乱码问题的解决方法与步骤,开发工具采用Eclipse+Tomcat,统一设置项目编码UTF-8为例,感兴趣的朋友跟随小编一起看看吧
    2023-08-08
  • springboot脱敏控件升级支持深度脱敏

    springboot脱敏控件升级支持深度脱敏

    这篇文章主要为大家介绍了springboot脱敏控件升级支持深度脱敏,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • Java多线程局域网聊天室的实现

    Java多线程局域网聊天室的实现

    在学习了一个学期的java以后,搞了一个多线程的聊天室,熟悉了一下服务器和客户机的操作。感兴趣的小伙伴们可以参考一下
    2021-06-06
  • 解决myBatis返回integer值的问题

    解决myBatis返回integer值的问题

    这篇文章主要介绍了解决myBatis返回integer值的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • Springboot加载所有Bean之后运行方式

    Springboot加载所有Bean之后运行方式

    这篇文章主要介绍了Springboot加载所有Bean之后运行方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07

最新评论