90
サーバ サーバ サーバ サーバ2 2台 台でも でも でも でも構築 構築 構築 構築できる できる できる できる 分散 分散 分散 分散キーバリューストア キーバリューストア キーバリューストア キーバリューストア okuyamaのご のご のご のご紹介 紹介 紹介 紹介と と用事例 用事例 用事例 用事例 株式会社 神戸デジタル・ラボ 岩瀬 高博 Mail: [email protected] Twitter: @okuyamaoo http://d.hatena.ne.jp/okuyamaoo/

2010/07/09 osc kansai-kvsokuyama

Embed Size (px)

DESCRIPTION

2010/07/09 OSC@Kansai KyotoKey Value Store Okuyama Seminar Document

Citation preview

Page 1: 2010/07/09 osc kansai-kvsokuyama

サーバサーバサーバサーバ2222台台台台でもでもでもでも構築構築構築構築できるできるできるできる分散分散分散分散キーバリューストアキーバリューストアキーバリューストアキーバリューストア

okuyamaのごのごのごのご紹介紹介紹介紹介とととと活用事例活用事例活用事例活用事例

株式会社神戸デジタル・ラボ

岩瀬高博

Mail: [email protected]

Twitter: @okuyamaoo

http://d.hatena.ne.jp/okuyamaoo/

Page 2: 2010/07/09 osc kansai-kvsokuyama

・株式会社神戸デジタル・ラボ

>神戸を基盤にICTソリューションを展開

・岩瀬高博

>活動

>kvs-ja (Googleユーザグループ)

>OSS分散キーバリューストア okuyama を作成

http://sourceforge.jp/projects/okuyama/

自己紹介

Page 3: 2010/07/09 osc kansai-kvsokuyama

1.なぜ分散Key-Value Store?

2.okuyamaのご紹介

3.神戸デジタル・ラボでは

アジェンダ

Page 4: 2010/07/09 osc kansai-kvsokuyama

少し前のアプリケーション事情

アプリケーション事情

Page 5: 2010/07/09 osc kansai-kvsokuyama

少し前のアプリケーション事情

>利用者

アプリケーション事情

Page 6: 2010/07/09 osc kansai-kvsokuyama

少し前のアプリケーション事情

>利用者

>限定された利用者

アプリケーション事情

Page 7: 2010/07/09 osc kansai-kvsokuyama

少し前のアプリケーション事情

>利用者

>限定された利用者

>利用ユーザ数の予測、コンロールが可能

アプリケーション事情

Page 8: 2010/07/09 osc kansai-kvsokuyama

少し前のアプリケーション事情

>利用者

>限定された利用者

>利用ユーザ数の予測、コンロールが可能

>情報

アプリケーション事情

Page 9: 2010/07/09 osc kansai-kvsokuyama

少し前のアプリケーション事情

>利用者

>限定された利用者

>利用ユーザ数の予測、コンロールが可能

>情報

>限られた発生源

アプリケーション事情

Page 10: 2010/07/09 osc kansai-kvsokuyama

少し前のアプリケーション事情

>利用者

>限定された利用者

>利用ユーザ数の予測、コンロールが可能

>情報

>限られた発生源

>情報量の予測、コントロールが可能

アプリケーション事情

Page 11: 2010/07/09 osc kansai-kvsokuyama

システム構成

利用者利用者利用者利用者 アプリアプリアプリアプリ データベースデータベースデータベースデータベース

Page 12: 2010/07/09 osc kansai-kvsokuyama

最近のアプリケーション事情

>利用者

>限定された利用者

アプリケーション事情

Page 13: 2010/07/09 osc kansai-kvsokuyama

最近のアプリケーション事情

>利用者

>限定された利用者

>オープンな利用

予測できない利用者数

アプリケーション事情

Page 14: 2010/07/09 osc kansai-kvsokuyama

最近のアプリケーション事情

>情報

>限られた発生源

アプリケーション事情

Page 15: 2010/07/09 osc kansai-kvsokuyama

最近のアプリケーション事情

>情報

>限られた発生源

>参加者が自由に発信

予測できないデータ量

アプリケーション事情

Page 16: 2010/07/09 osc kansai-kvsokuyama

システム構成

RDBMS

