ElasticSearch架構原理入門篇

「這是我參與8月更文挑戰的第10天,活動詳情查看:8月更文挑戰node

1、ElasticSearch 節點類型

在ElasticSearch中主要分爲兩類節點,一類是Master節點,一類是DataNode。json

1. Master節點

當某個節點啓動後,而後使用Discovery機制找到集羣中的其餘節點,並創建鏈接。並從候選主節點中選出一個Master節點服務器

Discovery機制:discovery.seed_hosts: ["s201", "s202", "s203"]微信

候選主節點:cluster.initial_master_nodes: ["moe-es-node1", "moe-es-node2", "moe-es-node3"]markdown

Master節點主要職責

  • 管理索引:建立索引、刪除索引、分配分片
  • 維護元數據
  • 管理集羣節點狀態
  • 不負責數據寫入和查詢

2. DataNode節點

在ElasticSearch集羣中,會有N個DataNode節點。app

DataNode節點主要負責

  • 數據寫入
  • 數據檢索

大部分ElasticSearch的壓力都在DataNode節點上,在生產環境中,內存最好配置大一些。分佈式

2、分片和副本機制

1. shard 分片

ElasticSearch是一個分佈式的搜索引擎,索引的數據也是分紅若干部分,分佈在不一樣的服務器節點中,意思就是一臺機器存不下,多臺機器來存儲。分佈在不一樣服務器節點中的索引數據,就是分片(shard)。ElasticSearch會自動管理分片,若是發現分片不均衡,就會自動遷移。post

一個索引(index)由多個shard(分片)組成,而分片是分佈在不一樣服務器節點上的。學習

2. replica 副本

爲了保證ElasticSearch分片(shard)的高可用、容錯性,ElasticSearch會對分片(shard)引入replica(副本)機制,每個分片都有對應的副本分片。搜索引擎

每一個分片都會有一個主分片(Primary Shard),若干個副本分片(Replica Shard)

Primary Shard 和 Replica Shard不在同一個服務器節點上。

3. 建立索引時指定分片和副本

建立指定分片數量、副本數量的索引

PUT /moe_article
{
  "mappings": {
    "properties": {
    }
  },
  "settings": {
    "number_of_shards": 3,
    "number_of_replicas": 2
  }
}
複製代碼

假若有三臺服務器節點

number_of_shards:3個主分片

number_of_replicas:2個副本

image.png

3、ElasticSearch 重要工做流程

1. ElasticSearch 文檔寫入原理

image.png

  1. 假如選擇了Node2(DataNode)發送請求,此時Node2稱爲coordinating node(協調節點)
  2. 計算獲得文檔要寫入的分片 shard = hash(routing) % number_of_primary_shards routing 是一個可變值,默認是文檔的 _id
  3. coordinating node會進行路由,將請求轉發給其餘DataNode(對應某個primary shard,假如主分片在Node1節點上)
  4. Node1上的Primary Shard處理請求,寫入數據到索引庫中,並將數據同步到其餘的Replica Shard中
  5. Primary Shard 和 Replica Shard都保存完文檔後,返回客戶端。

2. ElasticSearch 檢索原理

image.png

  1. 假如選擇了Node2,此時Node2稱爲coordinating node(協調節點)
  2. 協調節點(Coordinating Node)將查詢請求廣播到每個數據節點,這些數據節點的分片會處理該查詢請求。
  3. 每一個分片進行數據查詢,將符合條件的數據放在一個優先隊列中,並將這些數據的文檔ID、節點信息、分片信息返回給協調節點。
  4. 協調節點將全部的結果進行彙總,並進行全局排序。
  5. 協調節點向包含這些文檔ID的分片發送get請求,對應的分片將文檔數據返回給協調節點,最後協調節點將數據返回給客戶端。

4、總結

ElasticSearch節點類型分爲 Master(主節點)和 DataNode(數據節點)。分片(Shard)分爲 Primary Shard(主分片)和 Replica Shard(副分片)。分片(Shard)能夠支撐海量數據,解決單機磁盤容量問題,副本(Replica)能夠保證數據不丟失。

歡迎你們關注微信公衆號(MarkZoe)互相學習、互相交流。

相關文章
相關標籤/搜索