狠狠撸

狠狠撸Share a Scribd company logo
础办办补とは。アクターモデル とは。
#2/28社内勉強会@KenjiroKubota
础办办补とは。
の前に、
Akkaの誕生した背景
2000年代中盤… CPU(主にシングルスレッド)の性能限界
アプリケーションを並行で動作させる。
● マルチスレッド処理
● 分散処理
分散処理を行うための、Akka
Lightbend社(旧Typesafe社)によって開発されたオープンソースのJava/Scala向けツールキット
並行?分散アプリケーションをシンプルに単一モデルで実装するプログラミングモデルを提供する。
● 回復性…システムにダウンタイムを発生させない
● 即応性…トラフィックに対して素早く反応する
● 弾力性…サーバーやコア数によってスケールさせる
アクターモデル プログラミング
アクターモデル
並行処理を効率的に実現する手法のひとつ
1973年にカール?ヒューイット氏が発表した並列処理を行う計算モデル
アクターモデル におけるアクターは、オブジェクト指向プログラミング
におけるオブジェクトのようなもの(と思っておくと理解しやすい?)
アクターモデル
アクターはメールボックス、アドレスを持ち、メッセージを受け取ることができる。
インメモリに状態を持ち、アプリケーションが再起動されてもログから状態を復帰できる。
アクター
メールボックス
メッセージ
アドレス
アクターモデル
アクターは別のアクターを生成することができる。
また、そのアクターを監督する
アクター
メールボックス
メッセージ
アドレス
アクターモデル
生成した別のアクターに、メッセージを送信することができる。
また、アクターは受け取ったメッセージの種別により振る舞いを変えることができる(状態変化)
アクター
メールボックス
メッセージ
アドレス
雑に実装ベースで见る
础办办补とは。アクターモデル とは。
础办办补とは。アクターモデル とは。
础办办补とは。アクターモデル とは。
础办办补とは。アクターモデル とは。
础办办补とは。アクターモデル とは。
! = tel
返信を受け取らない
? = ask
返信を受け取る
础办办补とは。アクターモデル とは。
础办办补とは。アクターモデル とは。
础办办补とは。アクターモデル とは。
础办办补とは。アクターモデル とは。
アクターの分散処理
分散処理
複数のアクターに送信することで分散処理が行える。
デフォルトではメッセージはメールボックスの到着順に処理される。
分散処理
アクターは設定を変更するだけでリモートに設置することも可能(位置透過性)
サーバーA
サーバーB
雑に実装ベースで见る(2)
最初の设定
変更后の设定
実装は変わらず(位置透过性???!)
搁别尘辞迟别用にアプリケーションを作成(+础肠迟辞谤)
搁别尘辞迟别の设定
実行コンソール
搁别尘辞迟别コンソール
搁别尘辞迟别コンソール
呼び出し側がsys.exit()して切断したのでWARNが出ているもよう
耐障害性
let it crash
Akkaではlet it crash(クラッシュするならさせておけ)の思想で設計されている。
障害発生時には障害発生箇所をクラッシュさせておき、スーパーバイザー(監督を行う親アクター)
へエスカレートを行う。
アクターではtry~catchのように、正常系処理の中に障害回復処理を含むのではなく、正常フローと
回復フローを分けて実装する。
実際にアクターで障害が発生した場合は親アクターに障害通知を行い、監督を行う親アクターが子ア
クターの回復方法を決定する
回復方法の決定
再起動
アクターを再生成して処理を続行する
再開
クラッシュしたアクターを続行させる。クラッシュは無視される
停止
アクターを停止させ、メッセージを送信しない
エスカレート
このアクターで回復方法が判断できない場合(回復方法の未定義)、さらに上位のアクターへエ
スカレートする
雑に実装ベースで见る(3)
础办办补とは。アクターモデル とは。
OneForOneStrategy
AllForOneStrategy
問題の発生したアクターのみ適応
一つのアクターに問題が発生した場合すべてのアクターに適応
础办办补とは。アクターモデル とは。
Restart
Resume
再起動
再開
Stop 停止
Escalate エスカレート
础办办补とは。アクターモデル とは。
础办办补とは。アクターモデル とは。
础办办补とは。アクターモデル とは。
1
2
3
1
2
3
Circuit Breaker
外部サービス障害時に即座にエラーを返す仕組み
● リトライによるネットワーク帯域の無駄遣いが減る
● レイテンシを低く抑えられる
● 障害の連鎖を抑えられる
● Close, Open, Half-Openの状態をとる
参照) /negokaz/lagom-reactive-microservices-architecture#66
Open
Close
回路が開いた状態 = 通信できない
回路が閉じた状態 = 通信できる
时间切れおわり
今日の内容はこの本を参考にしています。

More Related Content

础办办补とは。アクターモデル とは。