利用者利用者利用者利用者 アプリアプリアプリアプリ データベースデータベースデータベースデータベース

ボトルネック

Page 17: 2010/07/09 osc kansai-kvsokuyama

システム構成

利用者利用者利用者利用者 アプリアプリアプリアプリ データベースデータベースデータベースデータベース

・スケールアップ

・更新系と検索系を分割

検索ノード

検索ノード

更新ノード

Page 18: 2010/07/09 osc kansai-kvsokuyama

システム構成

利用者利用者利用者利用者 アプリアプリアプリアプリ データベースデータベースデータベースデータベース

・スケールアップで対応

・更新系と検索系を分割

・スケールアップの限界

・更新系はボトルネック

・管理の煩雑化

検索ノード

検索ノード

更新ノード

Page 19: 2010/07/09 osc kansai-kvsokuyama

全てのデータを高度なデータモデルを

有するRDBMSに格納する必要はある?

利用状況に合わせて柔軟に対応できる

モデルが今後は必要

RDBMS以外の選択肢は?

Page 20: 2010/07/09 osc kansai-kvsokuyama

分散キーバリューストア全てのデータを高度なデータモデルを

有するRDBMSに格納する必要はある?

>キーとバリューの関係でデータを蓄積

>最小単位のデータ一貫性の保障

利用状況に合わせて柔軟に対応できる

モデルが今後は必要

Page 21: 2010/07/09 osc kansai-kvsokuyama

分散キーバリューストア全てのデータを高度なデータモデルを

有するRDBMSに格納する必要はある?

>キーとバリューの関係でデータを蓄積

>最小単位のデータ一貫性の保障

利用状況に合わせて柔軟に対応できる

モデルが今後は必要

>スケールアウトによる性能向上

>SPOFの存在しない対障害性

Page 22: 2010/07/09 osc kansai-kvsokuyama

分散キーバリューストア

BigTable

Dynamo

Tokyo Tyrant

kumofs

okuyama

Page 23: 2010/07/09 osc kansai-kvsokuyama

分散キーバリューストア

BigTable

Dynamo

Tokyo Tyrant

kumofs

okuyama okuyamaとは?

Page 24: 2010/07/09 osc kansai-kvsokuyama

okuyamaとは?・Javaで実装された分散キーバリューストア

・データ保存方式の選択が可能

・スケールアウトによる性能向上

・SPOFの存在しない構成

・一括管理機能

・ユニークな機能

Page 25: 2010/07/09 osc kansai-kvsokuyama

okuyamaとは?・Javaで実装された分散キーバリューストア

・データ保存方式の選択が可能

・スケールアウトによる性能向上

・SPOFの存在しない構成

・一括管理機能

・ユニークな機能

Page 26: 2010/07/09 osc kansai-kvsokuyama

Javaで実装された分散KVS・100%Java

>通信部分、制御部分、データ保存部分

・OS非依存

>JavaVirtualMachineが動く環境なら動く

・WindowsXP系とCentOS5系で動作検証

>開発・検証はWindowsで負荷テストはCentOS

・関西発祥の分散KVS

>名前の由来は開発者の好きな山の名前

Page 27: 2010/07/09 osc kansai-kvsokuyama

Javaで実装された分散KVS

・全体構成

・クライアント → マスターノード →データノード

メインマスターノード

メインデータノード

スレーブデータノード

メインデータノード

スレーブデータノード

メインデータノード

スレーブデータノード

メインデータノード

スレーブデータノード

クライアントクライアントクライアントクライアント

クライアントクライアントクライアントクライアント

スレーブマスターノードクライアントクライアントクライアントクライアント

Page 28: 2010/07/09 osc kansai-kvsokuyama

Javaで実装された分散KVS

・クライアント

クライアントクライアントクライアントクライアント

クライアントクライアントクライアントクライアント

クライアントクライアントクライアントクライアントokuyamaへの問い合わせを実現

・専用クライアントはJavaと、PHPが実装済み

Page 29: 2010/07/09 osc kansai-kvsokuyama

Javaで実装された分散KVS

・マスターノード

メインマスターノード

スレーブマスターノード

・クライアントからのI/F

・サポートプロトコル

>オリジナル

>Memcached

>HTTP

・データノード管理

>データ入出力

データ保存場所の決定は

