84
© Hitachi, Ltd. 2013. All rights reserved. 株式会社 日立製作所 情報・通信システム社 スプリットブレインになっても 一貫性を保証する インメモリデータグリッド製品 ITプラットフォーム事業本部 開発統括本部 2013/05/30 梅田多一 db tech showcase 大阪 2013

C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by Taichi Umeda

Embed Size (px)

Citation preview

Page 1: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© Hitachi, Ltd. 2013. All rights reserved.

株式会社 日立製作所 情報・通信システム社

スプリットブレインになっても 一貫性を保証する インメモリデータグリッド製品

ITプラットフォーム事業本部 開発統括本部

2013/05/30

梅田多一

db tech showcase 大阪 2013

Page 2: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© Hitachi, Ltd. 2013. All rights reserved.

自己紹介

Page 3: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© Hitachi, Ltd. 2013. All rights reserved. 2

DB Online http://enterprisezine.jp/dbonline/detail/3991

2000年入社 ・Cosminexus開発 ・Cosminexusテクニカルサポート 仕事のスタイル ・TTP ・GNN

Page 4: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© Hitachi, Ltd. 2013. All rights reserved.

インメモリデータグリッドって何だ?

Contents

インメモリデータグリッドの要素技術

強一貫性への挑戦!

スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品

Page 5: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© Hitachi, Ltd. 2013. All rights reserved.

インメモリデータグリッドって 何だ?

スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品

Page 6: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© Hitachi, Ltd. 2013. All rights reserved. 5

インメモリデータグリッドって何だ?

登場の背景

Page 7: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© Hitachi, Ltd. 2013. All rights reserved. 6

登場の背景

・発信データの爆発的増加(Big Data)

・データを扱うミドルウェアへの要件として

大量発信データの高速処理、リアルタイム分析、大量蓄積データの高速検索、、

・インメモリデータグリッド、複合イベント処理、超高速DB、、

Big Data

モノ の発信

人 の発信

電力メーター

運行情報

カーナビ

GPS

監視映像

環境・気象データ

設備監視

物流トレース

ICカード利用

診断画像・電子カルテ

データベース

メール・オフィス文書

つぶやき

SNS

通話ログ

スマートフォン

人の移動

ネット購入

コンテンツダウンロード

動画・画像・音声

Page 8: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© Hitachi, Ltd. 2013. All rights reserved. 7

日立の取り組み

インメモリデータグリッドって何だ?

Page 9: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© Hitachi, Ltd. 2013. All rights reserved. 8

日立の取り組み

①uCosminexus Elastic Application Data store(以下EADs)(C22)

②uCosminexus Stream Data Platform(B14)

③Hitachi Advanced Data Binder プラットフォーム(D24)

現場の状況をいち早く把握 問題の解決

新たな価値の提供

デー

修理

指示

売り

場へ

の指

デー

③大量蓄積データの高速検索

①大量発信データの高速処理

②大量発信データのリアルタイム分析

Page 10: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© Hitachi, Ltd. 2013. All rights reserved. 9

インメモリデータグリッドって何だ?

日立の案件

Page 11: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© Hitachi, Ltd. 2013. All rights reserved. 10

日立の案件(電力)

工場

オフィス

戸建

検針値

1日分

スマートメータ

収集サーバから出力される大量の検針値(30分値)を、

一定期間(40日)分DBに格納したい。

大量の検針値を 高速に受信

当日分メモリ保持、日次ジョブ実行による 一日分ファイル出力、一括DBロード

Page 12: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© Hitachi, Ltd. 2013. All rights reserved. 11

日立の案件(通信)

メディエーション

交換機から出力される大量のRawCDRを、

課金システムや帯域制御システム向けのCDRに編集したい。

RawCDR

CDR

RawCDR:

接続開始/一定時間経過/HO発生/接続終了などのタイミングで出力される、

接続ID、接続時間、通信量などの情報。

CDR:

同一の接続に対する分割情報であるRawCDRを結合(通信量の合算など)した情報。

大量の接続情報を 高速に受信

