Upload
insight-technology-inc
View
830
Download
1
Embed Size (px)
Citation preview
© Hitachi, Ltd. 2013. All rights reserved.
株式会社 日立製作所 情報・通信システム社
スプリットブレインになっても 一貫性を保証する インメモリデータグリッド製品
ITプラットフォーム事業本部 開発統括本部
2013/05/30
梅田多一
db tech showcase 大阪 2013
© Hitachi, Ltd. 2013. All rights reserved.
自己紹介
© Hitachi, Ltd. 2013. All rights reserved. 2
DB Online http://enterprisezine.jp/dbonline/detail/3991
2000年入社 ・Cosminexus開発 ・Cosminexusテクニカルサポート 仕事のスタイル ・TTP ・GNN
© Hitachi, Ltd. 2013. All rights reserved.
インメモリデータグリッドって何だ?
Contents
インメモリデータグリッドの要素技術
強一貫性への挑戦!
スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品
© Hitachi, Ltd. 2013. All rights reserved.
インメモリデータグリッドって 何だ?
スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品
© Hitachi, Ltd. 2013. All rights reserved. 5
インメモリデータグリッドって何だ?
登場の背景
© Hitachi, Ltd. 2013. All rights reserved. 6
登場の背景
・発信データの爆発的増加(Big Data)
・データを扱うミドルウェアへの要件として
大量発信データの高速処理、リアルタイム分析、大量蓄積データの高速検索、、
・インメモリデータグリッド、複合イベント処理、超高速DB、、
Big Data
モノ の発信
人 の発信
電力メーター
運行情報
カーナビ
GPS
監視映像
環境・気象データ
設備監視
物流トレース
ICカード利用
診断画像・電子カルテ
データベース
メール・オフィス文書
つぶやき
SNS
通話ログ
スマートフォン
人の移動
ネット購入
コンテンツダウンロード
動画・画像・音声
© Hitachi, Ltd. 2013. All rights reserved. 7
日立の取り組み
インメモリデータグリッドって何だ?
© Hitachi, Ltd. 2013. All rights reserved. 8
日立の取り組み
①uCosminexus Elastic Application Data store(以下EADs)(C22)
②uCosminexus Stream Data Platform(B14)
③Hitachi Advanced Data Binder プラットフォーム(D24)
現場の状況をいち早く把握 問題の解決
新たな価値の提供
デー
タ
修理
指示
売り
場へ
の指
示
デー
タ
③大量蓄積データの高速検索
①大量発信データの高速処理
②大量発信データのリアルタイム分析
© Hitachi, Ltd. 2013. All rights reserved. 9
インメモリデータグリッドって何だ?
日立の案件
© Hitachi, Ltd. 2013. All rights reserved. 10
日立の案件(電力)
工場
オフィス
戸建
検針値
1日分
スマートメータ
収集サーバから出力される大量の検針値(30分値)を、
一定期間(40日)分DBに格納したい。
大量の検針値を 高速に受信
当日分メモリ保持、日次ジョブ実行による 一日分ファイル出力、一括DBロード
© Hitachi, Ltd. 2013. All rights reserved. 11
日立の案件(通信)
メディエーション
交換機から出力される大量のRawCDRを、
課金システムや帯域制御システム向けのCDRに編集したい。
RawCDR
CDR
RawCDR:
接続開始/一定時間経過/HO発生/接続終了などのタイミングで出力される、
接続ID、接続時間、通信量などの情報。
CDR:
同一の接続に対する分割情報であるRawCDRを結合(通信量の合算など)した情報。
大量の接続情報を 高速に受信
同一接続のデータ集合を イベントドリブンに編集
© Hitachi, Ltd. 2013. All rights reserved. 12
インメモリデータグリッドって何だ?
インメモリデータグリッドの 3つの特徴
© Hitachi, Ltd. 2013. All rights reserved. 13
インメモリデータグリッドの3つの特徴
①インメモリKVSである
© Hitachi, Ltd. 2013. All rights reserved. 14
インメモリデータグリッドの3つの特徴
①インメモリKVS*である
・一意に識別可能な「キー」とそれに対応する「値」
で構成されるデータを保持するインメモリストア
・レスポンス性能
* KVS: Key Value Store
Application Server インメモリKVS
Key Value
Foo A
Bar 0
Baz A,0
© Hitachi, Ltd. 2013. All rights reserved. 15
インメモリデータグリッドの3つの特徴
②分散している
© Hitachi, Ltd. 2013. All rights reserved. 16
インメモリデータグリッドの3つの特徴
②分散している
・複数サーバのメモリ上にデータを分散配置
・スループット性能と拡張性
Key Value
Foo A
Bar 0
Key Value
Baz A,0
Application Server
インメモリ分散KVS
© Hitachi, Ltd. 2013. All rights reserved. 17
インメモリデータグリッドの3つの特徴
③実行できる
© Hitachi, Ltd. 2013. All rights reserved. 18
インメモリデータグリッドの3つの特徴
③実行できる
・同時に使うデータを同じ場所に格納する(Grouping*)
・ユーザロジックの分散実行(Distributed Code Execution*)
・ネットワークトラフィックの削減とCPUの活用
* JSR 347: Data Grids for the JavaTM Platform
Key Value
G1:Foo A
G1:Bar 0
G1:Baz A,0
Key Value
G2:Foo B
G2:Bar 1
G2:Baz B,1
Application Server
インメモリデータグリッド
グループ処理
ユーザロジック
© Hitachi, Ltd. 2013. All rights reserved. 19
まとめ
インメモリデータグリッドって何だ?
© Hitachi, Ltd. 2013. All rights reserved. 20
大量発信データの高速処理(レスポンス、スループット、スケールアウト)
を実現するために以下の特徴を持つもの
・インメモリKVSである
・分散している
・実行できる
インメモリデータグリッドって何だ?
© Hitachi, Ltd. 2013. All rights reserved.
インメモリデータグリッドの 要素技術
(分散基盤編 )
スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品
© Hitachi, Ltd. 2013. All rights reserved. 22
インメモリデータグリッドの要素技術
コンシステントハッシング ~分散の技術~
© Hitachi, Ltd. 2013. All rights reserved. 23
コンシステントハッシング
・サーバは232の範囲に等分配置
・Keyのハッシュ値からマスタの保存先を決定
EADs Tool
231-1 | -231
Put Foo A
レンジ Hash(Foo)
マスタ
サーバ
© Hitachi, Ltd. 2013. All rights reserved. 24
インメモリデータグリッドの要素技術
レプリケーション ~冗長化の技術~
© Hitachi, Ltd. 2013. All rights reserved. 25
レプリケーション
・多重度定義に従いデータを複製
・高速化のため非同期
EADs Tool
231-1 | -231
Put Foo A
レンジ Hash(Foo)
スレーブ1
スレーブ2
マスタ
サーバ
© Hitachi, Ltd. 2013. All rights reserved. 26
レプリケーション
・1サーバは複数レンジのデータを保持
EADs Tool
231-1 | -231
スレーブ1
スレーブ2
マスタ
© Hitachi, Ltd. 2013. All rights reserved. 27
インメモリデータグリッドの要素技術
マスタ昇格 ~耐障害性の技術~
© Hitachi, Ltd. 2013. All rights reserved. 28
マスタ昇格(障害時)
・ハートビートおよびヘルスチェックによる障害検知
・サーバを切り離しマスタを切り替える
EADs Tool
231-1 | -231
スレーブ1 →マスタ
障害
© Hitachi, Ltd. 2013. All rights reserved. 29
マスタ昇格(復旧時)
・運用機能によるサーバ追加
・レンジ単位にデータ転送
EADs Tool
復旧サーバ
復旧レンジ
転送速度
© Hitachi, Ltd. 2013. All rights reserved. 30
マスタ昇格(復旧時)
EADs Tool
・運用機能によるサーバ追加
・レンジ単位にデータ転送
復旧サーバ
復旧レンジ
転送速度
© Hitachi, Ltd. 2013. All rights reserved. 31
マスタ昇格(復旧時)
EADs Tool
・運用機能によるサーバ追加
・レンジ単位にデータ転送
復旧サーバ
復旧レンジ
転送速度
© Hitachi, Ltd. 2013. All rights reserved. 32
マスタ昇格(復旧時)
EADs Tool
・サーバを追加しマスタを切り替える
復旧
© Hitachi, Ltd. 2013. All rights reserved. 33
整合性と一貫性
インメモリデータグリッドの要素技術
© Hitachi, Ltd. 2013. All rights reserved. 34
整合性:マスタとスレーブの値が同じ
一貫性:すべてのクライアントから最新の値が見える
整合性と一貫性
Foo=A
Foo=A
Foo=A
Get Foo
Get Foo
→A
→A
© Hitachi, Ltd. 2013. All rights reserved. 35
インメモリデータグリッドの要素技術
一貫性の3つの課題
© Hitachi, Ltd. 2013. All rights reserved. 36
①複製順序不正による不整合
一貫性の3つの課題
© Hitachi, Ltd. 2013. All rights reserved. 37
①通信遅延⇒複製順序不正
⇒不整合⇒マスタ昇格(永久的障害時)⇒一貫性?
①Put Foo A
①Foo=A
①Foo=B
①Foo=A
②Put Foo B
②Foo=B
②Foo=B
②Foo=A 遅延
一貫性の3つの課題
整合性:マスタとスレーブの値が同じ
一貫性:すべてのクライアントから最新の値が見える
© Hitachi, Ltd. 2013. All rights reserved. 38
一貫性の3つの課題
②複製処理失敗による不整合
© Hitachi, Ltd. 2013. All rights reserved. 39
②一時的障害(サーバ、ネットワーク)⇒複製処理失敗
⇒不整合⇒マスタ昇格(永久的障害時)⇒一貫性?
CAS Bar 0 1
Bar=01
Bar=01
Bar=0
失敗
成功
CAS: Compare and Swap
一貫性の3つの課題
整合性:マスタとスレーブの値が同じ
一貫性:すべてのクライアントから最新の値が見える
© Hitachi, Ltd. 2013. All rights reserved. 40
③スプリットブレインによる不整合
一貫性の3つの課題
© Hitachi, Ltd. 2013. All rights reserved. 41
③L2スイッチの障害⇒ネットワーク分断
⇒複数マスタ⇒一貫性?
①Put Foo A
②Put Foo B
①Foo=A
②Foo=B
②Foo=B
マスタはこのサーバだ!
マスタはこのサーバだ!
スプリット
一貫性の3つの課題
整合性:マスタとスレーブの値が同じ
一貫性:すべてのクライアントから最新の値が見える
© Hitachi, Ltd. 2013. All rights reserved. 42
インメモリデータグリッドの要素技術
参考
© Hitachi, Ltd. 2013. All rights reserved. 43
インメモリデータグリッドの要素技術
ゴシッププロトコル ~結果整合性の技術~
© Hitachi, Ltd. 2013. All rights reserved. 44
ゴシッププロトコル
・サーバ間で情報交換
・古いデータは新しいデータで上書き
・マスタとスレーブの値がそのうち同じ(結果整合性)
・最新の値が見えるとは限らない
整合性:マスタとスレーブの値が同じ
一貫性:すべてのクライアントから最新の値が見える
© Hitachi, Ltd. 2013. All rights reserved. 45
インメモリデータグリッドの要素技術
リードリペア ~結果整合性の技術~
© Hitachi, Ltd. 2013. All rights reserved. 46
リードリペア
・読み込み処理時に複数のサーバからデータを取得
・古いデータは新しいデータで上書き
・マスタとスレーブの値がそのうち同じ(結果整合性)
・最新の値が見えるとは限らない(確度を調整可能(QUORUM))
整合性:マスタとスレーブの値が同じ
一貫性:すべてのクライアントから最新の値が見える
© Hitachi, Ltd. 2013. All rights reserved. 47
インメモリデータグリッドの要素技術
まとめ
© Hitachi, Ltd. 2013. All rights reserved. 48
インメモリデータグリッドの要素技術
要素技術
・コンシステントハッシング
・レプリケーション
・マスタ昇格
・ゴシッププロトコル
・リードリペア
一貫性の3つの課題
①複製順序不正による不整合
②複製処理失敗による不整合
③スプリットブレインによる不整合
© Hitachi, Ltd. 2013. All rights reserved.
強一貫性への挑戦!
スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品
© Hitachi, Ltd. 2013. All rights reserved. 50
強一貫性への挑戦!
解決へのアプローチ
© Hitachi, Ltd. 2013. All rights reserved. 51
解決へのアプローチ
①複製順序不正による不整合
②複製処理失敗による不整合
③スプリットブレインによる不整合
分散合意アルゴリズムPaxos*の適用
* The Part-Time Parliament LESLIE LAMPORT, 1998
© Hitachi, Ltd. 2013. All rights reserved. 52
強一貫性への挑戦!
Paxosとは
© Hitachi, Ltd. 2013. All rights reserved.
Paxosとは
53
サーバの集合が同じ処理を同じ順番で実行するためのアルゴリズム
Atomic Broadcast
1番目の処理
2番目の処理
i番目の処理
put(k1,v1)
Server1 Server2 Server3
put(k1,v1) put(k1,v1)
remove(k1) remove(k1) remove(k1)
put(k1,v2) put(k1,v2) put(k1,v2)
キー バリュー
k1 v2 整合
© Hitachi, Ltd. 2013. All rights reserved.
Paxosとは
54
Proposer:
1. i番目の処理を提案
Acceptor:
2. Acceptor間で過半数承認(i番目の処理を合意)
3. i番目の処理を実行
※i-1番目までの処理を実行していなければ、
i-1番目までの処理を他のAcceptorから取得して実行(FillGaps)
© Hitachi, Ltd. 2013. All rights reserved. 55
強一貫性への挑戦!
一貫性保証のための3つの実装
© Hitachi, Ltd. 2013. All rights reserved. 56
一貫性保証のための3つの実装
①複製順序不正による不整合 の回避
© Hitachi, Ltd. 2013. All rights reserved.
①複製順序不正による不整合の回避
57
Proposer:マスタを持つサーバ
Acceptor:マスタ、スレーブ1、スレーブ2を持つサーバ+スペア*×2
実行 キュー
実行 スレッド
マスタ
サーバ1
スレーブ1 スレーブ2
マスタ
サーバ2
スレーブ1 スレーブ2
マスタ
サーバ3
スレーブ1 スレーブ2
マスタ
サーバ4
スレーブ1 スレーブ2
マスタ
サーバ5
スレーブ1 スレーブ2
put(k,v)
ストア
* スペア:過半数承認用(2多重障害対応)。ストア操作なし。
レンジ用 Paxos
© Hitachi, Ltd. 2013. All rights reserved.
①複製順序不正による不整合の回避
58
Proposer:i番目の処理を提案
Acceptor:Acceptor間で過半数承認(i番目の処理を合意)
実行 キュー
実行 スレッド
マスタ
サーバ1
スレーブ1 スレーブ2
マスタ
サーバ2
スレーブ1 スレーブ2
マスタ
サーバ3
スレーブ1 スレーブ2
マスタ
サーバ4
スレーブ1 スレーブ2
マスタ
サーバ5
スレーブ1 スレーブ2
put(k,v)
ストア
i
ok
ok
ok
ok
ok
レンジ用 Paxos
© Hitachi, Ltd. 2013. All rights reserved.
①複製順序不正による不整合の回避
59
Acceptor:i番目の処理を実行
”①複製順序不正による不整合”は発生しない!
実行 キュー
実行 スレッド
マスタ
サーバ1
スレーブ1 スレーブ2
マスタ
サーバ2
スレーブ1 スレーブ2
マスタ
サーバ3
スレーブ1 スレーブ2
マスタ
サーバ4
スレーブ1 スレーブ2
マスタ
サーバ5
スレーブ1 スレーブ2
put(k,v)
ストア
i
i
i
レンジ用 Paxos
© Hitachi, Ltd. 2013. All rights reserved.
①複製順序不正による不整合の回避
60
サーバの集合が同じ処理を同じ順番で実行する
同じ処理ができなければ閉塞(一貫性>可用性)
実行 キュー
実行 スレッド
マスタ
サーバ1
スレーブ1 スレーブ2
マスタ
サーバ2
スレーブ1 スレーブ2
マスタ
サーバ3
スレーブ1 スレーブ2
マスタ
サーバ4
スレーブ1 スレーブ2
マスタ
サーバ5
スレーブ1 スレーブ2
put(k,v)
ストア
i
i
i
レンジ用 Paxos
失敗
© Hitachi, Ltd. 2013. All rights reserved. 61
②複製処理失敗による不整合 の対処
一貫性保証のための3つの実装
© Hitachi, Ltd. 2013. All rights reserved.
②複製処理失敗による不整合の対処
62
一時的障害(サーバ、ネットワーク)
実行 キュー
実行 スレッド
マスタ
サーバ1
スレーブ1 スレーブ2
マスタ
サーバ2
スレーブ1 スレーブ2
マスタ
サーバ3
スレーブ1 スレーブ2
マスタ
サーバ4
スレーブ1 スレーブ2
マスタ
サーバ5
スレーブ1 スレーブ2
cas(k,v1,v2)
ストア
一時的障害
レンジ用 Paxos
© Hitachi, Ltd. 2013. All rights reserved.
②複製処理失敗による不整合の対処
63
Proposer:i番目の処理を提案
Acceptor:Acceptor間で過半数承認(i番目の処理を合意)
実行 キュー
実行 スレッド
マスタ
サーバ1
スレーブ1 スレーブ2
マスタ
サーバ2
スレーブ1 スレーブ2
マスタ
サーバ3
スレーブ1 スレーブ2
マスタ
サーバ4
スレーブ1 スレーブ2
マスタ
サーバ5
スレーブ1 スレーブ2
ストア
i
cas(k,v1,v2)
一時的障害
ok
ok
ok
ok
レンジ用 Paxos
© Hitachi, Ltd. 2013. All rights reserved.
②複製処理失敗による不整合の対処
64
Acceptor:i番目の処理を実行
実行 キュー
実行 スレッド
マスタ
サーバ1
スレーブ1 スレーブ2
マスタ
サーバ2
スレーブ1 スレーブ2
マスタ
サーバ3
スレーブ1 スレーブ2
マスタ
サーバ4
スレーブ1 スレーブ2
マスタ
サーバ5
スレーブ1 スレーブ2
ストア
i
i
cas(k,v1,v2)
一時的障害
レンジ用 Paxos
© Hitachi, Ltd. 2013. All rights reserved.
②複製処理失敗による不整合の対処
65
不整合
実行 キュー
実行 スレッド
マスタ
サーバ1
スレーブ1 スレーブ2
マスタ
サーバ2
スレーブ1 スレーブ2
マスタ
サーバ3
スレーブ1 スレーブ2
マスタ
サーバ4
スレーブ1 スレーブ2
マスタ
サーバ5
スレーブ1 スレーブ2
ストア
i
i
cas(k,v2,v3)
不整合
レンジ用 Paxos
© Hitachi, Ltd. 2013. All rights reserved.
②複製処理失敗による不整合の対処
66
Proposer:i+1番目の処理を提案
Acceptor:Acceptor間で過半数承認(i+1番目の処理を合意)
実行 キュー
実行 スレッド
マスタ
サーバ1
スレーブ1 スレーブ2
マスタ
サーバ2
スレーブ1 スレーブ2
マスタ
サーバ3
スレーブ1 スレーブ2
マスタ
サーバ4
スレーブ1 スレーブ2
マスタ
サーバ5
スレーブ1 スレーブ2
ストア
i
i
i+1
cas(k,v2,v3)
不整合
レンジ用 Paxos
ok
ok
ok
ok
ok
© Hitachi, Ltd. 2013. All rights reserved.
②複製処理失敗による不整合の対処
67
Acceptor:FillGapsをおこなってからi+1番目の処理を実行
実行 キュー
実行 スレッド
マスタ
サーバ1
スレーブ1 スレーブ2
マスタ
サーバ2
スレーブ1 スレーブ2
マスタ
サーバ3
スレーブ1 スレーブ2
マスタ
サーバ4
スレーブ1 スレーブ2
マスタ
サーバ5
スレーブ1 スレーブ2
ストア
i
i
i
i+1
i+1
i+1
FillGaps
cas(k,v2,v3)
不整合
レンジ用 Paxos
© Hitachi, Ltd. 2013. All rights reserved.
②複製処理失敗による不整合の対処
68
不整合
永久的障害によるマスタ昇格
実行 キュー
実行 スレッド
マスタ
サーバ1
スレーブ1 スレーブ2
マスタ
サーバ2
マスタ スレーブ2
マスタ
サーバ3
スレーブ1 スレーブ2
マスタ
サーバ4
スレーブ1 スレーブ2
ストア
i
i
マスタ昇格
マスタ
サーバ5
スレーブ1 スレーブ2
永久的障害
不整合
レンジ用 Paxos
get(k)
© Hitachi, Ltd. 2013. All rights reserved.
②複製処理失敗による不整合の対処
69
Acceptor:マスタ昇格後はFillGapsをおこなってからgetを受付
”②複製処理失敗による不整合”が発生しても一貫性を保証する!
実行 キュー
実行 スレッド
マスタ
サーバ1
スレーブ1 スレーブ2
マスタ
サーバ2
マスタ スレーブ2
マスタ
サーバ3
スレーブ1 スレーブ2
マスタ
サーバ4
スレーブ1 スレーブ2
get(k)
ストア
i
i
i FillGaps マスタ昇格
マスタ
サーバ5
スレーブ1 スレーブ2
永久的障害
レンジ用 Paxos
不整合
© Hitachi, Ltd. 2013. All rights reserved.
②複製処理失敗による不整合の対処
70
実行 キュー
実行 スレッド
マスタ
サーバ1
スレーブ1 スレーブ2
マスタ
サーバ2
マスタ スレーブ2
マスタ
サーバ3
スレーブ1 スレーブ2
マスタ
サーバ4
スレーブ1 スレーブ2
get(k)
ストア
i
i
FillGaps マスタ昇格
マスタ
サーバ5
スレーブ1 スレーブ2
永久的障害
レンジ用 Paxos
サーバの集合が同じ処理を同じ順番で実行する
同じ順番でできなければ閉塞(一貫性>可用性)
不整合 失敗
© Hitachi, Ltd. 2013. All rights reserved. 71
③スプリットブレインによる不整合 の対処
一貫性保証のための3つの実装
© Hitachi, Ltd. 2013. All rights reserved.
③スプリットブレインによる不整合の対処
72
L2スイッチの障害
実行 キュー
実行 スレッド
マスタ
サーバ1
スレーブ1 スレーブ2
マスタ
サーバ3
スレーブ1 スレーブ2
マスタ
サーバ4
スレーブ1 スレーブ2
マスタ
サーバ5
スレーブ1 スレーブ2
ストア
マスタ
サーバ2
スレーブ1 スレーブ2
スプリット
3× 4× 5×
3× 4× 5×
1× 2×
1× 2×
1× 2×
クラスタ用 Paxos
© Hitachi, Ltd. 2013. All rights reserved.
③スプリットブレインによる不整合の対処
73
実行 キュー
実行 スレッド
マスタ
サーバ1
スレーブ1 スレーブ2
マスタ
サーバ3
スレーブ1 スレーブ2
マスタ
サーバ4
スレーブ1 スレーブ2
マスタ
サーバ5
スレーブ1 スレーブ2
ストア
マスタ
サーバ2
スレーブ1 スレーブ2
スプリット
3× 4× 5×
3× 4× 5×
1× 2×
1× 2×
1× 2×
Proposer:障害を検知したサーバ
Acceptor:すべてのサーバ
クラスタ用 Paxos
© Hitachi, Ltd. 2013. All rights reserved.
③スプリットブレインによる不整合の対処
74
実行 キュー
実行 スレッド
マスタ
サーバ1
スレーブ1 スレーブ2
マスタ
サーバ3
スレーブ1 スレーブ2
マスタ
サーバ4
スレーブ1 スレーブ2
マスタ
サーバ5
スレーブ1 スレーブ2
ストア
マスタ
サーバ2
スレーブ1 スレーブ2
スプリット
3× 4× 5×
3× 4× 5×
1× 2×
1× 2×
1× 2×
Proposer:i番目の処理を提案
Acceptor:Acceptor間で過半数承認(i番目の処理を合意)
ok
ok
ok
i
i
i
ok
ok
ok
i+1
i+1
i+1
ok
ok
i
i
ok
ok
i+1
i+1
ok
ok
i+2
i+2
合意
クラスタ用 Paxos
© Hitachi, Ltd. 2013. All rights reserved.
③スプリットブレインによる不整合の対処
75
実行 キュー
実行 スレッド
マスタ
サーバ1
スレーブ1 スレーブ2
マスタ
サーバ3
スレーブ1 スレーブ2
マスタ
サーバ4
スレーブ1 スレーブ2
マスタ
サーバ5
スレーブ1 スレーブ2
ストア
マスタ
サーバ2
スレーブ1 スレーブ2
スプリット
3× 4× 5×
3× 4× 5×
1× 2×
1× 2×
1× 2×
Acceptor:i番目の処理を実行
ok
ok
i
i
ok
ok
i+1
i+1
ok
ok
i+2
i+2
クラスタ用 Paxos
i i+1
i i+1
i i+1
© Hitachi, Ltd. 2013. All rights reserved.
マスタ
サーバ1
スレーブ1 スレーブ2
マスタ
サーバ2
スレーブ1 スレーブ2
③スプリットブレインによる不整合の対処
76
実行 キュー
実行 スレッド
マスタ
サーバ3
マスタ マスタ
マスタ
サーバ4
スレーブ1 スレーブ2
マスタ
サーバ5
スレーブ1 スレーブ2
ストア
スプリット
3× 4× 5×
3× 4× 5×
1× 2×
1× 2×
1× 2×
クラスタ用 Paxos
get(k)
get(k)
ok
ok
i
i
ok
ok
i+1
i+1
ok
ok
i+2
i+2
マスタ昇格 FillGaps
i i+1
i i+1
i i+1
不整合
複数マスタ
不整合
不整合
© Hitachi, Ltd. 2013. All rights reserved.
マスタ
サーバ1
スレーブ1 スレーブ2
マスタ
サーバ2
スレーブ1 スレーブ2
③スプリットブレインによる不整合の対処
77
実行 キュー
実行 スレッド
マスタ
サーバ3
マスタ マスタ
マスタ
サーバ4
スレーブ1 スレーブ2
マスタ
サーバ5
スレーブ1 スレーブ2
ストア
スプリット
3× 4× 5×
3× 4× 5×
1× 2×
1× 2×
1× 2×
クラスタ用 Paxos
get(k)
get(k)
ok
ok
i
i
ok
ok
i+1
i+1
ok
ok
i+2
i+2
マスタ昇格 FillGaps
失敗
成功
i i+1
i i+1
i i+1
Acceptor:過半数サーバ縮退の提案が通らなければgetを拒否
”③スプリットブレインによる不整合”が発生しても一貫性を保証する!
不整合
不整合
© Hitachi, Ltd. 2013. All rights reserved. 78
強一貫性への挑戦!
まとめ
© Hitachi, Ltd. 2013. All rights reserved. 79
強一貫性への挑戦!
Paxos
・サーバの集合が同じ処理を同じ順番で実行するためのアルゴリズム
一貫性保証のための3つの実装
①複製順序不正による不整合の回避
②複製処理失敗による不整合の対処
③スプリットブレインによる不整合の対処
© Hitachi, Ltd. 2013. All rights reserved. © Hitachi, Ltd. 2013. All rights reserved. 80
お知らせ
12年10月から新連載がスタート! □ 毎月、日立のデータベースの最新情報をお伝えします。
DBOnline 日立のデータベース 検索
日立の国産データベース シリーズが紹介されている 「国産」タブが新設!
日立の「Dr.SQL」登場!-土田正士さん 日本データベース学会 副会長
50年後には、データベースは なくなっている?!
日立のデータベース開発基地に潜入 開発者に突撃インタビュー
© Hitachi, Ltd. 2013. All rights reserved.
© Hitachi, Ltd. 2013. All rights reserved.
• Javaは,Oracle Corporation 及びその子会社,関連会社の米国及びその他の国における登録商標です。
• その他、記載の会社名、製品名は、それぞれの会社の商標または登録商標です。
• 製品の改良により予告なく記載されている仕様が変更になることがあります。
他社商品名、商標等の引用に関する表示
8
© Hitachi, Ltd. 2013. All rights reserved.
株式会社 日立製作所 情報・通信システム社
スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品
ITプラットフォーム事業本部 開発統括本部
2013/05/30
梅田多一
END
db tech showcase 大阪 2013
© Hitachi, Ltd. 2013. All rights reserved. 83