概要 | パッケージ | クラス | 階層ツリー | 非推奨 API | 索引 | ヘルプ
前のクラス 次のクラス | フレームあり フレームなし
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド

## okuyama.imdst.util
クラス DataDispatcher

    java.lang.Object
      okuyama.imdst.util.DataDispatcher

    public class DataDispatcher

extends java.lang.Object

MasterNodeが使用するDataNode決定モジュール.

作成者:
  T.Okuyama

フィールドの概要
`static int[]` | `oldRules`
`static java.lang.String` | `rule`
`static int` | `ruleInt`

コンストラクタの概要
`DataDispatcher()`

メソッドの概要
`static java.util.HashMap` | `addNode4ConsistentHash(java.lang.String keyNodeFullName, java.lang.String subKeyNodeFullName, java.lang.String thirdKeyNodeFullName)` ConsitentHashモード時にノードの追加をおこなう.
`static void` | `clearConsistentHashOldCircle()` 旧サークルが存在する場合は削除する.
`static java.lang.String[]` | `dispatchKeyNode(java.lang.String key, boolean reverse)` Rule値に従って、キー値を渡すことで、KeyNodeの名前とポートの配列を返す.
`static java.lang.String[]` | `dispatchKeyNode(java.lang.String key, boolean reverse, int useRule)` Rule値に従って、キー値を渡すことで、KeyNodeの名前とポートの配列を返す.
`static java.util.HashMap` | `getAllDataNodeInfo()` 全てのノードの情報を返す.
`static int` | `getDispatchMode()` 振り分けモードを返す.
`static boolean` | `getInitFlg()` 初期化の状態を返す.
`static int[]` | `getOldRules()` 過去ルールを返す.
`static java.util.ArrayList` | `getTransactionManagerInfo()` TransactionManagerの情報を返す.
`static boolean` | `hasOldRule()` 旧ルールの存在有無を返す
`static void` | `init(java.lang.String ruleStr, int[] oldRules, java.lang.String keyMapNodes, java.lang.String subKeyMapNodes, java.lang.String thirdKeyMapNodes, java.lang.String transactionManagerStr)` 初期化 以下の要素を設定する.
`static void` | `initConsistentHashMode(java.lang.String keyMapNodes, java.lang.String subKeyMapNodes, java.lang.String thirdKeyMapNodes, java.lang.String transactionManagerStr)` 初期化 ConsistentHash専用.
`static boolean` | `isRangeData(java.lang.String key, int[][] rangs)` 引数のKey値が引数のレンジの範囲のデータか確認し結果を返す.
`static boolean` | `isRuleMatchKey(java.lang.String key, int rule, int matchNo)` 引数のKey値が引数のルールのもと引数のmatchNoと合致するかを返す.
`static boolean` | `isStandby()` 本メソッド呼び出すと本クラスを使用できるまで呼び出し元をロック停止させる.
`static void` | `setDispatchMode(java.lang.String mode)`
`static int` | `sha1Hash4Int(java.lang.String target)` sha1のアルゴリズムでHashした値をjavaのhashCodeして返す.

クラス java.lang.Object から継承されたメソッド
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

フィールドの詳細

### rule

    public static volatile java.lang.String rule

### ruleInt

    public static volatile int ruleInt

### oldRules

    public static volatile int[] oldRules

コンストラクタの詳細

### DataDispatcher

    public DataDispatcher()

メソッドの詳細

### setDispatchMode

    public static void setDispatchMode(java.lang.String mode)

### getDispatchMode

    public static int getDispatchMode()

  振り分けモードを返す.

  戻り値:
    int 0=mod, 1=ConsistentHash

