分布式系統的可用性與擴充性
-
高可用性
服務可用性:允許有節點停止服務
資料可用性:部分節點丢失,不會丢失資料
-
可擴充性
請求量/資料的不斷增長時,可将資料分布到其他節點上
Elasticsearch分布式架構
1.優點:
可對存儲水準擴容
提高系統可用性、部分節點停止服務,整個叢集服務不受影響
2. 分布式架構
不同叢集通過叢集名來進行區分
一個叢集可有一個及一個以上的節點
文檔(Document)
- elasticsearch 是面向文檔的,文檔是所有可搜尋資料的最小機關
- 文檔會被序列化為JSON格式,儲存在elasticsearch中
- 每個文檔都有一個Unique ID,【可自己指定或通過es自動生成】
文檔的中繼資料
中繼資料:用于标注文檔的相關資訊
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2cs0TPB1kMFpnT3NmeNBDOsJGcohVYsR2MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL1QzNxQzNxYTM4EDMxkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
- _index :文檔所屬的索引名
- _type:文檔所屬的類型名
- _id:文檔唯一ID
- _source:文檔的原始JSON資料
- _version:文檔的版本資訊 【當有大量資料并發讀寫時,版本資訊可以解決讀寫沖突問題】
- _score:相關性打分
索引
-
index ——索引 是文檔的容器,是一類文檔的結合
index展現了邏輯空間概念:每個索引都有自己的Mapping定義,用于定義包含的文檔的字段名和字段類型
shard展現了實體空間的概念:索引中的資料分散在shard上
-
索引的mapping與settings
mapping 定義文檔字段的類型
setting定義不同的資料分布
節點
-
節點是一個es的執行個體
本質是一個JAVA程序
一個機器可運作多個es進行,建議一個機器隻運作一個
- 每個節點都有名字
- 每個節點啟動後,會配置設定一個UID,儲存在data目錄
Master-eligible nodes
- 每個節點啟動後,預設是一個master-eligible節點【可設定禁止】
- master-eligible節點可參加選主流程,成為master節點
- 第一個節點啟動,會自己選舉為master節點
-
每個節點都儲存了叢集狀态,隻有master節點可修改叢集的狀态資訊
叢集狀态資訊,維護了【所有的節點資訊、所有的索引及其相關的mapping和setting的資訊、分片的路由資訊】
data node
可以儲存資料的節點,負責儲存分片資料
coordinating node
負責接收client請求,将請求分發到合适的績點,最終将結果彙總傳回client
每個節點預設起到了coordinating node的職責
分片
-
主分片,解決資料水準擴充,可将資料分布到叢集内所有節點上
一個分片是一個運作的lucene的執行個體
主分片數索引建立時指定,不許修改,除非Reindex
-
副本,解決資料高可用,分片是主分片的拷貝
副本數可動态調整
增加副本數,可在一定程度上提高服務的可用性