登録Key値 % データノード数

=サーバ番号として使用

>生存監視

起動時のデータリカバリ

・制限台数なしに冗長化可能

Page 30: 2010/07/09 osc kansai-kvsokuyama

Javaで実装された分散KVS

・データノード

メインデータノード

スレーブデータノード

メインデータノード

スレーブデータノード

メインデータノード

スレーブデータノード

メインデータノード

スレーブデータノード

・データの保存を実現

・データ保存方式を選択可能

・memcachedプロトコルに対応

>単体でmemcachedの代わりとして

Page 31: 2010/07/09 osc kansai-kvsokuyama

okuyamaとは?・Javaで実装された分散キーバリューストア

・データ保存方式の選択が可能

・スケールアウトによる性能向上

・一括管理機能

・SPOFの存在しない構成

・ユニークな機能

Page 32: 2010/07/09 osc kansai-kvsokuyama

データ保存方式の選択が可能・データノードへの保存方式を選択

メインデータノード

1.全てのデータをメモリに保存

2.データ操作履歴のみファイルに保存

3.データ本体をファイルに保存

Page 33: 2010/07/09 osc kansai-kvsokuyama

データ保存方式の選択が可能・データノードへの保存方式を選択

メインデータノード

1.全てのデータをメモリに保存

>非永続型

2.データ操作履歴のみファイルに保存

>永続型

3.データ本体をファイルに保存

>永続型

Page 34: 2010/07/09 osc kansai-kvsokuyama

データ保存方式の選択が可能・それぞれの特性

1.全てのデータをメモリに保存

・仕組み

Key値、Value値の両方をメモリ上で管理

・特徴

最も高速に動く

ノード停止でデータも消滅

保存出来るデータ量はメモリ量に依存

Page 35: 2010/07/09 osc kansai-kvsokuyama

データ保存方式の選択が可能・それぞれの特性

2.データ操作履歴のみファイルに保存

・仕組み

データへの操作を全てファイルに時系列に記録

Page 36: 2010/07/09 osc kansai-kvsokuyama

データ保存方式の選択が可能・データへの操作を全てファイルに時系列に記録

Key5 = Value5登録

[履歴記録ファイル]

登録,Key1,Value1

登録,Key2,Value2

登録,Key3,Value3

登録,Key4,Value4

登録,Key5,Value5

データノード

最後尾最後尾最後尾最後尾にににに追記追記追記追記

Page 37: 2010/07/09 osc kansai-kvsokuyama

データ保存方式の選択が可能・データへの操作を全てファイルに時系列に記録

Key5 = Value5登録

[履歴記録ファイル]

登録,Key1,Value1

登録,Key2,Value2

登録,Key3,Value3

登録,Key4,Value4

登録,Key5,Value5

データノード

最後尾最後尾最後尾最後尾にににに追記追記追記追記

Key5 = Value5

データノードデータノードデータノードデータノードののののメモリメモリメモリメモリにににに反映反映反映反映

[データノードのメモリ]

Page 38: 2010/07/09 osc kansai-kvsokuyama

データ保存方式の選択が可能・データへの操作を全てファイルに時系列に記録

Key5削除

登録,Key2,Value2

登録,Key3,Value3

登録,Key4,Value4

登録,Key5,Value5

削除,Key5,Value5

データノード

最後尾最後尾最後尾最後尾にににに追記追記追記追記

Key5

データノードデータノードデータノードデータノードののののメモリメモリメモリメモリにににに反映反映反映反映

[履歴記録ファイル]

[データノードのメモリ]

Page 39: 2010/07/09 osc kansai-kvsokuyama

データ保存方式の選択が可能・それぞれの特性

1.データ操作履歴のみファイルに保存

・仕組み

データへの操作を全てファイルに時系列に記録

記録ファイルからデータを復元

Page 40: 2010/07/09 osc kansai-kvsokuyama

データ保存方式の選択が可能・記録ファイルからデータを復元

データノード

登録,Key1,Value1

登録,Key2,Value2

登録,Key3,Value3

登録,Key4,Value4

登録,Key5,Value5

削除,Key5,Value5

[履歴記録ファイル]

①記録ファイルから順次操作を読み込み

Page 41: 2010/07/09 osc kansai-kvsokuyama

