国产chinesehdxxxx野外,国产av无码专区亚洲av琪琪,播放男人添女人下边视频,成人国产精品一区二区免费看,chinese丰满人妻videos

SolrCloud:基于規(guī)則的副本放置

2018-01-10 10:50 更新

當(dāng)Solr需要將節(jié)點分配給集合時,它可以自動為它們分配,也可以指定一組節(jié)點來創(chuàng)建副本。

對于非常大的群集,很難指定確切的節(jié)點名稱,但它仍然不能精確地控制如何選擇節(jié)點。用戶應(yīng)完全控制分配給每個集合、碎片和副本的節(jié)點的位置。這有助于在整個群集上優(yōu)化配置硬件資源。

基于規(guī)則的副本分配允許創(chuàng)建規(guī)則來確定副本在群集中的位置。將來,此功能將有助于在系統(tǒng)停機或需要更高的吞吐量時自動添加或刪除副本。這使得對群集的管理更加不干預(yù)。

此功能在以下情況使用:

  • 集合創(chuàng)建
  • 碎片創(chuàng)建
  • 副本創(chuàng)建
  • 碎片分各

常見用例

有以下幾種情況可以使用這個功能。下面列出了一些可以實施的規(guī)則:

  • 不要將多個副本分配給主機。
  • 將所有副本分配給具有超過100GB可用磁盤空間的節(jié)點,或者,在存在更多磁盤空間的情況下分配副本。
  • 不要在給定的主機上分配任何副本,因為我想在那里運行一個overseer。
  • 只在機架中分配一個分片的一個副本。
  • 在承載少于5個核心的節(jié)點中分配副本。
  • 在承載最小內(nèi)核數(shù)的節(jié)點中分配副本。

規(guī)則條件

規(guī)則是一個節(jié)點必須滿足的一組條件,然后才能創(chuàng)建一個副本核心。

有以下三種可能的情況:

  • 碎片:這是一個碎片或通配符的名稱(*表示所有碎片)。如果未指定碎片,則該規(guī)則適用于整個集合。
  • 副本:這可以是數(shù)字或通配符(*表示任何數(shù)字從零到無窮大)。
  • 標簽:這是集群中可用于規(guī)則的節(jié)點的屬性,例如“freedisk”、“cores”、“rack”、“dc”等。標簽名稱可以是自定義字符串。如果創(chuàng)建一個自定義標簽,則一個告密者負責(zé)提供標簽和值。下面的Snitches部分描述了如何添加自定義標簽,并定義了六個預(yù)定義的標簽(核心(cores),freedisk,主機(host),端口(port),節(jié)點(node)和sysprop)。

規(guī)則運算符

條件可以有以下運算符之一來設(shè)置規(guī)則的參數(shù):

  • 等于(不需要運算符):tag:x 表示標簽值必須等于'x'。
  • 大于(>):tag:>x 表示大于'x'的標簽值;x必須是一個數(shù)字。
  • 小于(<):tag:<x 表示小于'x'的標簽值;x必須是一個數(shù)字。
  • 不等于(!):tag:!x 表示標簽值不能等于'x';對字符串值執(zhí)行等號檢查。

Fuzzy運算符(?)

這可以用作任何條件的后綴。這將首先試圖嚴格滿足規(guī)則。如果Solr找不到足夠的節(jié)點來匹配標準,它會嘗試找到下一個可能不符合標準的最佳匹配。例如,如果我們有一個規(guī)則:freedisk:>200~,Solr將嘗試在具有超過200GB可用磁盤空間的節(jié)點上分配此集合的副本。如果這是不可能的,將選擇具有最多可用磁盤空間的節(jié)點。

在等號間選擇

首先對這些節(jié)點進行排序,然后使用規(guī)則對它們進行排序。這確保即使許多節(jié)點匹配規(guī)則,最佳節(jié)點也被挑選出來用于節(jié)點分配。例如,如果存在諸如以下規(guī)則:freedisk:>20,則首先在磁盤空間對節(jié)點進行降序排序并且首先拾取具有最多磁盤空間的節(jié)點?;蛘撸绻?guī)則是:cores:<5,則節(jié)點按照核心數(shù)量升序排序,并且首先拾取具有最少內(nèi)核數(shù)的節(jié)點。

新碎片規(guī)則

規(guī)則與集合狀態(tài)一起被保存。所以,當(dāng)一個新的副本被創(chuàng)建時,系統(tǒng)將分配滿足規(guī)則的副本。當(dāng)使用Collection API的CREATESHARD命令創(chuàng)建新的分片時,請確保已經(jīng)為該分片名稱創(chuàng)建了特定的規(guī)則??梢允褂? MODIFYCOLLECTION命令更改規(guī)則。但是,如果規(guī)則沒有指定明確的分片名稱,則不需要這樣做。例如,諸如規(guī)則:shard:shard1,replica:*,ip_3:168:將不適用于所創(chuàng)建的任何新的碎片。但是,如果你的規(guī)則是replica:*,ip_3:168,那么它將適用于任何新創(chuàng)建的碎片。

