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