Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
運用が楽になる
分散データベース Riak
Bashoジャパン株式会社
Software Engineer
佐藤貴彦
2013/07/31
BPStudy#71
©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED.	

自己紹介
•  佐藤貴彦
•  2013年7月より Basho ジャパン株式会社
•  前職も製品ベンダーで、RDBMSや分散キャッシュ製品を
中心とした、コンサルティングを担当
•  インフラ大好き
•  著書(共著)
•  絵で見てわかるITインフラの仕組み
©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED.	

Basho Technologies, Inc
•  設立:2008年1月設立
•  本社:マサチューセッツ州ケンブリッジ
•  製品
•  分散データベース Riak
•  分散型クラウドストレージ RiakCS
©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED.	

オープンソース版
エンタープライズ版
・複数クラスター間レプリケーション	
  
・SNMP	
  /	
  JMXサポート	
  
・Bashoのエンジニアによるサポート	
  
Riak と Riak CS
分散型クラウドストレージ分散データベース
+
©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED.
©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED.	

理想のシステム
「どんな故障が起こっても
データを常に整合させつつ
 サービスも止まることはない
 システム」
は存在しません   = CAP定理
©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED.	

Riakの設計ポリシー
•  Amazon Dynamo論文をベースに設計された分散KVS
•  以下に重点を置いている
•  可用性(Availability)
•  耐障害性(Fault-tolerance)
•  運用の容易性(Operational simplicity)
•  スケーラビリティ(Scalability)
©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED.	

Dynamo 論文より
•  Dynamo: Amazon’s Highly Available Key-value Store
•  可用性第一:常に書き込みができること
→ 書き込み時ではなく、読み込み時に整合性チェック
→ 例:ECサイトで常にショッピングカートを動かしたい
•  一貫性の考え方:Eventual Consistency
→ AP優先だが、チューニング可能
•  レイテンシの考え方:
→ 99.9パーセンタイルの応答を一定時間内に返す
©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED.	

Riakは Erlang/OTP上で動作
•  クラスタリングやノード間のメッセージングなどは、
Erlang/OTPにまかせている
•  Erlang/OTPとは?
•  元々はエリクソン社が電話交換機プログラムのために開発。
「分散環境」「耐障害性」「無停止動作」を目的とした
システムを構築できるように設計されている。
Riakを使ったシステムもこの恩恵を享受できる
©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED.	

Riak概要	
  
©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED.	

RiakはRDBではなくKVS
•  Riakは永続性を持ったキーバリューストア
•  Key と Value ペアで、データを Bucket に格納する
•  バイナリで格納するため、文字列、画像、あらゆるデータを
格納可能
11
Key Value
•  ID: 0001 •  Name: Basho	

•  Product: Riak	

•  Logo:
©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED.	

RiakのデータとRDBのデータ比較
12
RDBのデータ構造 Riakのデータ構造
Key/Value
Bucket
Key Value
Record(行)
Table (表)
PK
©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED.	

Riakノードとは
•  1つのRiakノードは、OSプロセス上は1つのErlangプロセス
•  1つの物理サーバーにつき、1Riakノードを起動
•  GCを気にして複数プロセスに分けるといった必要はない
ノード1 ノード2
物理サーバー1 物理サーバー2
©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED.	

•  データは Riak によって自動的に分散配置される
•  ユーザーはデータがどこにあるかを意識する必要はない
データの自動分散配置
サーバー何台あっても
気にならないよ!
14
©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED.	

自動クラスタリング
•  クラスタの参加離脱(サーバーの追加削除)はコマンド
を実行すればあとは自動的に行われる
•  すべてのサーバーは対等な関係(マスターレス)であり
単一障害点(SPOF)が無い
15
クラスタに
参加させて!僕らは皆対等な
関係です!
©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED.	

データの自動再配置
•  サーバー追加時などは自動でデータの再配置が行われる
16
©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED.	

•  データの更新時は、異なるRiakノードに自動複製される
•  デフォルト設定では3つのサーバーにデータを保存
•  つまり2重障害(ディスク障害)でもデータが失われない
データの自動レプリケーション
1	

 2 3
更新	

17
©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED.	

