コピーライトの表示については、作成元で責任を持って適宜変更してください。 ⇒ © Hitachi, Ltd. 2015. All rights reserved.
株式会社 日立製作所 情報・通信システム社ITプラットフォーム事業本部
2015/06/12
和田 洋祐
データ一貫性にこだわる日立のインメモリ分散KVS
~こだわりの理由と実現方法とは~
© Hitachi, Ltd. 2015. All rights reserved.
自己紹介
1
和田 洋祐(わだ ようすけ)
2010年度入社ミドルウェア設計・開発
分散KVS歴 3年COBOL歴 2年
© Hitachi, Ltd. 2015. All rights reserved.
1. 分散KVSとは何か
2. 分散KVSの悩み事 【一貫性】
3.一貫性へのこだわりと実現方法
Contents
2
© Hitachi, Ltd. 2015. All rights reserved.
分散KVS、簡単に言えば・・・
4
RDBと同じ、「データを管理するソフトウエア」
だけど、RDBではない。
KVSというデータ構造を持つ
RDB 分散KVS
KVS = Key Value Store
データ管理 データ管理
Table
Table
TableKey Value
Key Value
Key Value
Key Value
Key Value
© Hitachi, Ltd. 2015. All rights reserved.
システムのデータシステムの
データシステムのデータ
登場の背景
6
RDB
システムのデータ
システムのデータ
システムのデータ
システムのデータ
Table
Table
Table
Table
複雑化するテーブル
大量リクエスト
スケールアップの限界
求められる耐障害性
大量データ システム開発の短期化
データ管理と言えばRDB
© Hitachi, Ltd. 2015. All rights reserved.
登場の背景
7
システムのデータ
システムのデータ
システムのデータ
システムのデータ
システムのデータ
システムのデータ
KVS KVS KVS
KVS
RDBを補う形で分散KVSは登場した。
クラスタリング
© Hitachi, Ltd. 2015. All rights reserved.
高スループット
9
各サーバで分散処理する
A aaa
write
write
write
write B
write A
write CB bbb
C ccc
© Hitachi, Ltd. 2015. All rights reserved.
スケーラビリティ
10
簡単にスケールアウトできる
A aaa
D ddd
B bbbC ccc
write B
write A
write C
write D
© Hitachi, Ltd. 2015. All rights reserved.
高可用性
11
障害が起きても、他のサーバで業務継続
A aaa
C ccc
D ddd
D ddd
B bbb
A aaa
C cccB bbb
同じデータを複数サーバで保持する
get D
© Hitachi, Ltd. 2015. All rights reserved.
A aaa
C ccc
D ddd
D ddd
B bbb
A aaa
C cccB bbb
高可用性
12
障害が起きても、他のサーバで業務継続
マシンが壊れても他のマシンからデータが
取れる。
♪
get D
© Hitachi, Ltd. 2015. All rights reserved.
分散KVSの使われ方
13
RDB
バッファ キャッシュ
メッセージング ストア
write read
add take update
高可用性を活かした構成
高スループットを活かした構成
update
© Hitachi, Ltd. 2015. All rights reserved.
具体例:コンテンツキャッシュ
14
HITACHI Net Shopp ing
商品DB
DBのキャッシュとして,大量アクセスに対応
ECサイト分散KVS
© Hitachi, Ltd. 2015. All rights reserved.
具体例:センサーデータバッファリング
15
1000万超の検針装置から数分おきにデータ発信
検針装置 電力会社分散KVS
© Hitachi, Ltd. 2015. All rights reserved.
分散KVSとは何か -まとめ-
18
ビッグデータ時代のデータ管理製品
高スループット・スケーラビリティ・高可用性
KVS構造でも使い方は多種多様
© Hitachi, Ltd. 2015. All rights reserved.
データの一貫性ってどういうこと?
20
分散したデータの内容が同じであること
C ccc
D ddd
D ddd
A aaawrite Dget D
© Hitachi, Ltd. 2015. All rights reserved.
難関:ダウンの誤検知
22
通信ができない?ダウン?Write A=bbb
A aaa
A aaa
Aを更新します
スプリットブレインが起きたとき・・・
A aaa
© Hitachi, Ltd. 2015. All rights reserved.
難関:ダウンの誤検知
23
Write A=bbb
Write A=ccc
Aの処理は引き継ぎます。
A bbb
A ccc
A aaa
他から応答が来ない?
スプリットブレインが起きたとき・・・
© Hitachi, Ltd. 2015. All rights reserved.
難関:ダウンの誤検知
24
Write A=bbb
Write A=ccc
Aはこっちの担当だよ?
引き継ぎ済みですよ?
A bbb
A ccc
A ???
どっちを信じれば・・
バチバチ
© Hitachi, Ltd. 2015. All rights reserved.
結果整合性
26
A a1 A a2
データがずれることを許容
A a1 A a2
今どんな感じ?
Aがズレてますね
A a2 A a2
互いに確認して修正
いつかは一致する
© Hitachi, Ltd. 2015. All rights reserved.
中間的な一貫性
27
A a1 A a1
安定状態で一貫性あり
A a1 A a1
苦手なパターンの障害が発生すると
A a2 A a3
ずれてしまうことがある
相手と通信できない
ダウンしたのかな?
© Hitachi, Ltd. 2015. All rights reserved.
強一貫性
28
A a1 A a1
安定状態で一貫性あり
A a1 A a1
A a2 A a2
ずれることはない
様々なパターンの障害が発生しても
© Hitachi, Ltd. 2015. All rights reserved.
一貫性には強度がある
29
崩れても良いいつか一致する。
苦手な障害で崩れてしまう。
多様な障害でも一貫性あり。
結果整合性 強一貫性
強弱 一貫性の強度
© Hitachi, Ltd. 2015. All rights reserved.
一貫性が崩れるとどうなるの? (ケース1)
30
A ---
C ---D M
B ---
C ---B ---
♪
write D Nさん
たとえばECサイトで予約するとき・・・
D NA ---
HITACHI Net Shopp ing
Nさん
♪Mさん
write D Mさん
商品D限定1名様
© Hitachi, Ltd. 2015. All rights reserved.
一貫性が崩れるとどうなるの? (ケース1)
31
A ---
C ---D M
B ---
C ---B ---
異なるデータが格納されてしまう。
D NA ---
HITACHI Net Shopp ing
どっちが正しいの?
管理者Lさん
get D
商品D限定1名様
© Hitachi, Ltd. 2015. All rights reserved.
一貫性が崩れるとどうなるの? (ケース2)
32
A ---
C ---D ---
B ---
C ---B ---
♪
write D Nさん
たとえばECサイトで予約するとき・・・
D NA ---
HITACHI Net Shopp ing
Nさん
商品D限定1名様
© Hitachi, Ltd. 2015. All rights reserved.
D NA ---
一貫性が崩れるとどうなるの? (ケース2)
33
A ---
C ---D ---
B ---
C ---B ---
不整合な時に障害が起きると
HITACHI Net Shopp ing
商品D限定1名様
© Hitachi, Ltd. 2015. All rights reserved.
A ---D N
一貫性が崩れるとどうなるの? (ケース2)
34
A ---
C ---D ---
B ---
C ---B ---
♪
get D
HITACHI Net Shopp ing
Mさん
商品D限定1名様
情報が消えてしまう。
© Hitachi, Ltd. 2015. All rights reserved.
一貫性には強度がある
35
崩れても良いいつか一致する。
苦手な障害で崩れてしまう。
多様な障害でも一貫性あり。
性能 速極速
メールチケット予約課金システム
コンテンツキャッシュセンサー監視
得意分野
結果整合性 強一貫性
強弱 一貫性の強度
© Hitachi, Ltd. 2015. All rights reserved.
分散KVSの悩み事 【一貫性】 -まとめ-
36
一貫性とは、分散したデータが揃っていること
一貫性にも強度がある(結果整合性 ~ 強一貫性)
強度ごとに適材適所がある。強度が強いほど,多様なシステムに適用しやすい。
© Hitachi, Ltd. 2015. All rights reserved.
一貫性が崩れるとどうなるの? (ケース1)
39
A ---
C ---D M
B ---
C ---B ---
異なるデータが格納されてしまう。
D NA ---
HITACHI Net Shopp ing
どっちが正しいの?
管理者Lさん
get D
商品D限定1名様
© Hitachi, Ltd. 2015. All rights reserved.
A ---D N
一貫性が崩れるとどうなるの? (ケース2)
40
A ---
C ---D ---
B ---
C ---B ---
♪
get D
HITACHI Net Shopp ing
Mさん
商品D限定1名様
情報が消えてしまう。
© Hitachi, Ltd. 2015. All rights reserved.
一貫性が崩れる原因
41
Write A=bbb
Write A=ccc
Aの処理は引き継ぎます。
A bbb
A ccc
A aaa
他から応答が来ない?
© Hitachi, Ltd. 2015. All rights reserved.
一貫性には強度がある
42
結果整合性 強一貫性
強弱 一貫性の強度
崩れても良いいつか一致する。
苦手な障害で崩れてしまう。
多様な障害でも一貫性あり。
性能 速極速
メールチケット予約課金システム
コンテンツキャッシュセンサー監視
得意分野
© Hitachi, Ltd. 2015. All rights reserved.
日立の分散KVSへの取り組み
43
Big Data
モノ の発信
人 の発信
電力メーター
運行情報
カーナビ
GPS
監視映像
環境・気象データ
設備監視
物流トレース
ICカード利用
診断画像・電子カルテ
データベース
メール・オフィス文書
つぶやき
SNS
通話ログ
スマートフォン
人の移動
ネット購入
コンテンツダウンロード
動画・画像・音声
データ不整合によるシステムトラブルは許容されない
© Hitachi, Ltd. 2015. All rights reserved.
日立の分散KVSへの取り組み
44
強一貫性の分散KVS
EADS(Hitachi Elastic Application Data Store)
© Hitachi, Ltd. 2015. All rights reserved.
分散合意アルゴリズムとは?
46
みんなで「やることを決める」ための仕組み
Write A=bbb Write A=ccc
Aのデータをcccに更新しよう
A bbb A ccc
Aのデータをbbbに更新しよう
それぞれが,勝手に「やることを決める」と・・・
一貫性は崩れる
© Hitachi, Ltd. 2015. All rights reserved.
分散合意アルゴリズムとは?
47
みんなで「やることを決める」ための仕組み
Write A=bbb Write A=ccc
Aの件,了解しました。
A bbb A bbb
Aのデータをbbbにしたい
あらかじめ,更新内容を決めてから実行すれば
一貫性は保たれる
© Hitachi, Ltd. 2015. All rights reserved.
そんなに難しいこと?
48
テレビ会議をイメージしてください。
ちゃんと決定できますか?
network
通信到着順序は各人でバラバラ
急用で席を外す人もいる
通信が途切れる
複数人が発言する
© Hitachi, Ltd. 2015. All rights reserved.
そんなに難しいこと?
49
テレビ会議をイメージしてください。
ちゃんと決定できますか?
networkそば
牛丼
パスタ電話中
通信到着順序は各人でバラバラ
急用で席を外す人もいる
通信が途切れる
複数人が発言する
© Hitachi, Ltd. 2015. All rights reserved.
更新内容と順序を「提案」する
EADS2
EADS3
EADS4
EADS5
EADS1
更新内容と順序を多数決
51
Slave
Slave
MasterA ---
A ---
A ---
[1] write Aするよ!
© Hitachi, Ltd. 2015. All rights reserved.
決定は過半数承認(多数決)で行う
EADS2
EADS3
EADS4
EADS5
EADS1
更新内容と順序を多数決
52
[1] write A承認!
[1] write Aするよ!
Slave
Slave
Master
[1] write A承認!
A ---
A ---
A ---
© Hitachi, Ltd. 2015. All rights reserved.
承認した内容は覚えておく。
EADS2
EADS3
EADS4
EADS5
EADS1
更新内容と順序を多数決
53
[1] write A承認!
[1] write Aするよ!
Slave
Slave
Master
[1] write A承認!
[1] write A
[1] write A[1] write A
A ---
A ---
A ---
© Hitachi, Ltd. 2015. All rights reserved.
多数決を勝ち取ったら「決定」したことを通知する。
EADS2
EADS3
EADS4
EADS5
EADS1
更新内容と順序を多数決
54
[1] は決定しました
Slave
Slave
MasterA ---
A ---
A ---
[1] write A
[1] write A[1] write A
© Hitachi, Ltd. 2015. All rights reserved.
通知を受けたら更新内容を反映する。
EADS2
EADS3
EADS4
EADS5
EADS1
更新内容と順序を多数決
55
Slave
Slave
MasterA data
A data
A data
[1] write A
[1] write A[1] write A
© Hitachi, Ltd. 2015. All rights reserved.
もし障害が起きていたら・・・
EADS2
EADS3
EADS4
EADS5
EADS1
更新内容と順序を多数決
56
Slave
Slave
MasterA ---
A ---
A ---
[1] write Aするよ!
© Hitachi, Ltd. 2015. All rights reserved.
他が承認してくれるので,「決定」できる。
EADS2
EADS3
EADS4
EADS5
EADS1
更新内容と順序を多数決
57
Slave
Slave
MasterA ---
A ---
A ---
[1] write A承認!
[1] write Aするよ!
[1] write A承認!
© Hitachi, Ltd. 2015. All rights reserved.
承認した内容を覚えておく。
EADS2
EADS3
EADS4
EADS5
EADS1
更新内容と順序を多数決
58
[1] write A承認!
[1] write Aするよ!
Slave
Slave
MasterA ---
A ---
A ---
[1] write A承認![1] write A
[1] write A[1] write A
© Hitachi, Ltd. 2015. All rights reserved.
多数決を勝ち取って「決定」したことを通知する。
EADS2
EADS3
EADS4
EADS5
EADS1
更新内容と順序を多数決
59
[1] は決定しました
Slave
Slave
MasterA ---
A ---
A ---
[1] write A
[1] write A[1] write A
© Hitachi, Ltd. 2015. All rights reserved.
更新を反映する。
EADS2
EADS3
EADS4
EADS5
EADS1
更新内容と順序を多数決
60
Slave
Slave
MasterA data
A data
A ---
[1] write A
[1] write A[1] write A
© Hitachi, Ltd. 2015. All rights reserved.
障害から回復したら・・
EADS2
EADS3
EADS4
EADS5
EADS1
決定内容の補完
62
Slave
Slave
MasterA data
A data
A ---
[1] write A
[1] write A[1] write A
[2] change Aするよ!
※末尾に2を付ける
© Hitachi, Ltd. 2015. All rights reserved.
新しい更新の多数決に参加する
EADS2
EADS3
EADS4
EADS5
EADS1
決定内容の補完
63
Slave
Slave
MasterA data
A data
A ---
[1] write A
[1] write A[1] write A
[2] change Aするよ!
[2] change A承認!
[2] change A承認!
© Hitachi, Ltd. 2015. All rights reserved.
承認した内容を覚える
EADS2
EADS3
EADS4
EADS5
EADS1
決定内容の補完
64
Slave
Slave
MasterA data
A data
A ---
[1] write A
[1] write A[2] change A
[1] write A[2] change A
[2] change Aするよ!
[2] change A承認!
[2] change A承認!
[2] change A
© Hitachi, Ltd. 2015. All rights reserved.
多数決を勝ち取って「決定」したことを通知する。
EADS2
EADS3
EADS4
EADS5
EADS1
決定内容の補完
65
[2] は決定しました
Slave
Slave
MasterA data
A data
A ---
[1] write A
[1] write A[2] change A
[1] write A[2] change A
[2] change A
© Hitachi, Ltd. 2015. All rights reserved.
更新を反映しようとするけど・・・
EADS2
EADS3
EADS4
EADS5
EADS1
決定内容の補完
66
Slave
Slave
MasterA data2
A data2
A ---
[1] write A
[1] write A[2] change A
[1] write A[2] change A
[2] change A
あれ?[1]は?
※末尾に2を付ける
© Hitachi, Ltd. 2015. All rights reserved.
抜けている更新内容は他から教えてもらう。
EADS2
EADS3
EADS4
EADS5
EADS1
決定内容の補完
67
Slave
Slave
MasterA data2
A data2
A ---
[1] write A
[1] write A[2] change A
[1] write A[2] change A
[1] write A[2] change A
[1] write Aだよ!
ありがとう
© Hitachi, Ltd. 2015. All rights reserved.
更新順序が同じなので,同じ内容になる
EADS2
EADS3
EADS4
EADS5
EADS1
決定内容の補完
68
Slave
Slave
MasterA data2
A data2
A data2
[1] write A
[1] write A[2] change A
[1] write A[2] change A
[1] write A[2] change A
© Hitachi, Ltd. 2015. All rights reserved.
更新内容と順序を「提案」する
EADS2
EADS3
EADS4
EADS5
EADS1
事前の進捗確認
70
[1] write Aするよ!
Slave
Slave
MasterA ---
A ---
A ---
© Hitachi, Ltd. 2015. All rights reserved.
決定は過半数承認(多数決)で行う
EADS2
EADS3
EADS4
EADS5
EADS1
事前の進捗確認
71
[1] write Aするよ!
Slave
Slave
MasterA ---
A ---
A ---
[1] write A承認!
[1] write A承認!
© Hitachi, Ltd. 2015. All rights reserved.
[1] write A
承認した内容は覚えておく。
EADS2
EADS3
EADS4
EADS5
EADS1
事前の進捗確認
72
[1] write Aするよ!
Slave
Slave
MasterA ---
A ---
A ---
[1] write A承認!
[1] write A承認![1] write A
[1] write A
© Hitachi, Ltd. 2015. All rights reserved.
「決定」を通知しようとしたら,障害が・・・
EADS2
EADS3
EADS4
EADS5
EADS1
事前の進捗確認
73
Slave
Slave
Master
A ---
A ---
[1] write A
[1] write A
© Hitachi, Ltd. 2015. All rights reserved.
新しいサーバが処理を引き継ぐ
EADS2
EADS3
EADS4
EADS5
EADS1
事前の進捗確認
74
Slave
Slave
Master
A ---
A ---
[1] write A
[1] write A
通信が切れた処理引き継ぎ
Master
© Hitachi, Ltd. 2015. All rights reserved.
自分含め過半数に進捗を確認する。
EADS2
EADS3
EADS4
EADS5
EADS1
事前の進捗確認
75
Master
Slave
A ---
A ---
[1] write A
[1] write A
今どうなってるの?
© Hitachi, Ltd. 2015. All rights reserved.
記録した内容から進捗を報告
EADS2
EADS3
EADS4
EADS5
EADS1
事前の進捗確認
76
Master
Slave
A ---
A ---
[1] write A
[1] write A
今どうなってるの?
[1] write A承認したよ
なにもしてないよ
© Hitachi, Ltd. 2015. All rights reserved.
承認済みの内容があれば,それを提案する。
EADS2
EADS3
EADS4
EADS5
EADS1
事前の進捗確認
77
Master
Slave
A ---
A ---
[1] write A
[1] write A
じゃあ[1] write Aしよう
© Hitachi, Ltd. 2015. All rights reserved.
提案途中で障害が起きても処理は継続する。
EADS2
EADS3
EADS4
EADS5
EADS1
事前の進捗確認
78
Master
Slave
A ---
A ---
[1] write A
[1] write A
じゃあ[1] write Aしよう
[1] write A承認!
[1] write A承認!
© Hitachi, Ltd. 2015. All rights reserved.
Paxosの挙動
80
更新内容と順序を多数決
決定内容の補完
事前の進捗確認
スプリットブレインが起きたときはどうなるのか?
© Hitachi, Ltd. 2015. All rights reserved.
一貫性が崩れる原因 おさらい
81
Write A=bbb
Write A=ccc
Aの処理は引き継ぎます。
A bbb
A ccc
A aaa
他から応答が来ない?
© Hitachi, Ltd. 2015. All rights reserved.
更新内容と順序を「提案」するけれど
EADS2
EADS3
EADS4
EADS5
EADS1
スプリットブレインの時は・・・
82
Slave
Slave
MasterA ---
A ---
A ---
[1] write Aするよ!
© Hitachi, Ltd. 2015. All rights reserved.
過半数の承認を得られない。
EADS2
EADS3
EADS4
EADS5
EADS1
スプリットブレインの時は・・・
83
Slave
Slave
MasterA ---
A ---
A ---
[1] write Aするよ!
[1] write A承認!
[1] write A
[1] write A
© Hitachi, Ltd. 2015. All rights reserved.
処理の引き継ぎが行われると・・・
EADS2
EADS3
EADS4
EADS5
EADS1
スプリットブレインの時は・・・
84
Slave
Slave
MasterA ---
A ---
A ---
[1] write A
[1] write A
通信が切れた処理引き継ぎ
Master
© Hitachi, Ltd. 2015. All rights reserved.
事前確認が行われる。
EADS2
EADS3
EADS4
EADS5
EADS1
スプリットブレインの時は・・・
85
Master
Slave
MasterA ---
A ---
A ---
[1] write A
[1] write A
今どんな感じですか?
© Hitachi, Ltd. 2015. All rights reserved.
右側には通信が来ていないので
EADS2
EADS3
EADS4
EADS5
EADS1
スプリットブレインの時は・・・
86
Master
Slave
MasterA ---
A ---
A ---
[1] write A
[1] write A
今どんな感じですか?
なにもしてません
なにもしてません
© Hitachi, Ltd. 2015. All rights reserved.
まったく別の更新内容を提案する
EADS2
EADS3
EADS4
EADS5
EADS1
スプリットブレインの時は・・・
87
Master
Slave
MasterA ---
A ---
A ---
[1] write A
[1] write A
[1] write A #するよ!
© Hitachi, Ltd. 2015. All rights reserved.
承認して覚えておく。
EADS2
EADS3
EADS4
EADS5
EADS1
スプリットブレインの時は・・・
88
Master
Slave
MasterA ---
A ---
A ---
[1] write A
[1] write A
[1] write A #するよ!
[1] write A #承認!
[1] write A #
[1] write A #
[1] write A #
[1] write A #承認!
© Hitachi, Ltd. 2015. All rights reserved.
こんなタイミングでネットワークが回復すると・・
EADS2
EADS3
EADS4
EADS5
EADS1
スプリットブレインの時は・・・
89
Master
Slave
MasterA ---
A ###
A ###
[1] write A
[1] write A
[1] write A #
[1] write A #
[1] write A #
[1] write Aするよ!
© Hitachi, Ltd. 2015. All rights reserved.
残り一人の承認は得られず,逆に補完される
EADS2
EADS3
EADS4
EADS5
EADS1
スプリットブレインの時は・・・
90
Master
Slave
MasterA ---
A ###
A ###
[1] write A
[1] write A
[1] write A #
[1] write A #
[1] write A #
[1] write A #決定ずみ!
© Hitachi, Ltd. 2015. All rights reserved.
EADS2
EADS3
EADS4
EADS5
EADS1
スプリットブレインの時は・・・
91
Master
Slave
MasterA ###
A ###
A ###
[1] write A #
[1] write A
[1] write A #
[1] write A #
[1] write A #
© Hitachi, Ltd. 2015. All rights reserved.
Paxosの挙動
92
更新内容と順序を多数決
決定内容の補完
事前の進捗確認
スプリットブレインが起きたときはどうなるのか?
一貫性は崩れない!
© Hitachi, Ltd. 2015. All rights reserved.
一貫性へのこだわりと実現方法 -まとめ-
94
一貫性へのこだわり
社会インフラのシステムでの利用を想定システムトラブルの原因になるデータ不整合を徹底対策
一貫性の実現方法
分散合意アルゴリズムのPaxosを導入スプリットブレインでも崩れない強一貫性を実現
© Hitachi, Ltd. 2015. All rights reserved.
他社商品名、商標等の引用に関する表示
95
• Hitachi Elastic Application Data Storeは,(株)日立製作所の登録商標です。
• その他記載の会社名,製品名は,それぞれの会社の商標もしくは登録商標です。
• 製品の改良により予告なく記載されている仕様が変更になることがあります。
© Hitachi, Ltd. 2015. All rights reserved.
株式会社 日立製作所 情報・通信システム社ITプラットフォーム事業本部
~こだわりの理由と実現方法とは~
データ一貫性にこだわる日立のインメモリ分散KVS
2015/06/12
和田 洋祐
END
96