dbts osaka 2014 D13 hitachiKVS Masakata Kawanishi
Upcoming SlideShare
Loading in...5
×
 

dbts osaka 2014 D13 hitachiKVS Masakata Kawanishi

on

  • 196 views

 

Statistics

Views

Total Views
196
Views on SlideShare
196
Embed Views
0

Actions

Likes
0
Downloads
4
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

dbts osaka 2014 D13 hitachiKVS Masakata Kawanishi dbts osaka 2014 D13 hitachiKVS Masakata Kawanishi Presentation Transcript

  • © Hitachi, Ltd. 2014. All rights reserved. 日立だからこだわる。 ~一貫性を追求したインメモリ分散KVS~ 株式会社日立製作所 情報・通信システム社 ITプラットフォーム事業本部 開発統括本部 ソフトウェア開発本部 第2AP基盤ソフト設計部 川西 正容 1
  • © Hitachi, Ltd. 2014. All rights reserved. 自己紹介 名前:川西 正容(カワニシ マサカタ) 会社:2012年度入社。とても大きい 仕事:ミドルウェアの設計・開発 著書:書いてみたい 2
  • © Hitachi, Ltd. 2014. All rights reserved. 一貫性ってなに?やばいの? やばいです 説明します 3
  • © Hitachi, Ltd. 2014. All rights reserved. アジェンダ 1.分散KVSとは 2.分散KVSの弱点 3.日立のシステム 4.日立のインメモリ分散KVS 4
  • © Hitachi, Ltd. 2014. All rights reserved. 1.分散KVSとは 5
  • © Hitachi, Ltd. 2014. All rights reserved. 特徴 ・負荷分散 ・スケーラビリティ ・可用性 6
  • © Hitachi, Ltd. 2014. All rights reserved. 負荷分散 各サーバで分散処理する 7 A aaa write write write write B write A write C C ccc B bbb A aaa C ccc B bbb A aaa C ccc B bbb
  • © Hitachi, Ltd. 2014. All rights reserved. スケーラビリティ 簡単にスケールアウトできる 8 A aaa B bbb C ccc A aaa A aaa B bbb B bbb C ccc C ccc write B write A write C
  • © Hitachi, Ltd. 2014. All rights reserved. 可用性 データロストしないため停止しにくい 9 A aaa C ccc A aaa B bbb B bbb C ccc C ccc マシンが壊れても 他のマシンにデータが 残ってる! A aaa B bbb
  • © Hitachi, Ltd. 2014. All rights reserved. 分散KVSは 大量データを高速に処理したい ときに使用されています 10
  • © Hitachi, Ltd. 2014. All rights reserved. 2.分散KVSの弱点 11
  • © Hitachi, Ltd. 2014. All rights reserved. 一貫性 常に単一の最新データを取得したいが… 12 A aaa A aaa A aaa get
  • © Hitachi, Ltd. 2014. All rights reserved. 一貫性が崩れるとき 障害や遅延などで処理の順序を間違えると 13 A aaa A aaa 1.write 2.remove 1.write A 2.remove A →ERROR 1.write A
  • © Hitachi, Ltd. 2014. All rights reserved. 一貫性が崩れるとき 一時的に一貫性が崩れることがある 14 A aaa 1.write 2.remove 1.write A 2.remove A 2.remove A →ERROR 1.write A 1.write A 2.remove A A aaa A aaa
  • © Hitachi, Ltd. 2014. All rights reserved. そのデータは正しい? 正しいデータを取得できない 15 A aaa get A aaa A aaaデータが残っている…? ???
  • © Hitachi, Ltd. 2014. All rights reserved. 分散KVSの弱点 一時的な障害や遅延で 一貫性が崩れて システムトラブル の可能性があります 16
  • © Hitachi, Ltd. 2014. All rights reserved. 3.日立のシステム 17
  • © Hitachi, Ltd. 2014. All rights reserved. メッセージング メールを高速に振り分ける 18 分散KVS携帯電話 管理システム
  • © Hitachi, Ltd. 2014. All rights reserved. スマートメータ 電力消費量を管理する 19 電化製品 電力会社分散KVS
  • © Hitachi, Ltd. 2014. All rights reserved. TMS (Traffic Management Solution) 20 通信量をリアルタイムに制御する 中継地 制御システム分散KVS
  • © Hitachi, Ltd. 2014. All rights reserved. 日立のシステム もしも一貫性が崩れて システムトラブルが起きたら とんでもないことになります 21
  • © Hitachi, Ltd. 2014. All rights reserved. 4.日立のインメモリ分散KVS 22
  • © Hitachi, Ltd. 2014. All rights reserved. 日立のインメモリ分散KVS 日立のシステムに導入されている インメモリ分散KVS EADs (uCosminexus Elastic Application Data store) 23
  • © Hitachi, Ltd. 2014. All rights reserved. EADs ・インメモリ ・自動分散配置 ・故障検知 ・稼動中サーバ復旧 ・Paxos 24
  • © Hitachi, Ltd. 2014. All rights reserved. インメモリにデータを保存するため 読み書きが高速 EADs2 EADs3 EADs4 EADs5 EADs1 インメモリ 25 Master Slave Slave
  • © Hitachi, Ltd. 2014. All rights reserved. データを自動で分散配置するため 負荷を分散できる EADs2 EADs3 EADs4 EADs5 EADs1 自動分散配置 26 A aaa A aaa B bbb A aaa B bbb B bbb Master Master
  • © Hitachi, Ltd. 2014. All rights reserved. 永続的な障害が発生したサーバを 自動的に離脱させシステムの停止を防ぐ EADs2 EADs3 EADs4 EADs5 EADs1 故障検知 27 EADs1 delete A aaa A aaa A aaa B bbb B bbb B bbb
  • © Hitachi, Ltd. 2014. All rights reserved. EADs2 EADs3 EADs4 EADs5 EADs1 復旧時にシステムを停止させる必要が無い 稼動中サーバ復旧 28 EADs1 restore A aaa A aaa A aaa B bbb B bbb B bbb
  • © Hitachi, Ltd. 2014. All rights reserved. ・インメモリ ・自動分散配置 ・故障検知 ・稼動中サーバ復旧 高速処理とか可用性のための ここらへんは当たり前ですよね 29
  • © Hitachi, Ltd. 2014. All rights reserved. EADsの特徴は 一貫性保証 一貫性が崩れる要因 ・一時的な障害 ・スプリットブレイン 30
  • © Hitachi, Ltd. 2014. All rights reserved. 一貫性が崩れる要因 ・一時的な障害 ・スプリットブレイン 31
  • © Hitachi, Ltd. 2014. All rights reserved. EADs2 EADs3 EADs4 EADs5 EADs1 一時的な障害が発生したとき データ更新中に障害が発生すると… 32 1.write A 1.write A A aaa A aaa A aaa 1.write A Master Slave Slave
  • © Hitachi, Ltd. 2014. All rights reserved. EADs2 EADs3 EADs4 EADs5 EADs1 一時的な障害が発生したとき 障害中のサーバは処理できないので 33 1.write A 2.write C 1.write A 2.write C A aaa A aaa A aaa C ccc C ccc 1.write A Slave Slave Master
  • © Hitachi, Ltd. 2014. All rights reserved. EADs2 EADs3 EADs4 EADs5 EADs1 一時的な障害が発生したとき どんどん遅れていく 34 1.write A 2.write C 3.remove C 1.write A 2.write C 3.remove C A aaa A aaa A aaa C ccc C ccc 1.write A Slave Slave Master
  • © Hitachi, Ltd. 2014. All rights reserved. EADs2 EADs3 EADs4 EADs5 EADs1 一時的な障害が発生したとき 回復したときに処理を補完しようとするが 35 A aaa A aaa 1.write A 2.write C 3.remove C 1.write A 2.write C 3.remove C A aaa C ccc C ccc 1.write A 2.??? 3.??? Slave Slave Master
  • © Hitachi, Ltd. 2014. All rights reserved. 処理順序が崩れると… EADs2 EADs3 EADs4 EADs5 EADs1 一時的な障害が発生したとき 36 1.write A 2.write C 3.remove C 1.write A 2.write C 3.remove C A aaa A aaa A aaa C ccc C ccc 1.write A 2.remove C →ERROR Slave Slave Master
  • © Hitachi, Ltd. 2014. All rights reserved. 処理順序が崩れると… EADs2 EADs3 EADs4 EADs5 EADs1 一時的な障害が発生したとき 37 1.write A 2.write C 3.remove C 1.write A 2.write C 3.remove C A aaa A aaa A aaa C ccc C ccc C ccc 1.write A 2.remove C →ERROR 3.write C Slave Slave Master
  • © Hitachi, Ltd. 2014. All rights reserved. EADs2 EADs3 EADs4 EADs5 EADs1 一時的な障害が発生したとき 一貫性が崩れる 38 A aaa A aaa A aaa C ccc Slave Slave Master
  • © Hitachi, Ltd. 2014. All rights reserved. EADs2 EADs3 EADs4 EADs5 EADs1 各サーバの処理順序を常に同一にする どうすればいいの? 39 A aaa A aaa A aaa 1.write C 2.remove C 3.write A 1.write C 2.remove C 3.write A 1.write C 2.remove C 3.write A Slave Slave Master
  • © Hitachi, Ltd. 2014. All rights reserved. 一貫性が崩れる要因 ・一時的な障害 ・スプリットブレイン 40
  • © Hitachi, Ltd. 2014. All rights reserved. EADs2 EADs3 EADs4 EADs5 EADs1 スプリットブレインのとき ネットワークの障害でクラスタが分断 41 A aaa A aaa C ccc C ccc C ccc A aaa
  • © Hitachi, Ltd. 2014. All rights reserved. EADs2 EADs3 EADs4 EADs5 EADs1 スプリットブレインのとき クラスタが別々に動き出すと… 42 remove A remove A A aaa A aaa A aaa C ccc C ccc C ccc Slave Slave Master
  • © Hitachi, Ltd. 2014. All rights reserved. クラスタが別々に動き出すと… EADs2 EADs3 EADs4 EADs5 EADs1 スプリットブレインのとき 43 remove C remove C A aaa A aaa A aaa C ccc C ccc C ccc Slave Slave Master
  • © Hitachi, Ltd. 2014. All rights reserved. EADs2 EADs3 EADs4 EADs5 EADs1 スプリットブレインのとき 解消されたときに… 44 A aaa A aaa A aaa A aaa C ccc C ccc
  • © Hitachi, Ltd. 2014. All rights reserved. EADs2 EADs3 EADs4 EADs5 EADs1 スプリットブレインのとき 一貫性が崩れる 45 全部 消したはずなのに… A aaa A aaa A aaa A aaa C ccc C ccc
  • © Hitachi, Ltd. 2014. All rights reserved. 動くクラスタ1つに絞る EADs2 EADs3 EADs4 EADs5 EADs1 どうすればいいの? 46 動けない! 動ける! A aaa A aaa A aaa C ccc C ccc C ccc
  • © Hitachi, Ltd. 2014. All rights reserved. EADs2 EADs3 EADs4 EADs5 EADs1 どうすればいいの? 解消された後は動けるクラスタに合わせる 47 おれらが 正しい!おれらが 正しい! おれらが 正しい! remove A A aaa A aaa A aaa C ccc C ccc C ccc
  • © Hitachi, Ltd. 2014. All rights reserved. EADs ・インメモリ ・自動分散配置 ・故障検知 ・稼動中サーバ復旧 ・Paxos 48
  • © Hitachi, Ltd. 2014. All rights reserved. Paxos 一時的な障害でもスプリットブレインでも 同一の処理を同一の順序で配信する アルゴリズム ・過半数承認 ・処理補完 49
  • © Hitachi, Ltd. 2014. All rights reserved. EADs2 EADs3 EADs4 EADs5 EADs1 過半数承認 過半数以上から承認されたら処理する 50 1.write A 承認!1.write A するよ! 1.write A 承認! Slave Slave Master
  • © Hitachi, Ltd. 2014. All rights reserved. EADs2 EADs3 EADs4 EADs5 EADs1 過半数承認 一部のサーバに障害が発生しても 処理は停止しない 51 1.write A 承認!1.write A するよ! 1.write A 承認! Slave Slave Master
  • © Hitachi, Ltd. 2014. All rights reserved. 承認したサーバは承認内容を記録する EADs2 EADs3 EADs4 EADs5 EADs1 過半数承認 52 承認内容 を記録 1.write A 承認! 1.write A 承認!1.write A するよ! Slave Slave Master
  • © Hitachi, Ltd. 2014. All rights reserved. EADs2 EADs3 EADs4 EADs5 EADs1 過半数承認 承認を得たら処理を実行 53 write A write A A aaa A aaa Slave Slave Master
  • © Hitachi, Ltd. 2014. All rights reserved. EADs2 EADs3 EADs4 EADs5 EADs1 障害中だったサーバが回復したら… 54 回復したけど 仲間はずれ… A aaa A aaa Slave Slave Master
  • © Hitachi, Ltd. 2014. All rights reserved. 処理実行時に 前回以前の抜けている処理を補完する EADs2 EADs3 EADs4 EADs5 EADs1 処理補完 55 2.remove A 承認! 2.remove A するよ! 2.remove A承認! だけど 1.write A 知らない! A aaa A aaa Slave Slave Master
  • © Hitachi, Ltd. 2014. All rights reserved. EADs2 EADs3 EADs4 EADs5 EADs1 処理補完 前回の承認内容を記録しているサーバは 56 A aaa A aaa Slave Slave Master
  • © Hitachi, Ltd. 2014. All rights reserved. EADs2 EADs3 EADs4 EADs5 EADs1 処理補完 今回承認するサーバの中に必ず含まれる 57 承認するサーバ達 A aaa A aaa Slave Slave Master
  • © Hitachi, Ltd. 2014. All rights reserved. EADs2 EADs3 EADs4 EADs5 EADs1 処理補完 誰かが前回の承認内容を知っているので… 58 承認するサーバ達 A aaa A aaa 1.write A 知ってるよ! 教えて! Slave Slave Master
  • © Hitachi, Ltd. 2014. All rights reserved. EADs2 EADs3 EADs4 EADs5 EADs1 処理補完 必ず補完することができる 59 A aaa A aaa A aaa 1.write A 1.write A Slave Slave Master
  • © Hitachi, Ltd. 2014. All rights reserved. EADs2 EADs3 EADs4 EADs5 EADs1 処理補完 過半数承認している限り 必ず補完できるため処理順序が崩れない 60 A aaa A aaa A aaa 1.write A 2.remove A 1.write A 2.remove A 1.write A 2.remove A Slave Slave Master
  • © Hitachi, Ltd. 2014. All rights reserved. EADsは 一時的な障害でも一貫性保証 61
  • © Hitachi, Ltd. 2014. All rights reserved. 過半数承認なので動けるクラスタは1つ EADs2 EADs3 EADs4 EADs5 EADs1 スプリットブレインのときは 62 処理できない クラスタ 3/5 2/5 処理できる クラスタ
  • © Hitachi, Ltd. 2014. All rights reserved. EADs2 EADs3 EADs4 EADs5 EADs1 過半数承認 過半数承認を行う 63 remove A 3.remove A 承認! 3.remove A 承認! 3.remove A するよ! A aaa A aaa C ccc C ccc C ccc A aaa Slave Slave Master
  • © Hitachi, Ltd. 2014. All rights reserved. 承認者が承認内容を記録する EADs2 EADs3 EADs4 EADs5 EADs1 過半数承認 64 A aaa A aaa A aaa 承認内容 を記録 C ccc C ccc C ccc 3.remove A 承認! 3.remove A するよ! 3.remove A 承認! remove A Slave Master Slave
  • © Hitachi, Ltd. 2014. All rights reserved. 過半数以上いる方は処理できる EADs2 EADs3 EADs4 EADs5 EADs1 過半数承認 65 remove A remove A 処理できる! A aaa A aaa A aaa C ccc C ccc C ccc Slave Slave Master
  • © Hitachi, Ltd. 2014. All rights reserved. EADs2 EADs3 EADs4 EADs5 EADs1 過半数承認 過半数承認を行う 66 remove C A aaa A aaa A aaa C ccc C ccc C ccc 4.remove C 承認! 4.remove C するよ! Slave Slave Master
  • © Hitachi, Ltd. 2014. All rights reserved. EADs2 EADs3 EADs4 EADs5 EADs1 過半数承認 過半数いない方は処理できない 67 処理できない… A aaa A aaa A aaa C ccc C ccc C ccc remove C 承認内容を 記録しない
  • © Hitachi, Ltd. 2014. All rights reserved. EADs2 EADs3 EADs4 EADs5 EADs1 スプリットブレインが解消されたら… 68 A aaa A aaa A aaa C ccc C ccc C ccc
  • © Hitachi, Ltd. 2014. All rights reserved. EADs2 EADs3 EADs4 EADs5 EADs1 処理補完 処理実行時に 前回以前の抜けている処理を補完する 69 A aaa A aaa A aaa C ccc C ccc C ccc 5.write B 承認! 5.write B承認! だけど 3.remove A 知らない! 5.write B するよ! Slave Slave Master
  • © Hitachi, Ltd. 2014. All rights reserved. 前回の承認内容を記録しているサーバは EADs2 EADs3 EADs4 EADs5 EADs1 処理補完 70 A aaa A aaa A aaa C ccc C ccc C ccc Slave Slave Master
  • © Hitachi, Ltd. 2014. All rights reserved. EADs2 EADs3 EADs4 EADs5 EADs1 処理補完 今回承認するサーバの中に必ず含まれる 71 A aaa A aaa A aaa C ccc C ccc C ccc 承認するサーバ達 Slave Slave Master
  • © Hitachi, Ltd. 2014. All rights reserved. 誰かが前回の承認内容を知っているので… EADs2 EADs3 EADs4 EADs5 EADs1 承認するサーバ達 処理補完 72 A aaa A aaa A aaa C ccc C ccc C ccc 3.remove A 知ってるよ! Slave Slave Master 教えて!
  • © Hitachi, Ltd. 2014. All rights reserved. 必ず補完することができる EADs2 EADs3 EADs4 EADs5 EADs1 処理補完 73 A aaa A aaa C ccc C ccc C ccc 3.remove A remove A A aaa 3.remove A Slave Master Slave
  • © Hitachi, Ltd. 2014. All rights reserved. EADs2 EADs3 EADs4 EADs5 EADs1 処理補完 過半数承認している限り 必ず補完できるため処理順序が崩れない 74 1.write A 3.remove A 2.write C A aaa A aaa A aaa C ccc C ccc C ccc 2.write C 5.write B 1.write A 2.write C 3.remove A 5.write B 1.write A 3.remove A 5.write BB bbb B bbb B bbb
  • © Hitachi, Ltd. 2014. All rights reserved. EADsは スプリットブレインでも一貫性保証 75
  • © Hitachi, Ltd. 2014. All rights reserved. 日立のこだわりは 一貫性 一貫性にこだわることによって 社会インフラを支えています 76
  • © Hitachi, Ltd. 2014. All rights reserved. 77
  • © Hitachi, Ltd. 2014. All rights reserved. 付録
  • © Hitachi, Ltd. 2014. All rights reserved. 順序を守らない一貫性保証 一貫性が崩れたら修正する|結果整合性 Ex.ゴシッププロトコル・リードリペア 79 おれと一緒? 違う! 一緒! A ccc A ccc A aaa
  • © Hitachi, Ltd. 2014. All rights reserved. 順序を守らない一貫性保証 一貫性が崩れたら修正する|結果整合性 Ex.ゴシッププロトコル・リードリペア 80 修正してやる! repair A ccc A ccc A aaa
  • © Hitachi, Ltd. 2014. All rights reserved. 順序を守らない一貫性保証 一貫性は保てるけど処理順序が狂うと 古いデータが復活することがある 81 古いデータに 修正してやる! repair A old A new A new repair
  • © Hitachi, Ltd. 2014. All rights reserved. 可用性が低い一貫性保証 一貫性を崩さない Ex.2PhaseCommit 82 やっちゃうぜ? いいよー いいよー
  • © Hitachi, Ltd. 2014. All rights reserved. 可用性が低い一貫性保証 一貫性を崩さない Ex.2PhaseCommit 83 write write write A aaa A aaa A aaa
  • © Hitachi, Ltd. 2014. All rights reserved. 可用性が低い一貫性保証 全員が承認してくれるまで処理が進まない 84 ・・・ (承認してくれない) ・・・ いいよー