•  アクセスできないサーバーへの問い合わせはスキップ
•  一時的に他のサーバーが受け持つ
故障ノードの自動回避
しばらく代理を
引き受けます更新	

18
1	

 2 3
©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED.	

•  障害などで失われたデータの複製は自動復旧される
データの自動復旧
19
©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED.	

クラスタ間自動レプリケーション
•  複数のRiakクラスタ間でデータのレプリケーション
•  DRサイトの作成を実現
•  Riak の Enterprise版でのみ提供
関東クラスタ 関西クラスタ(DRサイト)
20
©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED.	

つまり
もし夜中にノードが落ちたら?	

	

	

夜はゆっくり寝て、翌朝対応!
©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED.	

Riak	
  詳細	
  
©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED.	

仮想ノード(vnode)
•  Riakノードの内部はさらにvnodeと呼ばれる仮想ノード
•  実際のデータは、Keyから計算されたハッシュ値により
処理されるvnodeが決定される
vnode
vnode
vnode
vnode
vnode
vnode
vnode
vnode
Riakノード(OSプロセス)
©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED.	

仮想ノード(vnode)のデータ
•  vnode内のデータはファイルシステム上に保存される
•  vnodeと同じ数だけ各ノードに配置される
node1 node2 node3 node4
©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED.	

1つのパーティションを
1つのvnodeが担当
Riakにおける仮想ノードとRing
hash(bucket/key)
から160bitのハッシュ値を計算
02 - 1
160
160bitのハッシュ空間を、P個の	

パーティション(範囲)に分解
vnode
この範囲のデータは
僕が担当します。
©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED.	

1つのパーティションを
1つのvnodeが担当
Riakにおける仮想ノードとRing
hash(bucket/key)
から160bitのハッシュ値を計算
例)P=32 の場合
32個のパーティションを
32個のvnodeで配分
160bitのハッシュ空間を、P個の	

パーティション(範囲)に分解
Ring
vnode
この範囲のデータは
僕が担当します。
02 - 1
160
©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED.	

Riakにおける仮想ノードとRing
hash(bucket/key)
から160bitのハッシュ値を計算
vnode
この範囲のデータは
僕が担当します。
160bitのハッシュ空間を、P個の	

パーティション(範囲)に分解
Ring
1つのパーティションを
1つのvnodeが担当
node3
node2
node1
node4
02 - 1
160
例)P=32, 4ノードの場合
32個のパーティションを
32個のvnodeで配分し、	

4つのRiakノードで配分。
©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED.	

Riakにおける正常時の挙動	
  
©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED.	

書き込み(put)時の挙動
•  Riakノードにデータがputされるとき、
N個の複製を生成する(default
N=3)。
•  複製は隣接するvnodeに保存される。
(隣接するvnodeは必ず異なるRiak
ノード上にある)
→ 物理ノード障害に対応
•  W個の保存に成功した時点でクライ
アントに応答を返す。(default W=2)
•  すべてのノードの応答を待たない。
これはレイテンシを短くするため。
Riak
Client
node3
node2
node1
node4
put
©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED.	

読み込み(get)時の挙動
•  Riakノードからデータをgetする
とき、R個のノードが応答を返した
次点で、クライアントに返す
(default R=2)
Riak
Client
node3
node2
node1
node4
get
©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED.	

レプリカの整合性を保つ
Quorum-based Protocol
•  put/getや、put/putの競合が発生しても
以下の条件を満たせば競合を解決できる
•  W+R  N
→ put/getが競合しても、get側は必ず最
新のオブジェクトを得られる
•  W  N/2
→ put/putが競合しても、衝突を知ること
ができる。
•  Riakのデフォルト値は N=3, W=2, R=2
•  あとはオブジェクトの時間を比較可能
Riak
Client
node3
node2
node1
node4
Riak
Client
put
get
©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED.	

整合性を保てる例保てない例
•  N=4, W=3, R=2 の場合
W+R  N , W  N/2 を満たす
•  N=3, W=3, R=1 の場合
W+R  N , W  N/2 を満たす
put
get
put
get
old
new
•  N=3, W=2, R=1 の場合
W+R  N を満たしていない
put
get古いデータを読んでしまうかも
©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED.	

