欢迎来到代码驿站!

JAVA代码

当前位置:首页 > 软件编程 > JAVA代码

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

时间:2023-02-28 11:47:39|栏目:JAVA代码|点击:

在源码概述中我们分析过,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节点来实现。

上一篇:关于BufferedReader的read()和readLine()的区别

栏    目:JAVA代码

下一篇:Netty组件NioEventLoopGroup创建线程执行器源码解析

本文标题:elasticsearch集群cluster主要功能详细分析

本文地址:http://www.codeinn.net/misctech/226589.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有