### init

    public static void init(java.lang.String ruleStr,
                            int[] oldRules,
                            java.lang.String keyMapNodes,
                            java.lang.String subKeyMapNodes,
                            java.lang.String thirdKeyMapNodes,
                            java.lang.String transactionManagerStr)

  初期化
  以下の要素を設定する.
  KeyMapNodesRule=ルール値(2,9,99,999)
  KeyMapNodesInfo=Keyノードの設定(KeyNodeName1:11111, KeyNodeName2:22222)
  SubKeyMapNodesInfo=スレーブKeyノードの設定(KeyNodeName1:11111, KeyNodeName2:22222)
  SubKeyMapNodesInfoは設定なしも可能。その場合はnullを設定
  ThirdKeyMapNodesInfo=サードKeyノードの設定(KeyNodeName1:11111, KeyNodeName2:22222)
  ThirdKeyMapNodesInfoは設定なしも可能。その場合はnullを設定
  ※SubKeyMapNodesInfoは設定しないとThirdKeyMapNodesInfoは設定することは出来ない
  記述の決まり.
  KeyMapNodesRule:KeyNodeの数を記載
  ここでの記述は過去の台数の経緯を記載する必要がある
  たとえは5台でまずKeyNodeを稼動させその後10台に増やした場合の記述は「10,5」となる。その後15台にした場合は
  「15,10,5」となる
  KeyMapNodesInfo:KeyNode(データ保存ノード)をIPアドレス(マシン名)とポート番号を":"で連結した状態で記述
  SubKeyMapNodesInfo:スレーブとなるのKeyNodeをKeyMapNodesInfoと同様の記述方法で記述。KeyMapNodesInfoと同様の数である必要がある。
  ThirdKeyMapNodesInfo:サードとなるのKeyNodeをKeyMapNodesInfoと同様の記述方法で記述。KeyMapNodesInfoと同様の数である必要がある。

  パラメータ:
    `ruleStr` - ルール設定
    `oldRules` - 過去ルール設定
    `keyMapNodes` - データノードを指定
    `subKeyMapNodes` - スレーブデータノードを指定
    `thirdKeyMapNodes` - スレーブデータノードを指定
    `transactionManagerStr` - トランザクションマネージャの指定

### initConsistentHashMode

    public static void initConsistentHashMode(java.lang.String keyMapNodes,
                                              java.lang.String subKeyMapNodes,
                                              java.lang.String thirdKeyMapNodes,
                                              java.lang.String transactionManagerStr)

  初期化
  ConsistentHash専用.
  以下の要素を設定する.
  KeyMapNodesInfo=Keyノードの設定(KeyNodeName1:11111, KeyNodeName2:22222)
  SubKeyMapNodesInfo=スレーブKeyノードの設定(KeyNodeName1:11111, KeyNodeName2:22222)
  SubKeyMapNodesInfoは設定なしも可能。その場合はnullを設定
  ThirdKeyMapNodesInfo=スレーブKeyノードの設定(KeyNodeName1:11111, KeyNodeName2:22222)
  ThirdKeyMapNodesInfoは設定なしも可能。その場合はnullを設定
  ※SubKeyMapNodesInfoは設定しないがThirdKeyMapNodesInfoは設定することは出来ない
  記述の決まり.
  KeyMapNodesInfo:KeyNode(データ保存ノード)をIPアドレス(マシン名)とポート番号を":"で連結した状態で記述
  SubKeyMapNodesInfo:スレーブとなるのKeyNodeをKeyMapNodesInfoと同様の記述方法で記述。KeyMapNodesInfoと同様の数である必要がある。
  ThirdKeyMapNodesInfo:サードとなるのKeyNodeをKeyMapNodesInfoと同様の記述方法で記述。KeyMapNodesInfoと同様の数である必要がある。

  パラメータ:
    `keyMapNodes` - データノードを指定
    `subKeyMapNodes` - スレーブデータノードを指定
    `thirdKeyMapNodes` - スレーブデータノードを指定
    `transactionManagerStr` - トランザクションマネージャの指定

### getInitFlg

    public static boolean getInitFlg()

  初期化の状態を返す.

### addNode4ConsistentHash

    public static java.util.HashMap addNode4ConsistentHash(java.lang.String keyNodeFullName,
                                                           java.lang.String subKeyNodeFullName,
                                                           java.lang.String thirdKeyNodeFullName)

  ConsitentHashモード時にノードの追加をおこなう.
  本メソッドを呼びだすと、新しいノードのサークルを作りなおす前に、旧ノードのサークルを作成し、keyNodeMapに
  "oldNodeCircle"という名前で登録する.
  返却値はノード登録によって移動しなければいけないデータのHash化した数値の範囲データ。このデータをノードの
  FullNameをキー値としてHashMapに詰めて返す.
  メインデータノードは返却値のHashMapに"main"というキー値で、スレーブは"sub"というキーとで、サードは"third"というキーとでMapが格納されている.
  移動先のノードはメインノードが"tomain"というキー値で、スレーブが"tosub"というキー値で、サードが"tothird"というキー値で格納されている.

  パラメータ:
    `keyNodeFullName` - 追加するメインデータノード フォーマット"192.168.1.3:5555"
    `subKeyNodeFullName` - 追加するスレーブデータノード フォーマット"192.168.2.3:5555"
    `thirdKeyNodeFullName` - 追加するサードデータノード フォーマット"192.168.2.3:5555"
  戻り値:
    HashMap 変更対象データの情報