同一接続のデータ集合を イベントドリブンに編集

Page 13: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© Hitachi, Ltd. 2013. All rights reserved. 12

インメモリデータグリッドって何だ?

インメモリデータグリッドの 3つの特徴

Page 14: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© Hitachi, Ltd. 2013. All rights reserved. 13

インメモリデータグリッドの3つの特徴

①インメモリKVSである

Page 15: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© 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

Page 16: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© Hitachi, Ltd. 2013. All rights reserved. 15

インメモリデータグリッドの3つの特徴

②分散している

Page 17: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© Hitachi, Ltd. 2013. All rights reserved. 16

インメモリデータグリッドの3つの特徴

②分散している

・複数サーバのメモリ上にデータを分散配置

・スループット性能と拡張性

Key Value

Foo A

Bar 0

Key Value

Baz A,0

Application Server

インメモリ分散KVS

Page 18: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© Hitachi, Ltd. 2013. All rights reserved. 17

インメモリデータグリッドの3つの特徴

③実行できる

Page 19: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© 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

インメモリデータグリッド

グループ処理

ユーザロジック

Page 20: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© Hitachi, Ltd. 2013. All rights reserved. 19

まとめ

インメモリデータグリッドって何だ?

Page 21: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© Hitachi, Ltd. 2013. All rights reserved. 20

大量発信データの高速処理(レスポンス、スループット、スケールアウト)

を実現するために以下の特徴を持つもの

・インメモリKVSである

・分散している

・実行できる

インメモリデータグリッドって何だ?

Page 22: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© Hitachi, Ltd. 2013. All rights reserved.

インメモリデータグリッドの 要素技術

(分散基盤編 )

スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品

Page 23: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© Hitachi, Ltd. 2013. All rights reserved. 22

インメモリデータグリッドの要素技術

コンシステントハッシング ~分散の技術~

Page 24: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© Hitachi, Ltd. 2013. All rights reserved. 23

コンシステントハッシング

・サーバは232の範囲に等分配置

・Keyのハッシュ値からマスタの保存先を決定

EADs Tool

231-1 | -231

Put Foo A

レンジ Hash(Foo)

マスタ

サーバ

Page 25: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© Hitachi, Ltd. 2013. All rights reserved. 24

インメモリデータグリッドの要素技術

レプリケーション ~冗長化の技術~

Page 26: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© Hitachi, Ltd. 2013. All rights reserved. 25

レプリケーション

・多重度定義に従いデータを複製

・高速化のため非同期

EADs Tool

231-1 | -231

Put Foo A

レンジ Hash(Foo)

スレーブ1

スレーブ2

マスタ

サーバ

Page 27: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© Hitachi, Ltd. 2013. All rights reserved. 26

レプリケーション

・1サーバは複数レンジのデータを保持

EADs Tool

231-1 | -231

スレーブ1

スレーブ2

マスタ

Page 28: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© Hitachi, Ltd. 2013. All rights reserved. 27

インメモリデータグリッドの要素技術

マスタ昇格 ~耐障害性の技術~

Page 29: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© Hitachi, Ltd. 2013. All rights reserved. 28

マスタ昇格(障害時)

・ハートビートおよびヘルスチェックによる障害検知

・サーバを切り離しマスタを切り替える

EADs Tool

231-1 | -231

スレーブ1 →マスタ

障害

Page 30: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© Hitachi, Ltd. 2013. All rights reserved. 29

マスタ昇格(復旧時)

・運用機能によるサーバ追加

・レンジ単位にデータ転送

EADs Tool

復旧サーバ

復旧レンジ

転送速度

Page 31: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© Hitachi, Ltd. 2013. All rights reserved. 30

マスタ昇格(復旧時)

EADs Tool

・運用機能によるサーバ追加

・レンジ単位にデータ転送

復旧サーバ

復旧レンジ

転送速度

Page 32: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© Hitachi, Ltd. 2013. All rights reserved. 31

マスタ昇格(復旧時)

EADs Tool

・運用機能によるサーバ追加

・レンジ単位にデータ転送

