官網頁面:https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-replication.htmlhtml
本文是對官網頁面的粗糙譯文,哈哈,方便本身理解。併發
shard: 分片elasticsearch
replication: 副本ide
ES的索引被劃分紅多個分片,而且每一個分片能夠有多個拷貝,當對索引做出更新(如添加、刪除文檔)操做時,須要保持分片與其副本同步。保持分片及其拷貝信息同步和提供讀服務咱們稱之爲數據副本模型。ui
數據副本模型基於主-備模型,須要從分片拷貝組中找出一個分片做爲主分片,其餘的做爲副本分片。主分片承擔索引操做主要的入口,負責校驗操做並保證其正確性。若主分片接受索引操做,它也要負責將這些操做複製到它的副本分片上。htm
ES的索引操做首先要肯定涉及的索引分片組,肯定以後,在內部這個操做會被轉發到分片組的主分片上,主分片校驗操做,並轉發到組內的副本分片上。可能有一些副本分片處於離線狀態,主分片沒有必要把操做發送到全部的副本分片上。替代方案是,ES的主節點維護一個列表,記錄可靠的副本分片,主分片只須要把操做發送到列表中的副本分片便可。blog
主分片執行如下基本流程:索引
在執行的過程當中,主分片可能出錯。這時,集羣主節點會從分片列表中選出新的主分片,這個操做被轉發到主分片繼續執行。錯誤的分片會被移除副本隊列,主節點會從新拷貝一份分片,並更新集羣狀態信息。隊列
當一個節點收到讀請求時,它會轉發到全部包含相關分片的節點上,收集節點的響應並響應客戶端。文檔
讀索引基本流程以下:
當副本查詢失敗時,協調節點會選取所在組的其餘副本節點來執行查詢。
閱讀參考:
[1] https://www.elastic.co/blog/tracking-in-sync-shard-copies
[2] https://codingexplained.com/coding/elasticsearch/understanding-replication-in-elasticsearch
[3] https://codingexplained.com/coding/elasticsearch/understanding-sharding-in-elasticsearch
[4] https://codingexplained.com/coding/elasticsearch/introduction-elasticsearch-architecture