routinファイル
routingファイルとは
- ROMAのクラスター構成を記述した設定ファイル
- これをもとにデータの分散などを行う
routingファイル作成
$ mkroute [options] [nodeIDs]
Ex.) mkroute 192.168.33.11_10001 192.168.33.11_10002 192.168.33.12_10001 192.168.33.12_10002
- mkrouteコマンドでroutingファイルが作成されます
routingファイル構成
- routingファイルの内容は各ファイルで全て同じ内容になっています
- ROMAが起動するときに指定したaddressとport No.のファイル名のroutignファイルを読み込みます
routing_file
--- !ruby/object:Roma::Routing::RoutingData
dgst_bits: 32 # 2**32 = 4294967296
div_bits: 9 # 2**9 = 512
rn: 2 # redundancy
nodes:
- 192.168.33.11_10001
- 192.168.33.11_10002
- 192.168.33.12_10001
- 192.168.33.12_10002
v_idx:
0:
- 192.168.33.11_10001
- 192.168.33.12_10001
8388608:
- 192.168.33.12_10002
- 192.168.33.11_10001
16777216:
- 192.168.33.12_10001
- 192.168.33.11_10002
.
.
.
v_clk:
0: 0
8388608: 0
16777216: 0
.
.
.
-
dgts_bits
- データ分散の際に使用するROMAのHash tableをいくつに分散するかの設定
(データ振り分けの際に2^^32個分の空間がある) - 実際の値は2**(設定した数)
- デフォルト値は32(4294967296)
- データ分散の際に使用するROMAのHash tableをいくつに分散するかの設定
-
div_bits
- vnodesの数を示す
(dgst_bitsで用意した2^^32の空間をこのvnodesの個数に振り分ける) - 実際の値は2**(設定した数)
- デフォルト値は9(512)
- vnodesの数を示す
-
rn
- 冗長度を表す
- デフォルト値は2
-
v_idx
- それぞれのvnodesの担当nodeを示す
- 上の行からprimary, secondary1, secondary2・・・となる
- 同serverのインスタンスが同じvnodesにアサインされることはない
(--duplicate_in_hostオプションを使えば可能)
-
v_clk
- vnodes毎の追記回数を示す
- 初期値は0
現在のrouting情報の取得
routingdumpコマンドで取得することができます
> routingdump [yaml|json|yamlbytes|bin]
routing情報の更新
- instanceが追加されたり落ちたりすると、それに合わせてroutingの情報がupdateされます
- 以前紹介したjoinやrecover、data lost時のauto_assignなど
- http://qiita.com/hiroaki-iwase/items/a2558eb1b7b44977ec5f
- http://qiita.com/hiroaki-iwase/items/087c1b4d0dd3e6882001
- http://qiita.com/hiroaki-iwase/items/1e1185e09c3614f5ad74
- 新しいrouting情報は、routingディレクトリに差分情報として保存されます
例
- 'localhost_10001', 'localhost_10002', 'localhost_10003'で構築しているクラスターで'localhost_10003'が落ちた場合
routingディレクトリ
$ ls -l
total 124
-rw-r--r-- 1 root root 25471 Dec 10 03:07 localhost_10001.route # 初期ファイル
-rw-r--r-- 1 root root 19453 Dec 10 05:31 localhost_10001.route.1 # 差分ファイル1(10001)
-rw-r--r-- 1 root root 25471 Dec 10 03:07 localhost_10002.route # 初期ファイル
-rw-r--r-- 1 root root 19453 Dec 10 05:31 localhost_10002.route.1 # 差分ファイル1(10002)
-rw-r--r-- 1 root root 25471 Dec 10 03:07 localhost_10003.route # 初期ファイル
-rw-r--r-- 1 root root 0 Dec 10 03:07 localhost_10003.route.1
- 差分ファイルはファイル名の末尾に.(数字)が追加されたファイルです
- 今回はlocalhost_10003は落ちたインスタンスなので差分ファイルは0bytes
- localhost_10001とlocalhost10002はroutingのupdateが起きたので差分ファイルに変更情報が保存されています
- 差分が増えていくにつれ、'.1', '.2'と増えていきます