1、首先說一些分片(shard)是什么?
ES中所有數據均衡的存儲在集群中各個節點的分片中,會影響ES的性能、安全和穩定性
每個shard都是一個最小工作單元,承載部分數據,lucene實例,完整的建立索引和處理請求的能力,單台機器無法存儲大量數據,es可以將一個索引中的數據切分為多個shard,分布在多台服務器上存儲。有了shard就可以橫向擴展,存儲更多數據,讓搜索和分析等操作分布到多台服務器上去執行,提升吞吐量和性能
2、primary shard 和replica shard是什么?
primary shard和replica shard,每個document肯定只存在於某一個primary shard以及其對應的replica shard中,不可能存在於多個primary shard
replica shard是primary shard的副本,負責容錯,以及承擔讀請求負載
primary shard的數量在創建索引的時候就固定了,replica shard的數量可以隨時修改
primary shard不能和自己的replica shard放在同一個節點上(否則節點宕機,primary shard和副本都 丟失, 起不到容錯的作用),但是可以和其他primary shard的replica shard放在同一個節點上
3、分布式架構原理
es是基於lucene封裝的的一個分布式搜索引擎,核心思想就是在多個機器上啟動了多個es進程,es的基本單位是索引,然后每個索引被拆分成多個shard分布在不同的機器上,每個shard都會存儲部分數據,簡單的說就是每個shard都有一個primary shard,負責寫入數據,然后每個shard都會有多個的replica shard(備份),我們寫入數據的時候只能往primary shard上寫,讀取可從primary 和replica shard 上讀取。寫入數據之后,就會往replica上同步數據,這樣每個數據都有多個備份,就算其中某個宕機了,還有其他shard繼續工作,es有多個節點,會自動選舉出一個節點作為master節點,主要負責管理維護元數據,扶着切換primary shard和replica shard的身份,當master節點掛了之后,就會自動選舉新的節點為master節點,如果是非master節點宕機了,master節點就會讓那台機器上的primary shard的身份轉移到其他機器上的replica shard 上,待修復了機器重啟之后,master會讓缺失的replica shard 分配過去 ,這就是es分布式架構的原理。