データ保存方式の選択が可能・記録ファイルからデータを復元

Key1 = Value1

②メモリに反映

[データノードのメモリ]

データノード

登録,Key1,Value1

登録,Key2,Value2

登録,Key3,Value3

登録,Key4,Value4

登録,Key5,Value5

削除,Key5,Value5

[履歴記録ファイル]

①記録ファイルから順次操作を読み込み

Page 42: 2010/07/09 osc kansai-kvsokuyama

データ保存方式の選択が可能・記録ファイルからデータを復元

Key1 = Value1

Key2 = Value2

②メモリに反映

[データノードのメモリ]

データノード

登録,Key1,Value1

登録,Key2,Value2

登録,Key3,Value3

登録,Key4,Value4

登録,Key5,Value5

削除,Key5,Value5

[履歴記録ファイル]

①記録ファイルから順次操作を読み込み

Page 43: 2010/07/09 osc kansai-kvsokuyama

データ保存方式の選択が可能・記録ファイルからデータを復元

Key1 = Value1

Key2 = Value2

Key3 = Value3

②メモリに反映

[データノードのメモリ]

データノード

登録,Key1,Value1

登録,Key2,Value2

登録,Key3,Value3

登録,Key4,Value4

登録,Key5,Value5

削除,Key5,Value5

[履歴記録ファイル]

①記録ファイルから順次操作を読み込み

Page 44: 2010/07/09 osc kansai-kvsokuyama

データ保存方式の選択が可能・記録ファイルからデータを復元

Key1 = Value1

Key2 = Value2

Key3 = Value3

Key4 = Value4

②メモリに反映

[データノードのメモリ]

データノード

登録,Key1,Value1

登録,Key2,Value2

登録,Key3,Value3

登録,Key4,Value4

登録,Key5,Value5

削除,Key5,Value5

[履歴記録ファイル]

①記録ファイルから順次操作を読み込み

Page 45: 2010/07/09 osc kansai-kvsokuyama

データ保存方式の選択が可能・記録ファイルからデータを復元

Key1 = Value1

Key2 = Value2

Key3 = Value3

Key4 = Value4

Key5 = Value5

②メモリに反映

[データノードのメモリ]

データノード

登録,Key1,Value1

登録,Key2,Value2

登録,Key3,Value3

登録,Key4,Value4

登録,Key5,Value5

削除,Key5,Value5

[履歴記録ファイル]

①記録ファイルから順次操作を読み込み

Page 46: 2010/07/09 osc kansai-kvsokuyama

データ保存方式の選択が可能・記録ファイルからデータを復元

Key1 = Value1

Key2 = Value2

Key3 = Value3

Key4 = Value4

Key5 = Value5

②メモリに反映

[データノードのメモリ]

データノード

登録,Key1,Value1

登録,Key2,Value2

登録,Key3,Value3

登録,Key4,Value4

登録,Key5,Value5

削除,Key5,Value5

[履歴記録ファイル]

①記録ファイルから順次操作を読み込み

Page 47: 2010/07/09 osc kansai-kvsokuyama

データ保存方式の選択が可能・記録ファイルからデータを復元

Key1 = Value1

Key2 = Value2

Key3 = Value3

Key4 = Value4

②メモリに反映

[データノードのメモリ]

データノード

登録,Key1,Value1

登録,Key2,Value2

登録,Key3,Value3

登録,Key4,Value4

登録,Key5,Value5

削除,Key5,Value5

[履歴記録ファイル]

①記録ファイルから順次操作を読み込み

復元完了!!

Page 48: 2010/07/09 osc kansai-kvsokuyama

データ保存方式の選択が可能・それぞれの特性

2.データ操作履歴のみファイルに保存

・仕組み

データへの操作を全てファイルに時系列に記録

記録ファイルからデータを復元

・特徴

データの永続化が可能で且つ、起動後は高速に動く

保存出来るデータ量はメモリに依存

Page 49: 2010/07/09 osc kansai-kvsokuyama

データ保存方式の選択が可能・それぞれの特性

3.データ本体をファイルに保存

・仕組み

データ永続化の仕組みは「2.」と同じ

Key値のみメモリに保持し、Value値はファイルに保存