オブジェクトの内部時計
Vector Clocks
•  競合が発生した場合、最新オブジェ
クトを得るには、どのオブジェクト
が最新かを比較する必要がある
→ オブジェクトのバージョン管理
•  各オブジェクトは「誰」が「いつ」
更新したを記録する、オブジェクト
の世界における時計 Vector Clocks
を持っている。
•  オブジェクトの系譜をたどれる
Riak
Client
node3
node2
node1
node4
Riak
Client
過去 現在
put
get
©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED.	

put時の競合の解決は?
LWWとSiblings
•  put/putの競合が起こった場合、Vector
Clocks で新旧判断がつくなら、新しい方
を残す。判断がつかない場合は?
•  Last Write Wins
→ 後から処理された方を残す。
•  Siblings
Vector Clocksからは、新旧判断がつかな
いオブジェクトは、両方共残す。
 
Riak
Client
node3
node2
node1
node4
Riak
Client
事実はなかったことに…
put put
どちらも最新バージョン
©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED.	

Riakにおける障害時の挙動	
  
©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED.	

ノード障害時の書き込み挙動
Hinted Handoff
•  ノード障害が発生して書き込みが
できない場合、一時的に次のノー
ドに書き込みに行く。この動作を
Handoff と呼ぶ。
•  PUT,GET,DELETEリクエストは、フ
ォールバックノードに転送。
put
Riak
Client
node3
node2
node1
node4
フォールバックノードに
レプリカが保存される
障害中・・・
©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED.	

ノード復旧時の書き込み挙動
Hinted Handoff
•  障害ノードが復帰した場合、フォー
ルバックノードから、あずかって
いたオブジェクトを受け取る。
node3
node2
node1
node4
復旧しました
©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED.	

障害から復旧しなかったら?
Read Repair
•  保存データの部分消失があった場合
get時に気がつくことができる。
•  再度複製を生成。
•  vnode間でオブジェクトの最新バ
ージョンを維持しようとする。
node3
node2
node1
node4
Riak
Client
get
レプリカ足りない…?
©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED.	

自動修復機能
Active Anti-Entropy
•  データの複製が失われた状態を、
実際にgetするまで気がつけないこ
とは危険。
•  AAE機能により定期的に自動修復
•  vnode単位でデータのハッシュツ
リーを持っている。定期的にハッ
シュ値の比較を行うことで、デー
タ複製間の不整合を検知し、Read
Repairを行う。
node3
node2
node1
node4
このvnodeのハッシュだけ
一致しないぞ・・・?
©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED.	

Riakデータアクセス	
  
©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED.	

Riakのデータ問い合わせの種類
•  Key/Valueの読み書き
•  セカンダリインデックス(2i)によるタグ付け
•  MapReduceによる分散処理(複雑なクエリ)
•  全文検索
41
get
tagA tagB
put
©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED.	

DEMO	
  
©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED.	

RiakCS	
  
ちょっとだけ
©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED.	

Riak CS の特徴
•  Riak CS は「分散」オブジェクトストレージ
•  Riakをベースに作られており、Riakの持つ拡張性、可用性、
耐障害性、運用容易性をそのまま受け継いでいる
•  Amazon S3 互換のAPI(NFS、CIFSなどのAPIは持たない)
•  Riak CS を使うことで、Amazon S3 互換のクラウドを構
築できる
44
©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED.	

Riak 上に作られた Riak CS
45
1MB単位に分割してRiakへ
高可用性があって	

拡張できる大きな
ストレージとして
使えます
©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED.	

まとめ	
  
©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED.	

まとめ
もし夜中にノードが落ちたら?	

ゆっくり寝て翌朝対応できる。	

	

運用が楽になる分散データベース
©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED.	

Use	
  Cases	
  /	
  Customers	
  
©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED.	

Riak/Riak CS 適用業界の例
•  小売業(ECサイト)
•  医療
•  広告 / マーケティング
•  モバイルサービス
•  ゲーム
•  メディア
•  ソーシャルネットワーク
•  課金 / 支払い
•  セキュリティ
•  クラウドサービス
大量データの保存が必要な場合はもちろ
ん、非常に高い可用性や耐障害性を求め
て弊社製品を使って頂いております!
49
©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED.	

