ES分布式特性與分布式搜尋的機制 筆記

2021-09-29 10:46:01 字數 1309 閱讀 7467

不同的集群通過名字來區分

每個節點都儲存了集群狀態資訊

只有master節點才能修改集群狀態資訊,並負責同步給其他節點

當出現網路問題時,乙個節點與其他節點無法連通,其他節點會選出乙個新master,那乙個節點會認為自己是master節點,那麼集群中就會維護兩份集群狀態資訊,當網路恢復時,就無法恢復資料

原始狀態

node1:p1,r3

node2:p2,r1

node3:p3,r2

當node2宕機後,主分片2、副分片1丟失,首先會把在node3上的副分片2提公升為主分片2,變成

node1:p1,r3

node3:p3,p2

然後重新分配乙個r2、r1到兩個節點上,變成

ndoe1:p1,r2,r3

node2:p2,p3,r1

分到不同的分片是通過實時計算,該文件被分派到哪個節點上去了

文件的路由計算是在ordinary node進行的

使用者更新乙個文件的流程

使用者刪除乙個文件的流程

上圖是es中寫入乙個新文件的過程:

ps:因為更新文件的時候,es會先刪除,在建立,所以更新也是近實時的

雖然refresh 了,但文件還是在檔案系統快取裡的,也就是還是在記憶體裡的,不能夠應對斷電等故障,所以有了這個transaction log的機制,每個分片有乙個transaction log

flush實際上就是將剛剛的在檔案快取(記憶體)裡的segment落盤為主的操作

因為flush操作比較重,所以預設30分鐘執行一次,但如果transaction log滿了也會執行

隨著時間的流逝,segment會很多,es會定期把多個segment合併成乙個,合併操作被稱為merge,同時merge操作也會把.del檔案裡記錄的文件做乙個真正的刪除

es的搜尋會分為兩步:

query和fetch

相關性演算法不準確

分布式 分布式鎖

本質是利用redis的setnx 方法的特性來加鎖,setnx 即key不存在則設定key,否則直接返回false,要求在分布式系統中使用同乙個redis服務,以下提供兩種解決方案 1 直接使用redistemplate 這其實並不能完全保證高併發下的安全問題,因為可能在鎖過期之後該執行緒尚未執行完...

分布式 分布式事務

是資料庫執行過程中的乙個邏輯單位,由乙個有限的資料庫操作序列構成。事務的acid四大特性 原子性 atomicity 事務作為乙個整體被執行。一致性 consistency 從乙個一致的狀態轉換到另乙個一致的狀態。隔離性 isolation 多個事務併發執行時,併發事務之間互相影響的程度。永續性 d...

分布式之分布式事務

被人問到分布式事務,之前學rabbitmq 的時候學到過rabbitmq 高階的事務,因為沒有用過,所有沒有回答好。這裡總結一下。1.單機版事務。事務的四大特性 acid a.原子性 b.一致性 c.隔離性 d.永續性 單機事務可以通過設定事務的隔離級別 參見spring 的事務隔離級別 2.分布式...