Contenu connexe Similaire à Kvs okuyama-20110818 (20) Plus de Takahiro Iwase (9) Kvs okuyama-201108181. Distributed Key-Value Store
Kobe Digital Labo, Inc.
岩瀬 高博
Twitter: @okuyamaoo
Mail: iwase@kdl.co.jp
http://www.facebook.com/okuyama.jp/
5. 全体イメージ
・全体イメージ
Data Node Data Node Data Node
Client Master Node Data Node Data Node Data Node
Client
Master Node Data Node Data Node Data Node
Client
Data Node Data Node Data Node
・Client → Master Node → Data Node(×3)
7. MasterNodeコンポーネント
・MasterNode
・データノード管理
・クライアントからのI/F
>データ入出力
・サポートプロトコル
>オリジナル サポート分散アルゴリズム
>Memcached 1. ConsistentHash
MasterNode
・set ・get ・add >生存監視
・delete ・incr ・decr MasterNode 起動時のデータリカバリ
・gets ・cas
・パーティション
※expire、flagも対応
・制限台数なしに冗長化可能
>HTTP
・GET
9. ネットワークの仕組み
・ネットワークメカニズム
処理別キューイングメカニズム Respond to
Client
>タスクQueue + Workerプール
処理を分類し段階的に処理 Main Job
Queue
各Workerの処理終了後は
Main Job Queue
Queueに返却 Worker
Client
Write
I/O Read
Queue
I/O Read Queue
Client Connect Worker
Accept
Queue 処理別のQueue
Accept Queue
Worker
10. ネットワークの仕組み
・ネットワークメカニズム Respond to
内部ではこの仕組みを多重化している
Main Job
Queue
Main Job
Queue
Client Main Job
Write
Queue
I/O Read
Queue
I/O Read
Client
Queue
Connect
I/O Read
Accept Queue
Queue
Accept
Queue
Accept
Queue
11. DataNodeコンポーネント
・DataNode
・データの保存を実現
DataNode DataNode DataNode
・データ保存方式を選択可能
・最大3ノードにデータを保存
DataNode DataNode DataNode
・アクセスバランシング
・連鎖的ダウンの予防
DataNode DataNode DataNode
DataNode DataNode DataNode
12. ストレージの仕組み
・データノードへの保存方式を選択可能
Data Node 1.全てのデータをメモリに保存
Key = メモリ
>非永続型 Value = メモリ
2.データ操作履歴のみファイルに保存
Key = メモリ
>永続型 + 操作記録ファイル
Value = メモリ
3.データ本体をファイルに保存
Key = メモリ + 操作記録ファイル
>永続型 Value = ファイル
4.全てをファイルに保存
Key = ファイル
>永続型 + 操作記録ファイル
Value = ファイル
13. ストレージの仕組み
・データへの操作を全てファイルに時系列に書き出し
データ変更処理
Key5 = Value5
DataNode
[履歴記録ファイル]
登録,Key1,Value1
登録,Key2,Value2
登録,Key3,Value3
登録,Key4,Value4
登録,Key5,Value5
処理内容を最後尾に追記
永続媒体へ
メモリ or ファイル
Key5 = Value5
14. ストレージの仕組み
・記録ファイルからデータを復元
DataNode ①記録ファイルから順次操作を読み込み
②メモリに反映
登録,Key1,Value1 Key1 = Value1
登録,Key2,Value2 Key2 = Value2
登録,Key3,Value3 Key3 = Value3
登録,Key4,Value4 Key4 = Value4
登録,Key5,Value5
削除,Key5,Value5
[データノードのメモリ]
[履歴記録ファイル]
復元完了!!
21. SPOFの存在しない構成
・データノード障害発生 もう一つのノードから取得
②データ保持
ノード割り出し Data Node DataNode
①データ取得
クライアント MasterNode Data Node DataNode
MasterNode Data Node DataNode
Data Node DataNode
22. SPOFの存在しない構成
・マスターノード障害発生
障害発生!! Data Node DataNode
①データ取得
クライアント MasterNode Data Node DataNode
MasterNode Data Node DataNode
別のマスター
ノードに再接続
処理続行 Data Node DataNode
23. SPOFの存在しない構成
・自動データリカバリー機能
②障害発生を検知
③定期的に再起動していないか確認
④再起動を検知
※別筐体で起動しても
Data Node DataNode
問題ない
⑤片側のノードから
MasterNode Data Node DataNode データを復元
復元中もシステムは
停止しない
MasterNode Data Node DataNode
①各データノードを Data Node DataNode
定期的に監視
24. 性能
・1台でも非常に高いパフォーマンスを発揮
永続化モード
Valueメモリ 1台のマスターノード、データノード構成で
DataNode 900クライアントから負荷テストを実施
あらかじめ750万件を登録
1分間で実行したGet、Set処理の合計と
1秒当たりの処理件数を算出
MasterNode Get Set
480万回/min 290万回/min
8万回/sec 4.8万回/sec
クライアント クライアント
クライアント クライアント
使用マシンスペック
クライアント クライアント
クライアント クライアント ・CPU:Core i5(3.2GHz)
クライアント クライアント
クライアント クライアント ・Memory:4GB
クライアント クライアント
クライアント クライアント
・HDD:SATA500GB (7200rpm)×2
クライアント クライアント クライアント
・NIC:1000Base-T
900クライアント ・OS:CentOS5.5(64bit)
Key長:100-105バイト
Value長:100-105バイト
25. ユニークな機能
・タグ機能
・JavaScript機能
・パーティション機能
・全文検索機能
26. タグ機能
タグをデータに付加することができる
Key Value
memcached “The world‟s most popular open source kvs”
MySQL “The world‟s most popular open source database”
okuyama “Distributed Key Value Store implemented in Java”
Key Tag Value
memcached KVS “The world‟s most popular open source kvs”
MySQL RDBMS “The world‟s most popular open source database”
okuyama KVS “Distributed Key Value Store implemented in Java”
27. タグ機能
タグをデータに付加することができる
Key Tag Value
memcached KVS “The world‟s most popular open source kvs”
MySQL RDBMS “The world‟s most popular open source database”
okuyama KVS “Distributed Key Value Store implemented in Java”
タグ”KVS”を指定すると
{“memcached”, “okuyama”}
関係するキーをまとめて取得できる
(Valueも取得可能)
32. 利用事例
・共有キャッシュサーバ
・データ集約ストレージ
37. 最後に
・Information
UserGroup
http://groups.google.com/group/kvs_okuyama/
Development
http://sourceforge.jp/projects/okuyama/
Facebook
http://www.facebook.com/okuyama.jp