Basho ユーザー
50

More Related Content

運用が楽になる分散データベース Riak

  • 2. ©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED. 自己紹介 •  佐藤貴彦 •  2013年7月より Basho ジャパン株式会社 •  前職も製品ベンダーで、RDBMSや分散キャッシュ製品を 中心とした、コンサルティングを担当 •  インフラ大好き •  著書(共著) •  絵で見てわかるITインフラの仕組み
  • 3. ©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED. Basho Technologies, Inc •  設立:2008年1月設立 •  本社:マサチューセッツ州ケンブリッジ •  製品 •  分散データベース Riak •  分散型クラウドストレージ RiakCS
  • 4. ©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED. オープンソース版 エンタープライズ版 ・複数クラスター間レプリケーション   ・SNMP  /  JMXサポート   ・Bashoのエンジニアによるサポート   Riak と Riak CS 分散型クラウドストレージ分散データベース +
  • 5. ©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED.
  • 6. ©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED. 理想のシステム 「どんな故障が起こっても データを常に整合させつつ  サービスも止まることはない  システム」 は存在しません   = CAP定理
  • 7. ©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED. Riakの設計ポリシー •  Amazon Dynamo論文をベースに設計された分散KVS •  以下に重点を置いている •  可用性(Availability) •  耐障害性(Fault-tolerance) •  運用の容易性(Operational simplicity) •  スケーラビリティ(Scalability)
  • 8. ©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED. Dynamo 論文より •  Dynamo: Amazon’s Highly Available Key-value Store •  可用性第一:常に書き込みができること → 書き込み時ではなく、読み込み時に整合性チェック → 例:ECサイトで常にショッピングカートを動かしたい •  一貫性の考え方:Eventual Consistency → AP優先だが、チューニング可能 •  レイテンシの考え方: → 99.9パーセンタイルの応答を一定時間内に返す
  • 9. ©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED. Riakは Erlang/OTP上で動作 •  クラスタリングやノード間のメッセージングなどは、 Erlang/OTPにまかせている •  Erlang/OTPとは? •  元々はエリクソン社が電話交換機プログラムのために開発。 「分散環境」「耐障害性」「無停止動作」を目的とした システムを構築できるように設計されている。 Riakを使ったシステムもこの恩恵を享受できる
  • 10. ©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED. Riak概要  
  • 11. ©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED. RiakはRDBではなくKVS •  Riakは永続性を持ったキーバリューストア •  Key と Value ペアで、データを Bucket に格納する •  バイナリで格納するため、文字列、画像、あらゆるデータを 格納可能 11 Key Value •  ID: 0001 •  Name: Basho •  Product: Riak •  Logo:
  • 12. ©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED. RiakのデータとRDBのデータ比較 12 RDBのデータ構造 Riakのデータ構造 Key/Value Bucket Key Value Record(行) Table (表) PK
  • 13. ©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED. Riakノードとは •  1つのRiakノードは、OSプロセス上は1つのErlangプロセス •  1つの物理サーバーにつき、1Riakノードを起動 •  GCを気にして複数プロセスに分けるといった必要はない ノード1 ノード2 物理サーバー1 物理サーバー2
  • 14. ©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED. •  データは Riak によって自動的に分散配置される •  ユーザーはデータがどこにあるかを意識する必要はない データの自動分散配置 サーバー何台あっても 気にならないよ! 14
  • 15. ©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED. 自動クラスタリング •  クラスタの参加離脱(サーバーの追加削除)はコマンド を実行すればあとは自動的に行われる •  すべてのサーバーは対等な関係(マスターレス)であり 単一障害点(SPOF)が無い 15 クラスタに 参加させて!僕らは皆対等な 関係です!
  • 16. ©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED. データの自動再配置 •  サーバー追加時などは自動でデータの再配置が行われる 16
  • 17. ©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED. •  データの更新時は、異なるRiakノードに自動複製される •  デフォルト設定では3つのサーバーにデータを保存 •  つまり2重障害(ディスク障害)でもデータが失われない データの自動レプリケーション 1 2 3 更新 17
  • 18. ©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED. •  アクセスできないサーバーへの問い合わせはスキップ •  一時的に他のサーバーが受け持つ 故障ノードの自動回避 しばらく代理を 引き受けます更新 18 1 2 3
  • 19. ©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED. •  障害などで失われたデータの複製は自動復旧される データの自動復旧 19
  • 20. ©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED. クラスタ間自動レプリケーション •  複数のRiakクラスタ間でデータのレプリケーション •  DRサイトの作成を実現 •  Riak の Enterprise版でのみ提供 関東クラスタ 関西クラスタ(DRサイト) 20
  • 21. ©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED. つまり もし夜中にノードが落ちたら? 夜はゆっくり寝て、翌朝対応!
  • 22. ©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED. Riak  詳細  
  • 23. ©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED. 仮想ノード(vnode) •  Riakノードの内部はさらにvnodeと呼ばれる仮想ノード •  実際のデータは、Keyから計算されたハッシュ値により 処理されるvnodeが決定される vnode vnode vnode vnode vnode vnode vnode vnode Riakノード(OSプロセス)
  • 24. ©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED. 仮想ノード(vnode)のデータ •  vnode内のデータはファイルシステム上に保存される •  vnodeと同じ数だけ各ノードに配置される node1 node2 node3 node4
  • 25. ©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED. 1つのパーティションを 1つのvnodeが担当 Riakにおける仮想ノードとRing hash(bucket/key) から160bitのハッシュ値を計算 02 - 1 160 160bitのハッシュ空間を、P個の パーティション(範囲)に分解 vnode この範囲のデータは 僕が担当します。
  • 26. ©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED. 1つのパーティションを 1つのvnodeが担当 Riakにおける仮想ノードとRing hash(bucket/key) から160bitのハッシュ値を計算 例)P=32 の場合 32個のパーティションを 32個のvnodeで配分 160bitのハッシュ空間を、P個の パーティション(範囲)に分解 Ring vnode この範囲のデータは 僕が担当します。 02 - 1 160
  • 27. ©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED. Riakにおける仮想ノードとRing hash(bucket/key) から160bitのハッシュ値を計算 vnode この範囲のデータは 僕が担当します。 160bitのハッシュ空間を、P個の パーティション(範囲)に分解 Ring 1つのパーティションを 1つのvnodeが担当 node3 node2 node1 node4 02 - 1 160 例)P=32, 4ノードの場合 32個のパーティションを 32個のvnodeで配分し、 4つのRiakノードで配分。
  • 28. ©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED. Riakにおける正常時の挙動  
  • 29. ©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED. 書き込み(put)時の挙動 •  Riakノードにデータがputされるとき、 N個の複製を生成する(default N=3)。 •  複製は隣接するvnodeに保存される。 (隣接するvnodeは必ず異なるRiak ノード上にある) → 物理ノード障害に対応 •  W個の保存に成功した時点でクライ アントに応答を返す。(default W=2) •  すべてのノードの応答を待たない。 これはレイテンシを短くするため。 Riak Client node3 node2 node1 node4 put
  • 30. ©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED. 読み込み(get)時の挙動 •  Riakノードからデータをgetする とき、R個のノードが応答を返した 次点で、クライアントに返す (default R=2) Riak Client node3 node2 node1 node4 get
  • 31. ©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED. レプリカの整合性を保つ Quorum-based Protocol •  put/getや、put/putの競合が発生しても 以下の条件を満たせば競合を解決できる •  W+R N → put/getが競合しても、get側は必ず最 新のオブジェクトを得られる •  W N/2 → put/putが競合しても、衝突を知ること ができる。 •  Riakのデフォルト値は N=3, W=2, R=2 •  あとはオブジェクトの時間を比較可能 Riak Client node3 node2 node1 node4 Riak Client put get
  • 32. ©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED. 整合性を保てる例保てない例 •  N=4, W=3, R=2 の場合 W+R N , W N/2 を満たす •  N=3, W=3, R=1 の場合 W+R N , W N/2 を満たす put get put get old new •  N=3, W=2, R=1 の場合 W+R N を満たしていない put get古いデータを読んでしまうかも
  • 33. ©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED. オブジェクトの内部時計 Vector Clocks •  競合が発生した場合、最新オブジェ クトを得るには、どのオブジェクト が最新かを比較する必要がある → オブジェクトのバージョン管理 •  各オブジェクトは「誰」が「いつ」 更新したを記録する、オブジェクト の世界における時計 Vector Clocks を持っている。 •  オブジェクトの系譜をたどれる Riak Client node3 node2 node1 node4 Riak Client 過去 現在 put get
  • 34. ©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED. put時の競合の解決は? LWWとSiblings •  put/putの競合が起こった場合、Vector Clocks で新旧判断がつくなら、新しい方 を残す。判断がつかない場合は? •  Last Write Wins → 後から処理された方を残す。 •  Siblings Vector Clocksからは、新旧判断がつかな いオブジェクトは、両方共残す。   Riak Client node3 node2 node1 node4 Riak Client 事実はなかったことに… put put どちらも最新バージョン
  • 35. ©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED. Riakにおける障害時の挙動  
  • 36. ©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED. ノード障害時の書き込み挙動 Hinted Handoff •  ノード障害が発生して書き込みが できない場合、一時的に次のノー ドに書き込みに行く。この動作を Handoff と呼ぶ。 •  PUT,GET,DELETEリクエストは、フ ォールバックノードに転送。 put Riak Client node3 node2 node1 node4 フォールバックノードに レプリカが保存される 障害中・・・
  • 37. ©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED. ノード復旧時の書き込み挙動 Hinted Handoff •  障害ノードが復帰した場合、フォー ルバックノードから、あずかって いたオブジェクトを受け取る。 node3 node2 node1 node4 復旧しました
  • 38. ©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED. 障害から復旧しなかったら? Read Repair •  保存データの部分消失があった場合 get時に気がつくことができる。 •  再度複製を生成。 •  vnode間でオブジェクトの最新バ ージョンを維持しようとする。 node3 node2 node1 node4 Riak Client get レプリカ足りない…?
  • 39. ©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED. 自動修復機能 Active Anti-Entropy •  データの複製が失われた状態を、 実際にgetするまで気がつけないこ とは危険。 •  AAE機能により定期的に自動修復 •  vnode単位でデータのハッシュツ リーを持っている。定期的にハッ シュ値の比較を行うことで、デー タ複製間の不整合を検知し、Read Repairを行う。 node3 node2 node1 node4 このvnodeのハッシュだけ 一致しないぞ・・・?
  • 40. ©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED. Riakデータアクセス  
  • 41. ©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED. Riakのデータ問い合わせの種類 •  Key/Valueの読み書き •  セカンダリインデックス(2i)によるタグ付け •  MapReduceによる分散処理(複雑なクエリ) •  全文検索 41 get tagA tagB put
  • 42. ©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED. DEMO  
  • 43. ©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED. RiakCS   ちょっとだけ
  • 44. ©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED. Riak CS の特徴 •  Riak CS は「分散」オブジェクトストレージ •  Riakをベースに作られており、Riakの持つ拡張性、可用性、 耐障害性、運用容易性をそのまま受け継いでいる •  Amazon S3 互換のAPI(NFS、CIFSなどのAPIは持たない) •  Riak CS を使うことで、Amazon S3 互換のクラウドを構 築できる 44
  • 45. ©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED. Riak 上に作られた Riak CS 45 1MB単位に分割してRiakへ 高可用性があって 拡張できる大きな ストレージとして 使えます
  • 46. ©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED. まとめ  
  • 47. ©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED. まとめ もし夜中にノードが落ちたら? ゆっくり寝て翌朝対応できる。 運用が楽になる分散データベース
  • 48. ©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED. Use  Cases  /  Customers  
  • 49. ©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED. Riak/Riak CS 適用業界の例 •  小売業(ECサイト) •  医療 •  広告 / マーケティング •  モバイルサービス •  ゲーム •  メディア •  ソーシャルネットワーク •  課金 / 支払い •  セキュリティ •  クラウドサービス 大量データの保存が必要な場合はもちろ ん、非常に高い可用性や耐障害性を求め て弊社製品を使って頂いております! 49
  • 50. ©2013 BASHO TECHNOLOGIES INC.ALL RIGHTS RESERVED. Basho ユーザー 50