毎日Learning

学んだことを共有します

分散システムにちょっとだけ入門したのでメモっておく

Akka Clusterを運用していくとなると、社内でこの資料を読んで理解しておきたいねって話があった。

で、Scala関西 Summit 2016の資料じゃーん、おやもしかして動画あるんじゃね?って探したらあった。


【Scala関西Summit2016】Akka Clusterのネットワーク分断耐性設計

で、こちらを拝聴したところ、すごい世界が広がってたので、そこからのめりこむように、沼な世界を調べてったあたりのことをメモっておく。

沼の入口は↓

Akka Clusterの耐障害設計-スピーカーノート

冒頭の資料、動画のスピーカーノートは↓。

github.com

動画で聞きとれなかったところは、スピーカーノートで再度確認すると、さらに深い知見が伺える。

冒頭でお話されてた、Akka Clusterの適用領域に関する考察とかすごい。

Akka Clusterはmulti-tierサービスのうちfirst-tier、つまりクライアントとのインタラクションを伴いダイナミックにスケールすることが求められる領域に適用できます。

多層アーキテクチャのクライアント側に一番近い層を動的にスケールすることが求められる場合に、かなり良いと理解した。

soft-stateによる高い可用性と結果整合性による高いスケーラビリティを主軸にするアプローチをBASE(Basically Available, Soft state, Eventually consistent)といいます Akka Clusterをどこで使えば効果的かという問に答えると、BASEなシステムを構築するときだと私は考えています。

ということで、Akka Clusterは、クライアントに近いところで、BASEなシステムを構築するのに向いているとのこと。ふむふむ。

故障の種類

f:id:yoshiyoshifujii:20190425091703p:plain

故障には4つの分類があるとのこと。

で、以下の書籍から引用されている様子…。

Introduction to Reliable and Secure Distributed Programming (English Edition)

Introduction to Reliable and Secure Distributed Programming (English Edition)

直訳すると、「信頼性が高く安全な分散プログラミングの紹介」ということで、分散プログラミングについて書かれた書籍ですね。

とりあえず、積んでおくか…

split brain問題

f:id:yoshiyoshifujii:20190425155652p:plain

分散システムを組んでいると、リーダーがメンバーの状態を正しく把握することができない(死んでるよーって言ってるけど、本当は死んでないってことがあり得る、たとえばネットワークが瞬断されたあとで復活するとか)ために起こり得る問題とのこと。

split brain resolver

split brain問題の解決策。

Lightbend社が作った仕様は↓。

developer.lightbend.com

安田さんがその仕様を見たりして作られたやつが↓。

github.com

FLP Impossibility

FLP不可能性。

論文が↓

http://groups.csail.mit.edu/tds/papers/Lynch/jacm85.pdf

「完璧なsplit brain resolverのストラテジはない」ということが証明されているとのこと。

以下のスライドでも紹介されている。論文を解説されている気配…すごい…

また、大村さんのスライドの中から引用されていたスライドが以下↓

このあたりもすごい分かりやすかった。

CAP定理の見直し

f:id:yoshiyoshifujii:20190425171820p:plain

大村さんの資料の中であった。

以下に解説記事とかがある。

www.infoq.com

あと、以下は良書とのこと。

Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems

Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems

紹介されている記事もあった。

takuti.me

まとめ

ざーっとソースを広げていくと、いっぱい広がりました。

とりあえず、ちょっとずつやっていこう…

以上です。