ElasticSearch分布式機制

2021-09-29 19:07:42 字數 2216 閱讀 8447

1、使用場景:

大型分布式日誌分析系統elk(elasticsearch logstash kibana)、大型電商商品搜尋系統、**站內搜尋、網盤搜尋引擎等。

2、elasticsearch的儲存結構:

elasticsearch是檔案儲存,是面向文件型資料庫,一條資料在這裡就是乙個文件,用json作為文件序列化的格式。

關係型資料庫---->資料庫—>表—>行—>列

elasticsearch—>索引(index)—>型別(type)—>文件(document)—>字段(fields)

3、index包含多個shard,每個shard都是乙個最小工作單元,承載部分資料,也可以建立索引和處理請求

shard分為primary shard和replica shard

primary shard:接收寫和讀的請求

replica shard是primary shard的副本,負責容錯以及承擔讀請求負載。

primary shard在建立索引時數量就已經確定了,replica shard的資料可以隨時修改

primary shard和自己的replica shard不能放在同乙個節點上,否則宕機時primary shard和副本都會丟失,起不到容錯的作用

每個document只存在於乙個primary shard中,不可能同時存在於多個primary shard中

shard負載均衡:增減節點時,shard會自動在nodes中負載均衡。例如有3個節點總共有25個shard要分配到3個節點上去,es會自動進行平均分配,以保持每個節點的均衡的讀寫負載請求。

4、集**現機制:新增的節點自動加入集群,並且接收到部分replica shard

5、擴容機制:

1)垂直擴容:伺服器總數不變,通過單台伺服器支撐更多的資料進行擴容

2)水平擴容:單台伺服器支撐的資料量保持不變,通過增加伺服器數量進行擴容(一般採取水平擴容)

垂直擴容是採用更強大的伺服器,成本非常高昂而且會有瓶頸,假設世界上最強大的伺服器容量是10t,但是當你的總資料量達到5000t時會需要很多臺最強大的伺服器;

資料量越來越大時採用越來越多的普通伺服器,效能比較一般,但是很多普通的伺服器組織在一起就可以構成強大的計算和儲存能力,這是業界經常採用的方案。

6、master節點推舉機制:

用於管理集群元資料(比如索引新增、刪除),索引元資料,節點的新增和移除,預設情況下會自動選擇出乙個master節點。

7、master選舉的三條原則:

1)對所有可以成為master的節點根據nodeid排序,每次選舉每個節點都把自己所知道的節點排一次序,每次選出第乙個節點,暫時認為它是master節點

2)如果對某乙個節點的投票數達到一定的值(可以成為master節點數n/2+1)並且該節點也可以選舉自己,那麼這個節點就是master節點。否則重新選舉。

3)對於brain split問題,需要把候選master節點最小值設定為可以成為master節點數n/2+1

8、brain split:

乙個集群因為網路原因導致多個master選舉出來而**。

9、replica shard容錯機制:

如果master節點宕機後,此時集群健康狀態為red,會自動重新選舉master;新的master是將replica提公升為primary shard,因為replica被公升級為primary了,此時replica並不齊全,健康狀態為yellow;

重啟宕機node,master複製replica到該node,但是該node使用原有的shard並同步宕機後的修改,即僅同步同步後丟失的資料,此時健康狀態為green。

10、單節點環境下建立indx的情況:

put /test_index

}

1)單node下建立乙個index,有3個primary shard和3個replica shard

2)此時集群的狀態是yellow

3)這個時候,只會將3個primary shard分配到僅有的乙個node上去,另外3個replica shard是無法分配的

4)集群可以正常工作,但是一旦出現節點宕機,資料全部丟失,而且集群不可用,無法承接任何請求

11、專案中常用的查詢方式:

wildcardquery:模糊查詢

termquery 精確匹配,不分詞 相當於 等於 =

must 相當於 與 and =

must not 相當於 not !=

should 相當於 or |

filter 過濾

ElasticSearch分布式架構

it技術精華網 今天介紹下elasticsearch的分布式架構,如果你熟悉cassandra hadoop mongodb,你會發現elasticsearch裡面有很多他們的影子,沒錯,elasticsearch吸收了目前主流的分布式系統的很多特性,下面簡單介紹一把。之前翻譯過一篇 譯 搜尋引擎與...

ElasticSearch 分布式集群

elasticsearch用於構建高可用和可擴充套件的系統。擴充套件的方式可以是購買更好的伺服器 縱向擴充套件 vertical scale or scaling up 或者購買更多的伺服器 橫向擴充套件 horizontal scale or scaling out elasticsearch雖然...

ElasticSearch 分布式集群

elasticsearch用於構建高可用和可擴充套件的系統。擴充套件的方式可以是購買更好的伺服器 縱向擴充套件 vertical scale or scaling up 或者購買更多的伺服器 橫向擴充套件 horizontal scale or scaling out elasticsearch雖然...