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