Mercurial > hg > Papers > 2019 > aka-thesis
comparison slide/slide.md @ 12:2e843f65ac5f
update
author | akahori |
---|---|
date | Tue, 19 Feb 2019 15:28:07 +0900 |
parents | 9627f1774b45 |
children | 117794d50054 |
comparison
equal
deleted
inserted
replaced
11:534d552b4273 | 12:2e843f65ac5f |
---|---|
8 | 8 |
9 - OS単位での分散システム | 9 - OS単位での分散システム |
10 - ブロックチェーンとは | 10 - ブロックチェーンとは |
11 - ブロックチェーンのfork | 11 - ブロックチェーンのfork |
12 - コンセンサスアルゴリズム | 12 - コンセンサスアルゴリズム |
13 - Proof of Work と Paxos | 13 - Proof of Work と Paxos |
14 - Christieとは | 14 - Christieとは |
15 - TopologyManagerの実装 | 15 - TopologyManagerの実装 |
16 - PCクラスタ上でPaxosを動かした話 | 16 - PCクラスタ上でPaxosを動かした話 |
17 - まとめ | 17 - まとめ |
18 | 18 |
19 | |
20 # OS単位での分散システム | 19 # OS単位での分散システム |
21 | 20 |
22 - コンピュータでデータが壊れることはあり得る. 誤操作や, データの破損, 最悪の場合システムの重要な部分のデータの破損も起こりうる. | 21 - コンピュータでデータが壊れることはあり得る. 誤操作や, データの破損, 最悪の場合システムの重要な部分のデータの破損も起こりうる. |
23 | |
24 - ブロックチェーンはデータを分散でき, 破損や不整合の検知が可能である. | 22 - ブロックチェーンはデータを分散でき, 破損や不整合の検知が可能である. |
25 | |
26 - 当研究室ではGearsOS, そしてGearsOSに組み込む予定がある分散フレームワークChristieがある. | 23 - 当研究室ではGearsOS, そしてGearsOSに組み込む予定がある分散フレームワークChristieがある. |
27 | |
28 - Christieにブロックチェーンを実装し, GearsOSに組み込むことで, GearsOS間の分散システムが可能になる. また, 分散システムを作らずとも, hash chainとしてデータの破損を検知できる. | 24 - Christieにブロックチェーンを実装し, GearsOSに組み込むことで, GearsOS間の分散システムが可能になる. また, 分散システムを作らずとも, hash chainとしてデータの破損を検知できる. |
29 | |
30 - よって, Christieにブロックチェーンを実装する. | 25 - よって, Christieにブロックチェーンを実装する. |
31 | |
32 | 26 |
33 # ブロックチェーンとは | 27 # ブロックチェーンとは |
34 | 28 |
35 ブロックチェーンとは分散型台帳技術と呼ばれる. 複数のトランザクションをまとめたブロックをつなげたものを, 台帳と呼ぶ. その台帳をシステムに参加しているすノードが参照できる技術である. | 29 ブロックチェーンとは分散型台帳技術と呼ばれる. 複数のトランザクションをまとめたブロックをつなげたものを, 台帳と呼ぶ. その台帳をシステムに参加しているノードが保持する技術である. |
36 | 30 |
37 ノード同士はP2Pでつながっており, 対等である. そのため, 管理者がいなくてもデータの管理が行える. | 31 ノード同士はP2Pでつながっており, 対等である. そのため, 管理者がいなくてもデータの管理が行える. |
32 | |
33 # ブロックチェーンとは | |
34 | |
35 <div style="text-align: center;"> | |
36 <img src="./images/blockchain.svg" alt="blockchain" width="1000" height="600"> | |
37 </div> | |
38 | 38 |
39 # ブロックチェーンとは | 39 # ブロックチェーンとは |
40 | 40 |
41 ブロックチェーンにも種類がある. パブリックブロックチェーンとプライベートブロックチェーンである. 以下に, その違いを述べる. | 41 ブロックチェーンにも種類がある. パブリックブロックチェーンとプライベートブロックチェーンである. 以下に, その違いを述べる. |
42 | 42 |
51 | 51 |
52 ブロックがいたるところで作られると, 異なる高さの違うチェーンが複数できる. この状態をforkという. | 52 ブロックがいたるところで作られると, 異なる高さの違うチェーンが複数できる. この状態をforkという. |
53 | 53 |
54 forkが起こった場合, どちらかを正しいものとしてブロックを積み上げたい. そのため, コンセンサスアルゴリズムを用いて, どちらか1方に統合する. | 54 forkが起こった場合, どちらかを正しいものとしてブロックを積み上げたい. そのため, コンセンサスアルゴリズムを用いて, どちらか1方に統合する. |
55 | 55 |
56 | |
57 # コンセンサスアルゴリズム | 56 # コンセンサスアルゴリズム |
58 | 57 |
59 - コンセンサスアルゴリズムは分散環境上で値を一意に決めるためのアルゴリズムである. | 58 - コンセンサスアルゴリズムは分散環境上で値を一意に決めるためのアルゴリズムである. |
60 - Paxos, Raftなどが有名. 簡単に言えば多数決を安全に行うためのアルゴリズム. | 59 - Paxos, Raftなどが有名. 簡単に言えば多数決を安全に行うためのアルゴリズム. |
61 - 故障モデルというものがあって, コンセンサスアルゴリズムでレベルが4段階ある. Paxos, Raftはレベル3で, ノードに裏切り者がいなければ安全に動く. | 60 - 故障モデルというものがあって, コンセンサスアルゴリズムでレベルが4段階ある. Paxos, Raftはレベル3で, ノードに裏切り者がいなければ安全に動く. |
62 - PBFTがレベル4である<s>が読んでないのでわからない</s> | 61 - PBFTがレベル4である<s>が読んでないのでわからない</s> |
63 | |
64 - Proof of Workを使っているパブリックブロックチェーンは「ブロックが多ければ多いほど」, レベル4に近づく. | 62 - Proof of Workを使っているパブリックブロックチェーンは「ブロックが多ければ多いほど」, レベル4に近づく. |
65 | 63 |
66 # パブリックブロックチェーンのコンセンサスアルゴリズム | 64 # パブリックブロックチェーンのコンセンサスアルゴリズム |
67 | 65 |
68 - パブリックブロックチェーンのコンセンサスアルゴリズムは, 「ある程度ブロックの差がついたら, 長い方を正とする」というもの. | 66 - パブリックブロックチェーンのコンセンサスアルゴリズムは, 「ある程度ブロックの差がついたら, 長い方を正とする」というもの. |
69 | 67 - これだけだと, 裏切り者が適当なブロックをガシガシ積めば攻撃できるのでレベル4にはなれない. これを大幅に補強したのがProof of Work. |
70 - これだけだと, 裏切り者が適当なブロックガシガシ積めば攻撃できるのでレベル4にはなれない. これを大幅に補強したのがProof of Work. | |
71 | |
72 - Proof of Workは, 簡単に言えばブロックのHashに条件をつけるアルゴリズム. つまり, 新しいブロックを作るのが難しくなる. | 68 - Proof of Workは, 簡単に言えばブロックのHashに条件をつけるアルゴリズム. つまり, 新しいブロックを作るのが難しくなる. |
73 | 69 - 新しいブロックを作るのが難しいので, みんなで協力して作ったチェーンが自然に勝つ. また, 改ざんも難しい. ただし, トランザクションの確定が遅い. |
74 - 新しいブロックを作るのが難しいので, みんなで協力して作ったチェーンが自然に勝つ. また, 改ざんも難しくなる. ただし, トランザクションの確定が遅い. | |
75 | 70 |
76 # プライベートブロックチェーンのコンセンサスアルゴリズム | 71 # プライベートブロックチェーンのコンセンサスアルゴリズム |
77 | 72 |
78 - プライベートブロックチェーンは管理者が許可するノードしか参加しない. つまり, レベル3のコンセンサスアルゴリズムで十分. | 73 - プライベートブロックチェーンは管理者が許可するノードしか参加しない. つまり, レベル3のコンセンサスアルゴリズムで十分. |
74 - 新しいブロックもパブリックブロックチェーンより早く作れる. | |
75 - コンセンサスアルゴリズムの中でPaxosが速いらしいので, 今回はこちらも実装してみます. | |
79 | 76 |
80 - 新しいブロックもパブリックブロックチェーンより早く作れる. | 77 # Paxos |
81 | 78 |
82 - コンセンサスアルゴリズムの中でPaxosが速いらしいので, 今回はこちらも実装してみます. | 79 - Lamport先生が「故障モデルレベル3での合意が不可能なのを証明してやる」と言って証明の途中で逆に編み出してしまったらしいアルゴリズム. |
80 - レベル3のアルゴリズムの基礎となっている. | |
81 - proposerが値を提案し, acceptorが決め, Learnerが集計して多数決を取って決まった値を保持. | |
82 | |
83 # Paxos説明の前の用語説明 | |
84 | |
85 - | |
86 | |
87 # [25行でわかるPaxosアルゴリズム](http://nil.csail.mit.edu/6.824/2015/notes/paxos-code.html) | |
88 | |
89 - Proposerは | |
83 | 90 |
84 # Christieとは | 91 # Christieとは |
85 | 92 |
86 - 研究室で使っていたAliceの問題点を解消した, 分散プログラミングを簡単に書けるjavaのフレームワーク. | 93 - 研究室で使っていたAliceの問題点を解消した, 分散プログラミングを簡単に書けるjavaのフレームワーク. |
87 | |
88 - Continued based C(CbC)と似た書き方が可能. | 94 - Continued based C(CbC)と似た書き方が可能. |
89 | |
90 - まだAliceから引き継いでない機能でTopologyManagerというものがあるので, それも実装. | 95 - まだAliceから引き継いでない機能でTopologyManagerというものがあるので, それも実装. |
91 | 96 |
92 # TopologyManagerとは | 97 # TopologyManagerとは |
93 | 98 |
94 - TopologyManagerは参加を表明したノード(TopologyNode)を元にTopologyを作る. | 99 - TopologyManagerは参加を表明したノード(TopologyNode)を元にTopologyを作る. |
95 | |
96 - TopologyManagerは静的Topologyと動的Topologyを作れる. | 100 - TopologyManagerは静的Topologyと動的Topologyを作れる. |
97 | |
98 - 静的Topologyはdotファイルというものを読み込んで, そのとおりにTopologyを生成する. | 101 - 静的Topologyはdotファイルというものを読み込んで, そのとおりにTopologyを生成する. |
99 | |
100 - 動的Topologyは参加を表明したノードを動的に配置する. が, 今はTreeしか実装していません. | 102 - 動的Topologyは参加を表明したノードを動的に配置する. が, 今はTreeしか実装していません. |
101 | |
102 | 103 |
103 # PCクラスタ上でPaxosを動かした話 | 104 # PCクラスタ上でPaxosを動かした話 |
104 | 105 |
105 - ブロックチェーンにおいて, 分散環境上でテストしなければいけないのはコンセンサスアルゴリズムである. そのため, Paxosを実装し, 実際の分散環境上で動かした. | 106 - ブロックチェーンにおいて, 分散環境上でテストしなければいけないのはコンセンサスアルゴリズムである. そのため, Paxosを実装し, 実際の分散環境上で動かした. |
106 | |
107 - 評価は値が一意に決まるかどうかである. 値が一意に決まるならば, リーダーがコンセンサスをとっても良いし, ブロックについてコンセンサスをとっても良い. | 107 - 評価は値が一意に決まるかどうかである. 値が一意に決まるならば, リーダーがコンセンサスをとっても良いし, ブロックについてコンセンサスをとっても良い. |
108 | |
109 - 今回は単純化のために, 整数でコンセンサスを取る. | 108 - 今回は単純化のために, 整数でコンセンサスを取る. |
110 | 109 |
111 | 110 |
112 # 実験1 | 111 # 実験1 |
113 | 112 |
116 # 実験3 | 115 # 実験3 |
117 | 116 |
118 # まとめ | 117 # まとめ |
119 | 118 |
120 - コンセンサスアルゴリズムのPaxosを実装しました. | 119 - コンセンサスアルゴリズムのPaxosを実装しました. |
121 | |
122 - ブロック, トランザクション, proof of workも実装しました. ただ, トランザクションはファイルのデータを読めるようにはしていません. | 120 - ブロック, トランザクション, proof of workも実装しました. ただ, トランザクションはファイルのデータを読めるようにはしていません. |
123 | |
124 - これらを繋げてブロックチェーンにできれば, Christieにブロックチェーンが実装されます. パブリックブロックチェーンもプライベートブロックチェーンもどちらも作れます. | 121 - これらを繋げてブロックチェーンにできれば, Christieにブロックチェーンが実装されます. パブリックブロックチェーンもプライベートブロックチェーンもどちらも作れます. |