復旧サーバ

復旧レンジ

転送速度

Page 33: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© Hitachi, Ltd. 2013. All rights reserved. 32

マスタ昇格(復旧時)

EADs Tool

・サーバを追加しマスタを切り替える

復旧

Page 34: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© Hitachi, Ltd. 2013. All rights reserved. 33

整合性と一貫性

インメモリデータグリッドの要素技術

Page 35: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© Hitachi, Ltd. 2013. All rights reserved. 34

整合性:マスタとスレーブの値が同じ

一貫性:すべてのクライアントから最新の値が見える

整合性と一貫性

Foo=A

Foo=A

Foo=A

Get Foo

Get Foo

→A

→A

Page 36: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© Hitachi, Ltd. 2013. All rights reserved. 35

インメモリデータグリッドの要素技術

一貫性の3つの課題

Page 37: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© Hitachi, Ltd. 2013. All rights reserved. 36

①複製順序不正による不整合

一貫性の3つの課題

Page 38: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© 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つの課題

整合性:マスタとスレーブの値が同じ

一貫性:すべてのクライアントから最新の値が見える

Page 39: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© Hitachi, Ltd. 2013. All rights reserved. 38

一貫性の3つの課題

②複製処理失敗による不整合

Page 40: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© Hitachi, Ltd. 2013. All rights reserved. 39

②一時的障害(サーバ、ネットワーク)⇒複製処理失敗

⇒不整合⇒マスタ昇格(永久的障害時)⇒一貫性?

CAS Bar 0 1

Bar=01

Bar=01

Bar=0

失敗

成功

CAS: Compare and Swap

一貫性の3つの課題

整合性:マスタとスレーブの値が同じ

一貫性:すべてのクライアントから最新の値が見える

Page 41: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© Hitachi, Ltd. 2013. All rights reserved. 40

③スプリットブレインによる不整合

一貫性の3つの課題

Page 42: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© Hitachi, Ltd. 2013. All rights reserved. 41

③L2スイッチの障害⇒ネットワーク分断

⇒複数マスタ⇒一貫性?

①Put Foo A

②Put Foo B

①Foo=A

②Foo=B

②Foo=B

マスタはこのサーバだ!

マスタはこのサーバだ!

スプリット

一貫性の3つの課題

整合性:マスタとスレーブの値が同じ

一貫性:すべてのクライアントから最新の値が見える

Page 43: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© Hitachi, Ltd. 2013. All rights reserved. 42

インメモリデータグリッドの要素技術

参考

Page 44: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© Hitachi, Ltd. 2013. All rights reserved. 43

インメモリデータグリッドの要素技術

ゴシッププロトコル ~結果整合性の技術~

Page 45: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© Hitachi, Ltd. 2013. All rights reserved. 44

ゴシッププロトコル

・サーバ間で情報交換

・古いデータは新しいデータで上書き

・マスタとスレーブの値がそのうち同じ(結果整合性)

・最新の値が見えるとは限らない

整合性:マスタとスレーブの値が同じ

一貫性:すべてのクライアントから最新の値が見える

Page 46: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© Hitachi, Ltd. 2013. All rights reserved. 45

インメモリデータグリッドの要素技術

リードリペア ~結果整合性の技術~

Page 47: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© Hitachi, Ltd. 2013. All rights reserved. 46

リードリペア

・読み込み処理時に複数のサーバからデータを取得

・古いデータは新しいデータで上書き

・マスタとスレーブの値がそのうち同じ(結果整合性)

・最新の値が見えるとは限らない(確度を調整可能(QUORUM))

整合性:マスタとスレーブの値が同じ

一貫性:すべてのクライアントから最新の値が見える

Page 48: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© Hitachi, Ltd. 2013. All rights reserved. 47

インメモリデータグリッドの要素技術

まとめ

Page 49: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© Hitachi, Ltd. 2013. All rights reserved. 48

インメモリデータグリッドの要素技術

要素技術

・コンシステントハッシング

・レプリケーション

・マスタ昇格

・ゴシッププロトコル

