Elasticsearch集群,elastic 集群
在源代码概述中,我们分析了弹性搜索源代码可以分为分布式函数和数据函数。接下来的几篇文章将关注分布式函数。在这里,我们将首先对集群做一个简单的概述,然后详细分析集群涉及的主要功能。
Elasticsearch的集群函数代码在集群包中,通过ClusterService接口公开。
集群主要包括以下功能:
发现、路由、传输、集群状态等。
发现功能主要用于节点启动后发现集群,主节点向所有节点发布集群状态,选举主节点,使集群节点成为事件;
路由记录每个分片在簇中的位置,为节点提供数据信息;
传输是节点间通信的主要通道,elasticsearch应用了netty框架实现了强大的传输功能。
Clusterstates实现了一些cluster state并提供了一些方法。每次集群改变时,主节点将重建集群状态,并将集群状态发送到每个节点。
根据集群状态,节点确定是否可以执行某些操作。
下图显示了clusterstate的主要字段。
clusterstate的版本是clusterstate的版本,每次更新都会增加。routingTables包含集群中所有索引的位置信息,nodes是当前集群中的所有节点,metaData是索引的一些元数据,blocks包含集群的阻塞状态。
集群中有三个阻塞级别:读、写和matedata;
集群有四种状态:未知、已接收、正在应用和已应用。
集群功能的接口clusterservice的继承关系如下:
所有的实现都在InternalClusterService中,它继承了AutoCloseAble接口和LifecycleComponent接口。
上图展示了clusterservice的方法,包括集群的启动和关闭,集群状态的修改和释放,节点间的ping通信。这些方法只是从内部看集群,其功能是由各个节点实现的。所以集群的运行最终是各个节点的运行。有些单个操作只能由主节点执行,有些则是所有节点都需要执行的操作。加入集群后会添加Clusterstatelistener和localmasterlisener,但是clusterstate的发布只能由主节点实现。
以上是对集群服务的概述,篇幅有限。下一篇文章会详细分析,希望大家以后能支持盛行的IT!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。