這同樣適用于碎片分割。碎片拆分的處理方式與碎片創(chuàng)建的方式完全相同。即使 shard1_1 和 shard1_2 可能是從 shard1 創(chuàng)建的,規(guī)則將它們視為獨立、不相關(guān)的碎片。

Snitch

標記值來自一個名為Snitch的插件。如果在規(guī)則中有一個名為“rack”的標簽,那么必須為Snitch提供集群中每個節(jié)點的“rack”值。一個小告警實現(xiàn)了Snitch接口。Solr默認提供了一個默認的snitch,它提供了以下標簽:

  • 核心(cores):節(jié)點中的核心數(shù)量
  • freedisk:節(jié)點中可用的磁盤空間
  • 主機(host):節(jié)點的主機名
  • 端口(port):節(jié)點的端口
  • 節(jié)點(node):節(jié)點名稱
  • 角色(role):節(jié)點的角色。唯一支持的角色是“overseer”
  • ip_1,ip_2,ip_3,ip_4:這些是每個節(jié)點的ip分段。例如,在具有IP 192.168.1.2的主機中:ip_1 = 2,ip_2 =1,ip_3 = 168和`IP_4 = 192`
  • sysprop.{PROPERTY_NAME}:這些是從系統(tǒng)屬性可用的值。sysprop.key表示在節(jié)點啟動時傳遞給-Dkey=keyValue的節(jié)點的值。有可能使用像sysprop.key:expectedVal,shard:*的規(guī)則

如何配置Snitches

可以對一組規(guī)則使用一個或多個snit。如果規(guī)則只需要默認的snitch標簽,就不需要顯式配置。例如:

snitch=class:fqn.ClassName,key1:val1,key2:val2,key3:val3

如何收集標簽值:

  1. 確定規(guī)則中的一組標簽
  2. 創(chuàng)建指定的Snitches的實例。默認的snitch總是被創(chuàng)建。
  3. 詢問每個Snitch是否可以為任何標簽提供值。如果存在一個標簽沒有snitch,分配也會失敗。
  4. 在識別出Snitches之后,它們?yōu)榧褐械拿總€節(jié)點提供標簽值。
  5. 如果給定節(jié)點沒有獲得標簽的值,則不能參與分配。

副本放置示例

在任何節(jié)點上保留少于2個副本(最多1個副本)

對于這個規(guī)則,我們用“小于2”的運算符來定義replica條件,并使用預(yù)定義的標簽node來定義具有任何名稱的節(jié)點。

replica:<2,node:*
// this is equivalent to replica:<2,node:*,shard:**. We can omit shard:** because ** is the default value of shard

對于給定的分片,在任何節(jié)點上保留少于2個副本

對于這個規(guī)則,我們使用shard條件來定義任何碎片,replica運算符為“少于2”的條件,最后是一個預(yù)定義的標記,node用于定義具有任何名稱的節(jié)點。

shard:*,replica:<2,node:*

將shard1中的所有副本分配到機架730

此規(guī)則將shard條件限制為“shard1”,但將任何數(shù)量的副本限制在內(nèi)。我們還引用了一個名為“rack”的自定義標簽。在定義這個規(guī)則之前,我們需要配置一個為標簽提供值的自定義Snitch rack。

shard:shard1,replica:*,rack:730

在這種情況下,replica的默認值是*(或所有副本)。所以可以省略,規(guī)則可以簡化為:

shard:shard1,rack:730

僅在少于5個核心的節(jié)點中創(chuàng)建副本

此規(guī)則使用該replica條件來定義任意數(shù)量的副本,但會添加一個預(yù)定義的標簽“core”,并使用“少于5”的運算符。

replica:*,cores:<5

再次,我們可以簡化這個使用replica的默認值,如下所示:

cores:<5

不要在主機192.45.67.3中創(chuàng)建任何副本

此規(guī)則僅使用預(yù)定義標簽host來定義不應(yīng)放置副本的IP地址。

host:!192.45.67.3

定義規(guī)則

規(guī)則在集合創(chuàng)建期間被指定為請求參數(shù)。在這個例子中,可以指定多個“rule”和“snitch”參數(shù):

snitch=class:EC2Snitch&rule=shard:*,replica:1,dc:dc1&rule=shard:*,replica:<2,dc:dc3

這些規(guī)則被保存在ZooKeeper的clusterstate.json中,并且在整個生命周期中都可用。這使系統(tǒng)能夠執(zhí)行任何未來的節(jié)點分配而無需用戶直接交互。創(chuàng)建集合期間添加的規(guī)則可以稍后使用MODIFYCOLLECTION API 進行修改。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號