首先ES是基於Lucene這個非常成熟的索引方案,另加上一些分散式的實現:叢集,sharding,replication等。
ES的優勢主要可以看以下幾個方面:
橫向可擴充套件性:只需要增加一臺伺服器,做一點兒配置,啟動一下ES程序就可以併入叢集;
分片機制提供更好的分佈性:同一個索引分成多個分片(sharding),這點類似於HDFS的塊機制;分而治之的方式來提升處理效率,相信大家都不會陌生;
高可用:提供複製(replica)機制,一個分片可以設定多個複製,使得某臺伺服器宕機的情況下,叢集仍舊可以照常執行,並會把由於伺服器宕機丟失的複製恢復到其它可用節點上;這點也類似於HDFS的複製機制(HDFS中預設是3份複製);
當然,也要知道其不足之處:
各節點的一致性問題:其預設的機制是透過多播機制,同步元資料資訊,但是在比較繁忙的叢集中,可能會由於網路的阻塞,或者節點處理能力達到飽和導致各節點元資料不一致——也就是所謂的腦裂問題,這樣會使叢集處於不一致狀態。目前並沒有一個徹底的解決方案來解決這個問題,但是可以透過將工作節點與元資料節點分開的部署方案來緩解這種情況。
沒有細緻的許可權管理機制,也就是說,沒有像MySQL那樣的分各種使用者,每個使用者又有不同的許可權。所以在操作上的限制需要自己開發一個系統來完成;
總結:不過從優勢與不足的對比看,我看還是瑕不掩瑜,是值得一試的技術。
首先ES是基於Lucene這個非常成熟的索引方案,另加上一些分散式的實現:叢集,sharding,replication等。
ES的優勢主要可以看以下幾個方面:
橫向可擴充套件性:只需要增加一臺伺服器,做一點兒配置,啟動一下ES程序就可以併入叢集;
分片機制提供更好的分佈性:同一個索引分成多個分片(sharding),這點類似於HDFS的塊機制;分而治之的方式來提升處理效率,相信大家都不會陌生;
高可用:提供複製(replica)機制,一個分片可以設定多個複製,使得某臺伺服器宕機的情況下,叢集仍舊可以照常執行,並會把由於伺服器宕機丟失的複製恢復到其它可用節點上;這點也類似於HDFS的複製機制(HDFS中預設是3份複製);
當然,也要知道其不足之處:
各節點的一致性問題:其預設的機制是透過多播機制,同步元資料資訊,但是在比較繁忙的叢集中,可能會由於網路的阻塞,或者節點處理能力達到飽和導致各節點元資料不一致——也就是所謂的腦裂問題,這樣會使叢集處於不一致狀態。目前並沒有一個徹底的解決方案來解決這個問題,但是可以透過將工作節點與元資料節點分開的部署方案來緩解這種情況。
沒有細緻的許可權管理機制,也就是說,沒有像MySQL那樣的分各種使用者,每個使用者又有不同的許可權。所以在操作上的限制需要自己開發一個系統來完成;
總結:不過從優勢與不足的對比看,我看還是瑕不掩瑜,是值得一試的技術。