Page 50: 2010/07/09 osc kansai-kvsokuyama

データ保存方式の選択が可能・Key値とデータの場所をメモリに保持

Key5 = Value5登録

データノード

「2.」の仕組みを利用

[データファイル]

Value1

Value2

Value3

Value4

Value5

[データノードのメモリ]

Key5 = 5行目

データファイルにValue値を保存

メモリにKey値とValue値のファイル内での

位置を保持

Page 51: 2010/07/09 osc kansai-kvsokuyama

データ保存方式の選択が可能・それぞれの特性

3.データ本体をファイルに保存

・仕組み

データ永続化の仕組みは「2.」と同じ

Key値のみメモリに保持し、Value値はファイルに保存

・特徴

データの永続化が可能

大量のデータを保存可能

データ操作時に常にファイルアクセスが頻発するため、

レスポンスに問題が出やすい

Page 52: 2010/07/09 osc kansai-kvsokuyama

okuyamaとは?・Javaで実装された分散キーバリューストア

・データ保存方式の選択が可能

・スケールアウトによる性能向上

・一括管理機能

・SPOFの存在しない構成

・ユニークな機能

Page 53: 2010/07/09 osc kansai-kvsokuyama

スケールアウトによる性能向上・マスターノード、データノード共に

システム停止無しでスケールアウト可能

・スケールアウト時のデータ移行などは

全て自動で行われる

メインデータノード

スレーブデータノード

メインデータノード

スレーブデータノード

メインデータノード

スレーブデータノード

メインデータノード

スレーブデータノード

メインデータノード

スレーブデータノード

メインデータノード

スレーブデータノード

ノード追加

データ移行

追加

Page 54: 2010/07/09 osc kansai-kvsokuyama

スケールアウトによる性能向上・マスターノード、データノード共に

システム停止無しでスケールアウト可能

・スケールアウト時のデータ移行などは

全て自動で行われる

ミニマムスタートで後から性能向上も容易

Page 55: 2010/07/09 osc kansai-kvsokuyama

okuyamaとは?・Javaで実装された分散キーバリューストア

・データ保存方式の選択が可能

・スケールアウトによる性能向上

・一括管理機能

・SPOFの存在しない構成

・ユニークな機能

Page 56: 2010/07/09 osc kansai-kvsokuyama

一括管理機能・設定変更、現状確認

・データノード状態確認

Page 57: 2010/07/09 osc kansai-kvsokuyama

一括管理機能・設定変更、現状確認

・データノード状態確認

1ノードづつ管理するのは大変

Page 58: 2010/07/09 osc kansai-kvsokuyama

一括管理機能・設定変更、現状確認

・データノード状態確認

1ノードづつ管理するのは大変

一括管理可能なWebコンソール

Page 59: 2010/07/09 osc kansai-kvsokuyama

一括管理機能

Page 60: 2010/07/09 osc kansai-kvsokuyama

okuyamaとは?・Javaで実装された分散キーバリューストア

・データ保存方式の選択が可能

・スケールアウトによる性能向上

・memcacheプロトコル、httpプロトコルに対応

・一括管理機能

・SPOFの存在しない構成

・ユニークな機能

Page 61: 2010/07/09 osc kansai-kvsokuyama

SPOFの存在しない構成・データの流れ

メインマスターノード

メインデータノード

スレーブデータノード

メインデータノード

スレーブデータノード

メインデータノード

スレーブデータノード

メインデータノード

スレーブデータノード

クライアントクライアントクライアントクライアントスレーブ

マスターノード

①データ登録

Page 62: 2010/07/09 osc kansai-kvsokuyama

SPOFの存在しない構成・データの流れ

メインマスターノード

メインデータノード

スレーブデータノード

メインデータノード

スレーブデータノード

メインデータノード

スレーブデータノード

メインデータノード

スレーブデータノード

クライアントクライアントクライアントクライアントスレーブ

マスターノード

①データ登録

②データ登録

ノード決定

Page 63: 2010/07/09 osc kansai-kvsokuyama

SPOFの存在しない構成・データの登録の流れ

メインマスターノード

メインデータノード

スレーブデータノード

メインデータノード

スレーブデータノード

メインデータノード

スレーブデータノード

クライアントクライアントクライアントクライアントスレーブ

マスターノード

