如果我們要擴展到6個以上的節(jié)點,要怎么做?
主分片的數(shù)量在創(chuàng)建索引時已經(jīng)確定。實際上,這個數(shù)量定義了能存儲到索引里數(shù)據(jù)的最大數(shù)量(實際的數(shù)量取決于你的數(shù)據(jù)、硬件和應(yīng)用場景)。然而,主分片或者復(fù)制分片都可以處理讀請求——搜索或文檔檢索,所以數(shù)據(jù)的冗余越多,我們能處理的搜索吞吐量就越大。
復(fù)制分片的數(shù)量可以在運行中的集群中動態(tài)地變更,這允許我們可以根據(jù)需求擴大或者縮小規(guī)模。讓我們把復(fù)制分片的數(shù)量從原來的1
增加到2
:
PUT /blogs/_settings
{
"number_of_replicas" : 2
}
圖5:增加number_of_replicas
到2:
從圖中可以看出,blogs
索引現(xiàn)在有9個分片:3個主分片和6個復(fù)制分片。這意味著我們能夠擴展到9個節(jié)點,再次變成每個節(jié)點一個分片。這樣使我們的搜索性能相比原始的三節(jié)點集群增加三倍。
當然,在同樣數(shù)量的節(jié)點上增加更多的復(fù)制分片并不能提高性能,因為這樣做的話平均每個分片的所占有的硬件資源就減少了(譯者注:大部分請求都聚集到了分片少的節(jié)點,導(dǎo)致一個節(jié)點吞吐量太大,反而降低性能),你需要增加硬件來提高吞吐量。
不過這些額外的復(fù)制節(jié)點使我們有更多的冗余:通過以上對節(jié)點的設(shè)置,我們能夠承受兩個節(jié)點故障而不丟失數(shù)據(jù)。