十 自定義分片個數

2022-09-04 21:03:17 字數 2212 閱讀 7335

前面es集群詳解說過了es有主分片跟副本分片,副本分片是主分片的備份,且副本分片數量可以自定義。

目前集群狀態,可以看到在沒有進行配置的情況下,預設副本分片數是1個,主分片數也是1個

1、預設分片數規則

7.x版本之前預設:5個分片,1個副本分片

7.x版本之後預設:1個分片,1個副本分片

通過前面的實驗我們知道,es預設是1個主分片,1個副本分片,副本分片是主分片資料的備份。那麼5個分片是怎麼回事呢?

5個分片,是將一塊資料分成5塊,分布在集群各個伺服器上。拿linux索引舉例,5個分片就是將linux索引資料分為5塊,這5塊分片總和才是完整的linux索引的資料。

2、自定義副本分片數

通過kibana控制台使用檢視命令get檢視預設副本分片數為1

number_of_shards為分片數

number_of_replicas為副本分片數

執行後續的put修改命令,將副本數修改為2個,修改後的效果如下圖所示

我們可以看到,linux索引的主分片在es03伺服器上,es01跟es02伺服器放置的是副本分片,即2個副本分片

如果定義成了300個副本會變成什麼樣呢?

我們把前面提到的number_of_replicas的值修改為300,效果如下圖所示

從圖可知,2個副本分片在es01跟es02伺服器上,還有298個副本分片無家可歸,需要再建立298個節點才行,此時的集群顏色為黃色,因為定義的副本分片數跟實際的副本分片數不一致。

3、定義分片數

我們建立乙個名為linux76的索引,並定義為3個分片數,0個副本數檢視一下效果

效果如下圖所示

這時可以發現,linux76索引有3個主分片,分布在es01,es02,es03伺服器上,框內數字分別以0,1,2標識。

這是linux76索引資料被分為了3塊,分別存放在這三颱伺服器上了。

對於linux76索引而言,如果這三颱機器宕機了一台,資料就不完整了。

修改linux76索引的副本分片個數,定義為1個

修改後效果如下圖所示

這時針對linux76索引而言,宕機了這三颱伺服器中的任何一台,資料都是完整的,可通過其他伺服器上的分片保證資料的完整性。

注意,定義分片數只能在建立索引時定義

4、應用場景

1)根據節點數配置

在2個節點的情況下

預設即可,即1個主分片,1個副本分片

在3個節點的情況下

重要資料:1個主分片,2個副本分片

不重要的資料:1個主分片,1個副本分片

2)根據場景設定

日誌收集:1個副本3個分片

搜尋功能:2副本3分片

日誌收集需要的是寫,所以分片數越多越好

搜尋功能提供的是讀,所以副本數越多效果越好

5、總結

1、副本分片數可以隨時修改(即建立索引時,或建立索引後都能修改)

2、索引一旦建立完成,分片數就不能修改了

MyCat分片規則之自定義範圍分片

下面通過乙個簡單的示例,說明在mycat中如何實現範圍分片。a 建立資料庫和表 create database range1 use range1 create table user id bigint not null primary key,name varchar 20 create data...

docker學習(十) 自定義網路

網路模式 檢視幫助文件docker network help 我們使用這個命令來建立一下網路 先把容器都清楚保證環境的乾淨 先測試下 建立乙個橋接網路的tomcat01 其實這個命令和不使用是一樣的,因為docker給我們建立容器的時候這個引數是預設的即 docker run d p name to...

自定義 如何自定義協議

何為自定義協議,其實是相對標準協議來說的,這裡主要針對的是應用層協議 常見的標準的應用層協議如http ftp smtp等,如果我們在網路通訊的過程中不去使用這些標準協議,那就需要自定義協議,比如我們常用的rpc框架 dubbo,thrift 分布式快取 redis,memcached 等都是自定義...