①データ登録

②データ登録

ノード決定

③データを2ノードに登録

メインデータノード

スレーブデータノード

Page 64: 2010/07/09 osc kansai-kvsokuyama

SPOFの存在しない構成・データの取得の流れ

メインマスターノード

メインデータノード

スレーブデータノード

メインデータノード

スレーブデータノード

メインデータノード

スレーブデータノード

クライアントクライアントクライアントクライアントスレーブ

マスターノード

①データ取得

メインデータノード

スレーブデータノード

Page 65: 2010/07/09 osc kansai-kvsokuyama

SPOFの存在しない構成・データの取得の流れ

メインマスターノード

メインデータノード

スレーブデータノード

メインデータノード

スレーブデータノード

メインデータノード

スレーブデータノード

クライアントクライアントクライアントクライアントスレーブ

マスターノード

①データ取得

②データ保持

ノード割り出し メインデータノード

スレーブデータノード

Page 66: 2010/07/09 osc kansai-kvsokuyama

SPOFの存在しない構成・データの取得の流れ

メインマスターノード

メインデータノード

スレーブデータノード

メインデータノード

スレーブデータノード

メインデータノード

スレーブデータノード

クライアントクライアントクライアントクライアントスレーブ

マスターノード

①データ取得

メインデータノード

スレーブデータノード

③データ取得

②データ保持

ノード割り出し

Page 67: 2010/07/09 osc kansai-kvsokuyama

SPOFの存在しない構成・データノード障害発生

メインマスターノード

メインデータノード

スレーブデータノード

メインデータノード

スレーブデータノード

メインデータノード

スレーブデータノード

クライアントクライアントクライアントクライアントスレーブ

マスターノード

①データ取得

メインデータノード

スレーブデータノード

障害発生!!

②データ保持

ノード割り出し

Page 68: 2010/07/09 osc kansai-kvsokuyama

SPOFの存在しない構成・データノード障害発生

メインマスターノード

メインデータノード

スレーブデータノード

メインデータノード

スレーブデータノード

メインデータノード

スレーブデータノード

クライアントクライアントクライアントクライアントスレーブ

マスターノード

①データ取得

メインデータノード

スレーブデータノード

もう一つのノードから取得

②データ保持

ノード割り出し

Page 69: 2010/07/09 osc kansai-kvsokuyama

SPOFの存在しない構成・マスターノード障害発生

メインデータノード

スレーブデータノード

メインデータノード

スレーブデータノード

メインデータノード

スレーブデータノード

クライアントクライアントクライアントクライアントスレーブ

マスターノード

①データ取得

メインデータノード

スレーブデータノード

メインマスターノード

Page 70: 2010/07/09 osc kansai-kvsokuyama

SPOFの存在しない構成・マスターノード障害発生

メインデータノード

スレーブデータノード

メインデータノード

スレーブデータノード

メインデータノード

スレーブデータノード

クライアントクライアントクライアントクライアントスレーブ

マスターノード

①データ取得

メインデータノード

スレーブデータノード

障害発生!!

メインマスターノード

Page 71: 2010/07/09 osc kansai-kvsokuyama

SPOFの存在しない構成・マスターノード障害発生

メインデータノード

スレーブデータノード

メインデータノード

スレーブデータノード

メインデータノード

スレーブデータノード

クライアントクライアントクライアントクライアントスレーブ

マスターノード

①データ取得

メインデータノード

スレーブデータノード

別のマスターノードに再接続処理続行

メインマスターノード

Page 72: 2010/07/09 osc kansai-kvsokuyama

SPOFの存在しない構成・自動データリカバリー機能

メインデータノード

スレーブデータノード

メインデータノード

スレーブデータノード

メインデータノード

スレーブデータノード

メインデータノード

スレーブデータノード

メインマスターノード

スレーブマスターノード

①各データノードを定期的に監視

Page 73: 2010/07/09 osc kansai-kvsokuyama

SPOFの存在しない構成・自動データリカバリー機能

メインデータノード

スレーブデータノード

メインデータノード

スレーブデータノード

メインデータノード

スレーブデータノード

メインデータノード

スレーブデータノード

メインマスターノード

スレーブマスターノード

②障害発生を検知

メインマスターノード

スレーブマスターノード

