ES 筆記三十二:文件分散式儲存
CrazyZard發表於2019-12-18
- 文件會儲存在具體的某個主分片和副本分片上:例如文件1,會儲存在P0 R0分片上
- 文件到分片的對映演算法
- 確保文件能均勻分佈在所用分片上,充分利用硬體資源,避免部分機器空閒,部門機器繁忙
- 潛在的演算法
- 隨機/Round Robin.當查詢文件1,分片數很多,需要多次查詢才能查檔文件1
- 維護文件到分片的對映關係,當文件資料量大的時候,維護成本高
- 實時計算,通過文件1,自動算出,需要去哪個分片上獲取文件
- shard = hash(_routing) % number_of_primary_shards
- Hash 演算法確保文件均勻分散到分片中
- 預設的_routing 值是文件id
- 可以自行制定routing數值,例如用相同國家的商品,都分配到制定的shard
- 設定Index Setting 後,Primary 數,不能隨意修改的根本原因
- 順序: index -> hash -> route -> delete -> index -> success -> response
- 順序 :detele -> hash&route -> delete -> delete replica -> success -> deleted -> response
- 可以設定Index Settings ,控制資料的分片
- Primary Shard 的值不能修改,修改需要重新Index。預設值是5,從版本7開始,預設值為1
- 索引寫入資料後,Replica值可以修改。增加副本,可提高大併發下的讀取效能
- 通過控制叢集的節點數,設定Primary Shard 數,實現水平擴充套件