elasticsearch集群cluster主要功能詳細(xì)分析
在源碼概述中我們分析過(guò),elasticsearch源碼從功能上可以分為分布式功能和數(shù)據(jù)功能,接下來(lái)這幾篇會(huì)就分布式功能展開(kāi)。這里首先會(huì)對(duì)cluster作簡(jiǎn)單概述,然后對(duì)cluster所涉及的主要功能詳細(xì)分析。
elasticsearch的集群功能代碼在cluster包中,通過(guò)ClusterService接口對(duì)外暴露。
cluster主要包括以下功能:
發(fā)現(xiàn)(Discovery),路由(routing),傳送功能(transport),集群狀態(tài)(clusterstates)等。
發(fā)現(xiàn)功能功能主要用于節(jié)點(diǎn)啟動(dòng)后發(fā)現(xiàn)集群,master向所有節(jié)點(diǎn)發(fā)布集群狀態(tài),選舉master節(jié)點(diǎn)并引發(fā)集群節(jié)點(diǎn)變得事件;
routing記錄了集群中各個(gè)shard的位置,為節(jié)點(diǎn)提供數(shù)據(jù)信息;
transport是節(jié)點(diǎn)間交流的主要通道,elasticsearch應(yīng)用了netty框架實(shí)現(xiàn)了功能強(qiáng)大的transport功能;
集群狀態(tài)(clusterstates)實(shí)現(xiàn)了一些集群狀態(tài),同時(shí)提供了一些方法,在集群每次變得時(shí),master節(jié)點(diǎn)都會(huì)重新構(gòu)建clusterstates,并將集群狀態(tài)發(fā)送給每個(gè)節(jié)點(diǎn)。
節(jié)點(diǎn)根據(jù)cluster狀態(tài)來(lái)確定某些操作是否能執(zhí)行。
下圖是顯示了clusterstate的主要Fields

clusterstate的version是clusterstate的版本每次被更新它都會(huì)增加,routingTables包含了集群中所有索引的位置信息,nodes是當(dāng)前集群中的所有節(jié)點(diǎn),metaData是索引的一些元數(shù)據(jù),blocks包含了集群的阻塞狀態(tài),
集群一共有三種阻塞級(jí)別:read,write和matedata;
status集群的狀態(tài)有四種:unknown,RECEIVED,BEING_APPLIED,APPLIED。
集群功能的接口clusterservice的繼承關(guān)系如下所示:

所有實(shí)現(xiàn)都在InternalClusterService中,它同時(shí)繼承了AutoCloseAble接口和LifecycleComponent接口。

上圖為clusterservice的方法,這些方法包括集群的啟動(dòng)與關(guān)閉,集群狀態(tài)修改和發(fā)布及節(jié)點(diǎn)間ping通信等,這些方法只是從從內(nèi)部看集群是不存在實(shí)體的,它的功能是由一個(gè)個(gè)節(jié)點(diǎn)實(shí)現(xiàn)的。因此對(duì)于集群的操作最終還是對(duì)每個(gè)節(jié)點(diǎn)的操作。單有些操作只能由master來(lái)進(jìn)行,有些則是所有節(jié)點(diǎn)都需要進(jìn)行的操作。每個(gè)加入集群后就會(huì)增加clusterstatelistener及l(fā)ocalmasterlisener,但是clusterstate的發(fā)布則只能由master節(jié)點(diǎn)來(lái)實(shí)現(xiàn)。
以上就是對(duì)clusterservice的概述,限于篇幅。下一篇會(huì)對(duì)其進(jìn)行詳細(xì)分析,希望大家以后多多支持腳本之家!
- golang elasticsearch Client的使用詳解
- elasticsearch節(jié)點(diǎn)間通信的基礎(chǔ)transport啟動(dòng)過(guò)程
- elasticsearch集群cluster示例詳解
- elasticsearch通過(guò)guice注入Node組裝啟動(dòng)過(guò)程
- elasticsearch的zenDiscovery和master選舉機(jī)制原理分析
- elasticsearch的靈魂唯一master選舉機(jī)制原理分析
- elasticsearch構(gòu)造Client實(shí)現(xiàn)java客戶端調(diào)用接口示例分析
相關(guān)文章
Slf4j+logback實(shí)現(xiàn)JSON格式日志輸出方式
這篇文章主要介紹了Slf4j+logback實(shí)現(xiàn)JSON格式日志輸出方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12
MyBatis-Plus自定義SQL的詳細(xì)過(guò)程記錄
Java開(kāi)發(fā)使用mybatis-plus來(lái)執(zhí)行sql操作,往往比mybatis能夠省時(shí)省力,下面這篇文章主要給大家介紹了關(guān)于MyBatis-Plus自定義SQL的相關(guān)資料,需要的朋友可以參考下2022-02-02
解決使用mybatis-plus時(shí),生成的SQL大寫變小寫加下劃線問(wèn)題
這篇文章主要介紹了解決使用mybatis-plus時(shí),生成的SQL大寫變小寫加下劃線問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-12-12
Tomcat+Eclipse亂碼問(wèn)題解決方法與步驟
亂碼問(wèn)題是大家在日常開(kāi)發(fā)過(guò)程中經(jīng)常會(huì)遇到的問(wèn)題,由于各自環(huán)境的不同,解決起來(lái)也費(fèi)時(shí)費(fèi)力,本文主要介紹一般性亂碼問(wèn)題的解決方法與步驟,開(kāi)發(fā)工具采用Eclipse+Tomcat,統(tǒng)一設(shè)置項(xiàng)目編碼UTF-8為例,感興趣的朋友跟隨小編一起看看吧2023-08-08
Java多線程局域網(wǎng)聊天室的實(shí)現(xiàn)
在學(xué)習(xí)了一個(gè)學(xué)期的java以后,搞了一個(gè)多線程的聊天室,熟悉了一下服務(wù)器和客戶機(jī)的操作。感興趣的小伙伴們可以參考一下2021-06-06

