Es知識整理

2022-09-19 10:15:09 字數 1440 閱讀 4706

一、es是如何實現分布式的

1.es本身基於lucene,高度支援分布式的核心思想就在於,在多個伺服器上啟動多個es程序例項,組建了一套es集群。

2.其次,因為shard分片的應用,非常靈活的支援資料量橫向擴充套件(只需要重建乙個索引,多加shard,把資料遷進去)。再者說shard的資料其實是有多個備份,每個shard都會有乙個primary shard,負責寫資料,寫入資料後,會將資料同步到其他的replica shard上。(ps : 主shard 和 複製shard 可以不在相同的伺服器上,如果某個機器宕機了,別的機器上依然有資料備份)

3.es集群會自動選舉乙個master節點, 負責一些管理工作(比如維護索引元資料、負責切換 primary shard 和 replica shard 身份等),如果master節點宕機了,會重新選舉乙個新的master。

4.非master節點宕機時,master節點會讓宕機節點的primary shard 身份轉移給其他節點。如果宕機節點修好了,那它也只能是replica shard了。(保證集群正常)。

二、es 寫資料操作

1.客戶端隨機選了乙個節點1觸發請求,該節點1成為 協調節點。

2.協調節點對這個寫入的document進行路由,將資料傳送給有primary shard的節點2。

3.節點2寫資料,並將資料同步給所有的replica shard節點。

4.協調節點如果發現 primary shard 和 各 replica shard 都將資料搞定之後,響應客戶端。

三、es讀資料操作

1.客戶端隨機選了乙個節點1觸發請求,該節點1成為 協調節點。

2.協調節點對請求過來的文件id進行hash路由,使用隨機輪訓演算法(保證讀資料負載均衡)從所有的primary shard 的node 和複製節點的node裡挑乙個節點2,將請求指給對應的節點2。

3.節點2將資料document 響應給協調節點1。

4.協調節點1 將資料響應給客戶端。

四、es搜尋資料操作

1.客戶端隨機選了乙個節點1觸發請求,該節點1成為 協調節點。

2.協調節點將搜尋的內容**到所有的shard。

3.每個shard 將自己的搜尋結果 其實也就是一些document_id。返回給協調節點1。協調節點進行合併、排序、分頁等。

4.協調節點1根據每個shard發揮的document_id去各個節點上拉去實際的document資料,最終響應給客戶端。

五、es為什麼快

首先要知道什麼是倒排索引,引用大佬的圖。

著重注意兩點:

參考大佬文章:

前端知識整理 ES6

es6 1 模組化 export default export function fn1 export function fn2 import util from util1.js import from util2.js 2 使用babel npm install babel core babel...

oracle 知識整理

刪除使用者 例如建立了乙個使用者 a,要刪除它可以這樣做 connect sys 密碼 as sysdba drop user a cascade 就這樣使用者就被刪除了 使用者修改密碼,解鎖 alter user scott identified by alter user scott accou...

ORACLE PROFILE 知識整理

1 配置檔案 profile 是乙個只允許具有create profile 的許可權的使用者設定口令管理和資源限制的物件。2 建立資料庫時會建立乙個預設 default 配置檔案,該檔案對所有資源不做任何限制。3 乙個使用者只能擁有1個配置檔案 4 配置檔案分兩部分,資源引數 resource pa...