①各データノードを定期的に監視

Page 74: 2010/07/09 osc kansai-kvsokuyama

SPOFの存在しない構成・自動データリカバリー機能

③定期的に再起動していないか確認

メインデータノード

スレーブデータノード

メインデータノード

スレーブデータノード

メインデータノード

スレーブデータノード

メインデータノード

スレーブデータノード

メインマスターノード

スレーブマスターノード

②障害発生を検知

メインマスターノード

スレーブマスターノード

①各データノードを定期的に監視

Page 75: 2010/07/09 osc kansai-kvsokuyama

SPOFの存在しない構成・自動データリカバリー機能

③定期的に再起動していないか確認

メインデータノード

スレーブデータノード

メインデータノード

スレーブデータノード

メインデータノード

スレーブデータノード

メインデータノード

スレーブデータノード

メインマスターノード

スレーブマスターノード

②障害発生を検知

再起動

④再起動を検知

※別筐体で起動しても問題ない

メインマスターノード

スレーブマスターノード

①各データノードを定期的に監視

Page 76: 2010/07/09 osc kansai-kvsokuyama

SPOFの存在しない構成・自動データリカバリー機能

③定期的に再起動していないか確認

メインデータノード

スレーブデータノード

メインデータノード

スレーブデータノード

メインデータノード

スレーブデータノード

メインデータノード

スレーブデータノード

メインマスターノード

スレーブマスターノード

②障害発生を検知

⑤片側のノードからデータを復元

復元中もシステムは停止しない

メインマスターノード

スレーブマスターノード

①各データノードを定期的に監視

④再起動を検知

※別筐体で起動しても問題ない

Page 77: 2010/07/09 osc kansai-kvsokuyama

okuyamaとは?・Javaで実装された分散キーバリューストア

・データ保存方式の選択が可能

・スケールアウトによる性能向上

・一括管理機能

・SPOFの存在しない構成

・ユニークな機能

Page 78: 2010/07/09 osc kansai-kvsokuyama

ユニークな機能・Key-Valueの関係だけじゃない

>Tagを登録することができるset (Key=“okuyama”, Tag={“oss”, ”kvs”}, Value=“分散KVS”);

set (Key=“httpd”, Tag={“oss”, ”webserver”}, Value=“代表的WebSV”);

getTagKeys(“oss”);

>取得結果 {“okuyama”, ”httpd”}

タグを登録すると同じタグの登録されているデータのKeyを

まとめて取得できる

データデータデータデータののののグルーピンググルーピンググルーピンググルーピングがががが可能可能可能可能

Page 79: 2010/07/09 osc kansai-kvsokuyama

ユニークな機能・データロック機構

>全データノードをまたいでロック可能Lock実施

lockData (Key=“okuyama”, Lock維持時間=10, Lockリトライ時間=5);

※別クライアントから

set (Key=“okuyama”, Value=“Ver1.0.0“);

>Lockを実施したクライアントがLock解除するか、

Lock維持時間が経過するまで待たされる

データデータデータデータ整合性整合性整合性整合性をををを意識意識意識意識したしたしたした処理処理処理処理がががが可能可能可能可能

■補足(誤解を招いてはいけないので)

ロック機能を使用すると、Lockを管理するノードを稼動させることになります。

その場合、そのノードは冗長化されないので、ノードダウン時は、データの登録、取得は可能ですが、Lockが機能しなくなります。

また現在は1ノードでLockを管理しているので、処理能力の妨げにもなります。

Page 80: 2010/07/09 osc kansai-kvsokuyama

ユニークな機能・データノードでJavaScriptを実行

>任意のJavaScriptを取得データに実行可能取得したいデータのKey値と、同時に実行したいJavaScriptを指定

getValueScript (Key=“okuyama”, Script=“var dataValue; var retValue =

dataValue.replace(’KVS‘, ’キーバリューストア’); var execRet = '1'; ”);

>取得結果 {“分散キーバリューストア”}

実行するJavaScriptのdataValueという変数にKey値から取得された

値が代入されて実行される。クライアントは変数retValueの値が返され

返却するかどうかは、変数execRetの値で決まる。