・リードリペア

一貫性の3つの課題

①複製順序不正による不整合

②複製処理失敗による不整合

③スプリットブレインによる不整合

Page 50: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© Hitachi, Ltd. 2013. All rights reserved.

強一貫性への挑戦!

スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品

Page 51: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© Hitachi, Ltd. 2013. All rights reserved. 50

強一貫性への挑戦!

解決へのアプローチ

Page 52: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© Hitachi, Ltd. 2013. All rights reserved. 51

解決へのアプローチ

①複製順序不正による不整合

②複製処理失敗による不整合

③スプリットブレインによる不整合

分散合意アルゴリズムPaxos*の適用

* The Part-Time Parliament LESLIE LAMPORT, 1998

Page 53: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© Hitachi, Ltd. 2013. All rights reserved. 52

強一貫性への挑戦!

Paxosとは

Page 54: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© 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 整合

Page 55: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© Hitachi, Ltd. 2013. All rights reserved.

Paxosとは

54

Proposer:

1. i番目の処理を提案

Acceptor:

2. Acceptor間で過半数承認(i番目の処理を合意)

3. i番目の処理を実行

※i-1番目までの処理を実行していなければ、

i-1番目までの処理を他のAcceptorから取得して実行(FillGaps)

Page 56: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© Hitachi, Ltd. 2013. All rights reserved. 55

強一貫性への挑戦!

一貫性保証のための3つの実装

Page 57: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© Hitachi, Ltd. 2013. All rights reserved. 56

一貫性保証のための3つの実装

①複製順序不正による不整合 の回避

Page 58: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© 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

Page 59: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© 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

Page 60: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© 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

Page 61: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© 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

失敗

Page 62: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© Hitachi, Ltd. 2013. All rights reserved. 61

②複製処理失敗による不整合 の対処

一貫性保証のための3つの実装

Page 63: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© 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

Page 64: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© 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

Page 65: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© 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

Page 66: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© 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

Page 67: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© 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

Page 68: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© 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

Page 69: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© 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)

Page 70: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© 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

不整合

Page 71: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© 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

サーバの集合が同じ処理を同じ順番で実行する

同じ順番でできなければ閉塞(一貫性>可用性)

不整合 失敗

Page 72: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© Hitachi, Ltd. 2013. All rights reserved. 71

③スプリットブレインによる不整合 の対処

一貫性保証のための3つの実装

Page 73: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© 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

Page 74: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© 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

Page 75: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© 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

Page 76: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© 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

Page 77: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© 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

不整合

複数マスタ

不整合

不整合

Page 78: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© 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を拒否

”③スプリットブレインによる不整合”が発生しても一貫性を保証する!

不整合

不整合

Page 79: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© Hitachi, Ltd. 2013. All rights reserved. 78

強一貫性への挑戦!

まとめ

Page 80: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© Hitachi, Ltd. 2013. All rights reserved. 79

強一貫性への挑戦!

Paxos

・サーバの集合が同じ処理を同じ順番で実行するためのアルゴリズム

一貫性保証のための3つの実装

①複製順序不正による不整合の回避

②複製処理失敗による不整合の対処

③スプリットブレインによる不整合の対処

Page 81: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© 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.

Page 82: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© Hitachi, Ltd. 2013. All rights reserved.

• Javaは,Oracle Corporation 及びその子会社,関連会社の米国及びその他の国における登録商標です。

• その他、記載の会社名、製品名は、それぞれの会社の商標または登録商標です。

• 製品の改良により予告なく記載されている仕様が変更になることがあります。

他社商品名、商標等の引用に関する表示

8

Page 83: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© Hitachi, Ltd. 2013. All rights reserved.

株式会社 日立製作所 情報・通信システム社

スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品

ITプラットフォーム事業本部 開発統括本部

2013/05/30

梅田多一

END

db tech showcase 大阪 2013

Page 84: C22 スプリットブレインになっても一貫性を保証するインメモリデータグリッド製品 by  Taichi Umeda

© Hitachi, Ltd. 2013. All rights reserved. 83