【Elastic Search權威指南 讀書小記4】ES之主從同步

有道雲筆記:https://note.youdao.com/ynoteshare1/index.html?id=682ce6287c26572497e56cc1967b9ba5&type=note

路由文檔到分片

shard = hash(routing) % number_of_primary_shards

routing 值是一個任意字符串,它默認是 _id 但也可以自定義。這個 routing 字符串通過哈

希函數生成一個數字,然後除以主切片的數量得到一個餘數(remainder),餘數的範圍永遠

00是 0 到 number_of_primary_shards - 1 ,這個數字就是特定文檔所在的分片

與之類似的redis集羣則是用crc16配合算法決定數據歸屬槽,crc16(key)&16383

 

數據的主從同步

1. 客戶端給 Node 1 發送新建、索引或刪除請求。

2. 節點使用文檔的 _id 確定文檔屬於分片 0 。它轉發請求到 Node 3 ,分片 0 位於這個節

點上。

3. Node 3 在主分片上執行請求,如果成功,它轉發請求到相應的位於 Node 1 和 Node 2 的

複製節點上。當所有的複製節點報告成功, Node 3 報告成功到請求的節點,請求的節點

再報告給客戶端。

 

默認replication爲sync,同步複製,可以通過修改參數實現一步。不過async 複製

可能會因爲在不等待其它分片就緒的情況下發送過多的請求而使Elasticsearch過載。

 

檢索文檔

對於讀請求,爲了平衡負載,請求節點會爲每個請求選擇不同的分片——它會循環所有分片

副本。

可能的情況是,一個被索引的文檔已經存在於主分片上卻還沒來得及同步到複製分片上。這

時複製分片會報告文檔未找到,主分片會成功返回文檔。一旦索引請求成功返回給用戶,文

檔則在主分片和複製分片都是可用的

自帶負載均衡,平衡檢索。不過在複製分片同步數據之前會返回未找到。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章