### clearConsistentHashOldCircle

    public static void clearConsistentHashOldCircle()

  旧サークルが存在する場合は削除する.

### getOldRules

    public static int[] getOldRules()

  過去ルールを返す.

  戻り値:
    int[] 過去ルールリスト

### dispatchKeyNode

    public static java.lang.String[] dispatchKeyNode(java.lang.String key,
                                                     boolean reverse)

  Rule値に従って、キー値を渡すことで、KeyNodeの名前とポートの配列を返す.
  スレーブノードの指定がある場合は同時に値を返す。その場合は配列のレングスが6、Thirdが存在する場合は9となる
  振り分けアルゴリズムはMod or ConsistentHash
  [Mod]
  ノード振り分けアルゴリズムは除算のあまりより決定
  hash値 % ノード台数 = 振り分け先
  [ConsistentHash]
  ConsistentHash法にもとづき決定.

  パラメータ:
    `key` - キー値
    `reverse` - 逆転指定
  戻り値:
    String 対象キーノードの情報(サーバ名、ポート番号)

### dispatchKeyNode

    public static java.lang.String[] dispatchKeyNode(java.lang.String key,
                                                     boolean reverse,
                                                     int useRule)

  Rule値に従って、キー値を渡すことで、KeyNodeの名前とポートの配列を返す.
  スレーブノードの指定がある場合は同時に値を返す。その場合は配列のレングスが6、Thirdが存在する場合は9となる
  振り分けアルゴリズムはMod or ConsistentHash
  本メソッドはノードを追加後に旧ノード構成時のルールで格納しているノードを返す.
  Modではノード追加に合わせて過去の履歴でそれぞれのノードに問い合わせる
  [Mod]
  ノード振り分けアルゴリズムは除算のあまりより決定
  hash値 % ノード台数 = 振り分け先
  [ConsistentHash]
  ConsistentHash法にもとづき決定.

  パラメータ:
    `key` - キー値
    `reverse` - 逆転指定
    `useRule` - 旧ルール世代値
  戻り値:
    String[] 対象キーノードの情報(サーバ名、ポート番号)

### isRuleMatchKey

    public static boolean isRuleMatchKey(java.lang.String key,
                                         int rule,
                                         int matchNo)

  引数のKey値が引数のルールのもと引数のmatchNoと合致するかを返す.

  パラメータ:
    `key` - 対象のキー値
    `rule` - 使用ルール
    `matchNo` - 検証No
  戻り値:
    boolean 結果

### isRangeData

    public static boolean isRangeData(java.lang.String key,
                                      int[][] rangs)

  引数のKey値が引数のレンジの範囲のデータか確認し結果を返す.

  パラメータ:
    `key` - 対象のキー値
    `rangs` - 範囲
  戻り値:
    boolean 結果

### getAllDataNodeInfo

    public static java.util.HashMap getAllDataNodeInfo()

  全てのノードの情報を返す.
  その際返却値のMapには"main"と"sub"と"third"という文字列Keyで、それぞれArrayListに
  名前とポート番号を":"で連結した状態で格納して返す.
  "sub"はスレーブノードが設定しれていない場合はなしとなる
  "third"はサードノードが設定しれていない場合はなしとなる
  ※subは設定しないがthirdは設定することは出来ない

  戻り値:

### getTransactionManagerInfo

    public static java.util.ArrayList getTransactionManagerInfo()

  TransactionManagerの情報を返す.

### sha1Hash4Int

    public static int sha1Hash4Int(java.lang.String target)

  sha1のアルゴリズムでHashした値をjavaのhashCodeして返す.
  マイナス値は返さない

  パラメータ:
    `targete` -
    `int` -

### hasOldRule

    public static boolean hasOldRule()

  旧ルールの存在有無を返す

  戻り値:
    boolean

### isStandby

    public static boolean isStandby()

  本メソッド呼び出すと本クラスを使用できるまで呼び出し元をロック停止させる.

  戻り値:
    boolean

概要 | パッケージ | クラス | 階層ツリー | 非推奨 API | 索引 | ヘルプ
前のクラス 次のクラス | フレームあり フレームなし
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド