elasticsearch集群cluster主要功能詳細(xì)分析
在源碼概述中我們分析過,elasticsearch源碼從功能上可以分為分布式功能和數(shù)據(jù)功能,接下來這幾篇會就分布式功能展開。這里首先會對cluster作簡單概述,然后對cluster所涉及的主要功能詳細(xì)分析。
elasticsearch的集群功能代碼在cluster包中,通過ClusterService接口對外暴露。
cluster主要包括以下功能:
發(fā)現(xiàn)(Discovery),路由(routing),傳送功能(transport),集群狀態(tài)(clusterstates)等。
發(fā)現(xiàn)功能功能主要用于節(jié)點啟動后發(fā)現(xiàn)集群,master向所有節(jié)點發(fā)布集群狀態(tài),選舉master節(jié)點并引發(fā)集群節(jié)點變得事件;
routing記錄了集群中各個shard的位置,為節(jié)點提供數(shù)據(jù)信息;
transport是節(jié)點間交流的主要通道,elasticsearch應(yīng)用了netty框架實現(xiàn)了功能強大的transport功能;
集群狀態(tài)(clusterstates)實現(xiàn)了一些集群狀態(tài),同時提供了一些方法,在集群每次變得時,master節(jié)點都會重新構(gòu)建clusterstates,并將集群狀態(tài)發(fā)送給每個節(jié)點。
節(jié)點根據(jù)cluster狀態(tài)來確定某些操作是否能執(zhí)行。
下圖是顯示了clusterstate的主要Fields
clusterstate的version是clusterstate的版本每次被更新它都會增加,routingTables包含了集群中所有索引的位置信息,nodes是當(dāng)前集群中的所有節(jié)點,metaData是索引的一些元數(shù)據(jù),blocks包含了集群的阻塞狀態(tài),
集群一共有三種阻塞級別:read,write和matedata;
status集群的狀態(tài)有四種:unknown,RECEIVED,BEING_APPLIED,APPLIED。
集群功能的接口clusterservice的繼承關(guān)系如下所示:
所有實現(xiàn)都在InternalClusterService中,它同時繼承了AutoCloseAble接口和LifecycleComponent接口。
上圖為clusterservice的方法,這些方法包括集群的啟動與關(guān)閉,集群狀態(tài)修改和發(fā)布及節(jié)點間ping通信等,這些方法只是從從內(nèi)部看集群是不存在實體的,它的功能是由一個個節(jié)點實現(xiàn)的。因此對于集群的操作最終還是對每個節(jié)點的操作。單有些操作只能由master來進(jìn)行,有些則是所有節(jié)點都需要進(jìn)行的操作。每個加入集群后就會增加clusterstatelistener及l(fā)ocalmasterlisener,但是clusterstate的發(fā)布則只能由master節(jié)點來實現(xiàn)。
以上就是對clusterservice的概述,限于篇幅。下一篇會對其進(jìn)行詳細(xì)分析,希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot在自定義類中調(diào)用service層等Spring其他層操作
這篇文章主要介紹了SpringBoot在自定義類中調(diào)用service層等Spring其他層操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-06-06Springboot如何設(shè)置靜態(tài)資源緩存一年
這篇文章主要介紹了Springboot如何設(shè)置靜態(tài)資源緩存一年,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-11-11Java編程實現(xiàn)提取文章中關(guān)鍵字的方法
這篇文章主要介紹了Java編程實現(xiàn)提取文章中關(guān)鍵字的方法,較為詳細(xì)的分析了Java提取文章關(guān)鍵字的原理與具體實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-11-11Java Swing組件實現(xiàn)進(jìn)度監(jiān)視功能示例
這篇文章主要介紹了Java Swing組件實現(xiàn)進(jìn)度監(jiān)視功能,結(jié)合完整實例形式詳細(xì)分析了Java基于Swing組件實現(xiàn)進(jìn)度條顯示功能的具體操作技巧與相關(guān)注意事項,需要的朋友可以參考下2018-02-02Java數(shù)據(jù)庫連接池之DBCP淺析_動力節(jié)點Java學(xué)院整理
這篇文章主要為大家詳細(xì)介紹了Java數(shù)據(jù)庫連接池之DBCP的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-08-08