2016-12-16 71 views
0

我有一個包含10個節點的Ignite集羣,我有一個分區緩存,2個備份。對於給定的緩存條目,我想知道哪些節點沒有這個條目駐留? 看起來命令行界面(ignitevisorcmd.sh)不提供此功能。如何知道一個緩存條目駐留在哪個節點上

回答

1

這是你如何能得到主節點的關鍵:

Affinity affinity = ignite.affinity("my-cache"); 
ClusterNode primary = affinity.mapKeyToNode(key); 

Affinity API也有一堆的,允許手動計算親和力其他方法(分區編號,節點映射等)。

+0

感謝@Valentin的幫助答案!看起來親和力的方法'公衆收集 mapKeyToPrimaryAndBackups(K鍵);'是我想要的,我會問是否有命令行執行相同的事情? – Tom

+0

不,只有API。你可以創建一個簡單的程序,從CLI中爲你完成。 –

+0

謝謝@Valentin。我明白了,謝謝! – Tom

0

我曾問過類似的問題。您可以在此鏈接通過它去:

Putting cache entries to specific Ignite Server

  1. 在一個較高的水平,點燃需要你給它,而執行put操作的關鍵。
  2. 然後它形成一個更適合哈希的親和性密鑰。
  3. 它生成此關聯關鍵字的哈希碼並執行模數運算(取決於Ignite服務器的數量)以平均分配它。

我認爲沒有辦法找出入口所在的Ignite服務器。但是,如果您的用例是在特定網格中執行某些計算,則可以使用Ignite Compute Grid中的Affinity Call或使用該密鑰調用Entry處理器。

相關問題