データデータデータデータののののフィルタリングフィルタリングフィルタリングフィルタリングやややや、、、、加工加工加工加工ををををデータノードデータノードデータノードデータノードのののの資源資源資源資源をををを使使使使ってってってって実行可能実行可能実行可能実行可能

Page 81: 2010/07/09 osc kansai-kvsokuyama

デモ

デモします

Page 82: 2010/07/09 osc kansai-kvsokuyama

デモ・デモマシン構成

メインマスターノード

メインデータノード

スレーブデータノード

DELL

PowerEdge T110

CPU:Xeon(2.4GHz)

Memory:4GB

HDD:SATA250GB

(7200rpm)×2

NIC:1000Base-T

OS:CentOS5.4(64bit)

スレーブマスターノード

メインデータノード

スレーブデータノード

DELL

PowerEdge T110

CPU:Xeon(2.4GHz)

Memory:4GB

HDD:SATA250GB

(7200rpm)×2

NIC:1000Base-T

OS:CentOS5.4(64bit)

1000Base-T HUB

Page 83: 2010/07/09 osc kansai-kvsokuyama

デモ・デモ内容1.データ取得(100万件に対して)1分間に何回取得処理が出来るか試してみます

Key値:”DataSaveKey1”~ “DataSaveKey1000000”までの値からのランダム値

Page 84: 2010/07/09 osc kansai-kvsokuyama

デモ・デモ内容1.データ取得(100万件に対して)1分間に何回取得処理が出来るか試してみます

Key値:”DataSaveKey1”~ “DataSaveKey1000000”までの値からのランダム値

・memcachedをををを同同同同じじじじ環境環境環境環境でででで実行実行実行実行するとするとするとすると>取得処理回数合計取得処理回数合計取得処理回数合計取得処理回数合計 = 2,300,000/min

>1秒当秒当秒当秒当たりのたりのたりのたりの処理数処理数処理数処理数 = 38,333/sec

■補足(誤解を招いてはいけないので)

セミナーではOkyama専用クライアントでデモを行い600万/minでしたが、Memcachedクライアントでokuyamaに処理を実施した場合は、230万/minです。

Page 85: 2010/07/09 osc kansai-kvsokuyama

デモ・デモ内容2.データ登録(100万件に対して)1分間に何回の登録処理を出来るか試してみます

Key値:”DataSaveKey1”~いけるところまでValue値: “Value012345678901234567890123456789_1”~

いけるところまで

Page 86: 2010/07/09 osc kansai-kvsokuyama

デモ・デモ内容2.データ登録(100万件に対して)1分間に何回の登録処理を出来るか試してみます

Key値:”DataSaveKey1”~いけるところまでValue値: “Value012345678901234567890123456789_1”~

いけるところまで

・memcachedをををを同同同同じじじじ環境環境環境環境でででで実行実行実行実行するとするとするとすると>登録処理回数合計登録処理回数合計登録処理回数合計登録処理回数合計 = 4,476,000/min

>1秒当秒当秒当秒当たりのたりのたりのたりの処理数処理数処理数処理数 = 74,600/sec

Page 87: 2010/07/09 osc kansai-kvsokuyama

デモ・デモ内容

3.冗長化構成を試してみます

データを取得している最中にシステムの

50%をダウンさせてみます

Page 88: 2010/07/09 osc kansai-kvsokuyama

Webページaaaaa取得

神戸デジタル・ラボでは・自社サービスの基盤として活用

Webサイトサイトサイトサイト改改改改ざんざんざんざん検知検知検知検知サービスサービスサービスサービス

Webサイトをクローリングしページの変更を検知

通知するサービス

Webクローラ

W WW

okuyama

Webページを取得し、ページ情報からMD5値を作り出しokuyamaに保存。以降は取得したページのMD5

値を比べることで変更を検知。変更内容の閲覧を実現するために、ページ情報もokuyamaに格納。

情報量が加速度的に増加するため、okuyamaで対応。

Page 89: 2010/07/09 osc kansai-kvsokuyama

最後に・okuyamaユーザグループ作成しました

URL : http://groups.google.co.jp/group/kvs_okuyama

MAIL: [email protected]

・神戸デジタル・ラボブースで展示して

いますので是非お立ち寄りください。

Page 90: 2010/07/09 osc kansai-kvsokuyama

ご清聴ありがとうございました。