C22...

Preview:

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