故障モデル
分散システムがどの程度激しく故障するか。ある分散アルゴリズムについて、「この故障モデルならこの性質は満たされるけどこの故障モデルでは満たされない」みたいに使ったりする。
Byzantine failure, Arbitrary failure
なんでもありの最強の故障モデル
bitcoin とかはこのモデルだと思う
Authentification detectable byzantine failures
他のサーバから得た情報に関しては嘘をつかないビザンチン故障
Omission failure
返事が返ってこないことがある
Receive omission: メッセージが受け取られないことがある
Send omission: メッセージを送れないことがある
Timing failure, Performance failure
正しい返事を返すけれども返事を返すのがめっちゃ早かったりめっちゃ遅かったりする
特定の期間から外れる (outside the specified time interval)
Response failure
Value failure: 変な値を返す
State transition failure: 変な状態に遷移したりする
Crash failure
落ちることがある。メッセージを送っても返事はずっと返ってこない
Fail-stop failure, Crash-stop failure
落ちることがある。そして他のノードはそのノードが落ちたことがわかる
文献によっては Fail-stop と Crash が別だったり同じだったりしてよくわからない
故障検出器を構築できるかどうかなのかもしれない
Crash-recovery failure
落ちることがある。再起動してくることがある。
Reorder
メッセージの順序が入れ替わることがある
Verdiに出てきたけど一般的にこの名前なのか不明
Duplicate
メッセージが複製されることがある
Verdiに出てきたけど一般的にこの名前なのか不明
他に Dropping (メッセージが落ちる) とかあったけどそれは Omission failure な気がする
No failures, Correct
障害が起こらない理想的な世界
よく出てくるもの: Byzantine, Omission, Crash-stop, Crash-recovery
Failure と Fault の違い
Failure: システムが提供できなかった振る舞い
Fault: failure の原因
Failure model: システムがどのような振る舞いをするかのモデル
出典: https://www.cs.purdue.edu/homes/clifton/cs603/FailureModel.ppt
パワポ
参考 (failure model distributed systems とかでググった結果)
http://alvaro-videla.com/2013/12/failure-modes-in-distributed-systems.html
https://www.cs.helsinki.fi/webfm_send/1262
https://courses.engr.illinois.edu/cs425/fa2009/L11tmp.pdf
https://www.cs.purdue.edu/homes/clifton/cs603/FailureModel.ppt
あんまり書いてあることが統一されてない。もっとちゃんとした文献があれば嬉しいけど
=> これが一番良さそう: https://www.distributed-systems.net/index.php/books/distributed-systems-3rd-edition-2017/