Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Classic ActorからTyped Actor への移行について

Classic ActorからTyped Actor への移行について

Actor(Typed)を構築するDSLがClassic Actorと差異が多く、
私自身理解をすることに時間がかかった。

そこで違いを説明して
移行する方の参考になればと思いのLTです。

taketora

March 05, 2021
Tweet

More Decks by taketora

Other Decks in Programming

Transcript

  1. Classic Actorから
 Typed Actor への移行について
 2021/03/05
 第6回Reactive System Meetup in

    西新宿 LT枠
 株式会社スタンバイ
 池田健虎 @taket0ra1

  2. 自己紹介
 • 株式会社スタンバイ
 • 池田健虎
 • 2020年12月に娘が生まれて2児の父
 • Akkaは2020年の冬からさわりはじめました。
 •

    最近業務でやったこと
 ◦ EMR on Apache Flink(Scala) ストリーム処理
 ▪ 内部ではAkkaが使われています
 ◦ スタンバイの広告周りのBatch処理(Actor)
 

  3. なぜClassic ActorではなくTyped Actorを採用するのか?
 
 • 2019年11月にリリースされたAkka 2.6.0から
 typed Actorが安定版へ
 •

    Typed APIがAkkaのメインのAPIになった。
 ◦ Akka 2.6.0 Released
 • メッセージの受け渡しが型安全になった
 • 状態をもつようなActorをImmutableなコードで
 実装することできる

  4. Classic Actor でも同様にプロトコルを定義できるが強制されていなかった。 
 
 そのためプロトコルを使っていない大規模なアクターシステムの拡張と維持が困難になる。 
 
 また仮にプロトコルを定義したとしても 


    
 • コンパイル時にメッセージの型チェックができないため、処理できないアクターにメッセージ を渡していた場合に特定が難しい。 
 • さらに時間の経過に伴うプロトコルの進化を支援するサポートメカニズムがない 
 
 
 

  5. This is where the Akka Typed API comes in. This

    API is designed to be “protocol-first”: you no longer have a choice but to spend at least a little bit of time thinking about the messages each actor can deal with. Unlike the classic API where following this best practice is optional, you need to formalize the set of handled messages during implementation. そこで Akka Typed API の出番です。この API は "プロトコルファースト" で設計されています。この ベストプラクティスに従うことがオプションである古典的な API とは異なり、実装時に処理されるメッ セージのセットを形式化する必要があります。 Tour of Akka Typed: Protocols and Behaviors より引用
  6. 項目
 Classic Actor API
 Typed Actor API
 アクター参照
 ActorRef
 ActorRef[T]


    アクターの構築
 extends Actor
 extends AbstractBehavior[T] 
 (オブジェクト指向スタイル) 
 子アクターの生成
 context.actorOf
 context.spawn
 ユーザーガーディアン 
 (/user)
 ActorSystemによって提供される 
 (ユーザーガーディアン) 
 ユーザーによって提供され、 ActorSystemにBehaviorを渡す。 
 デフォルトの
 スーパーバイザーの戦略 
 (監督戦略)
 例外が投げられた際に 
 子アクターを再起動する 
 例外が投げられた際に 
 子アクターを停止する 
 (let it crash)
 概念の比較表(厳密なマッピングの表ではない。)
 Tour of Akka Typed: Protocols and Behaviors  より