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