まずはじめに
今回は噂のCyberZのオフィス使わせていただけることに
なりました!!
ありがとうございます!
Akka/Actor Introduction
Hello!
片田 雄樹 (Yuki Katada)
Pokemon Go
2015/5 CyberZ配属
2016/5 MDH異動
FB: yuki.katada.1
Agenda
× Akka/Actorモデルとは?
× Actorモデル
× まとめ
対象者
- 並列処理なんぞ知ったこっちゃないって人
- Akka使ってるけどしくみを知らない人
- Akkaには興味ないけどインプットほしい人
- 業務に疲れ果ててサボりたい人
話すこと
- 概要
- メリット
- しくみ
今日話すこと/話さないこと
話さないこと
- コーディング
- むずい用語
- 応用例
Akka/Actorとは?
Akka/Actorとは?
Actor Model - 並列処理コンピューティングに
優れたモデル
Akka - ScalaとJavaで使える分散処理ライブラ
リ/ツールキット
Akka v.s. Actor
Actor Model
||
Akkaで採用されている分散処理モデル
Akkaを使用しているScalaライブラリ
- Spray Toolkit
- Play Framework
- Scalatra
- Apache Spark
Actorモデル
Actorの特徴
1. 永続的
2. 内部的な状態をカプセル化する
3. 並列処理
Actorができること
1. 新しいActorを作る
2. メッセージを受け取って返す (送る)
3. メッセージ1つに対して処理を行う
たとえば
アカウント残高: 100円
- Aさん: 30円引き出したい
- Bさん: 40円引き出したい
1番シンプルなパターン
シングルスレッドの場合 (Aさんのみ)
Account
100円
A
残高ちょうだい
シングルスレッドの場合 (Aさんのみ)
Account
100円
A
100円だよ
シングルスレッドの場合 (Aさんのみ)
Account
100円
A
30円引き出すね
シングルスレッドの場合 (Aさんのみ)
Account
70円
A
Aさん、OKだよ
2人以上いるパターン
シングルスレッドの場合 (Aさん&Bさん)
Account
100円
A B
残高ちょうだい
シングルスレッドの場合 (Aさん&Bさん)
Account
100円
A B
Aさん100円だよ
残高ちょうだい
シングルスレッドの場合 (Aさん&Bさん)
Account
100円
A B
30円引き出すね
ごめん、今Aさんと
取引してる
Dead Lock
Actorモデルを使用したパターン
Actorモデルの場合 (Aさん&Bさん)
Account
100円
A B
30円引き出すね
Mailbox
A
-30
Actorモデルの場合 (Aさん&Bさん)
Account
70円
A B
40円引き出すね
Mailbox
A
B
-40
Actorモデルの場合 (Aさん&Bさん)
Account
30円
A B
Aさん、OK
Mailbox
B
Actorモデルの場合 (平井さん&Bさん)
Account
30円
A B
Bさん、OK
Mailbox
Actorモデルの場合 (平井さん&平井さん)
Account
30円
A B
Mailbox
Actorモデルにおけるコミュニケーションの性質
1. “Best Effort”でメッセージする
2. 1回のみメッセージする
3. コミュニケーションの時間は保障されない
4. メッセージの順序は保障されない
Actorモデルで分散処理
http
http
http
request
serviceinbox
inbox
inbox
inbox
inbox
inbox
inbox
inbox
Actorモデルで分散処理
http
http
http
serviceinbox
inbox
inbox
inbox
inbox
inbox
inbox
inbox
request
Actorモデルで分散処理
http
http
http
serviceinbox
inbox
inbox
inbox
inbox
inbox
inbox
inbox
Actorモデルで分散処理
http
http
http
serviceinbox
inbox
inbox
inbox
inbox
inbox
inbox
serviceinbox
Actorモデルで分散処理
http
http
http
serviceinbox
inbox
inbox
inbox
inbox
inbox
inbox
serviceinbox
Actorモデルで分散処理
http
http
http
serviceinbox
inbox
inbox
inbox
inbox
inbox
inbox
serviceinbox
Actorモデルで分散処理
http
http
http
serviceinbox
inbox
inbox
inbox
inbox
inbox
inbox
inbox
response
まとめ
- AkkaはActorモデルを使ったJava/Scalaツールキット
- Actor間はメッセージでのみやりとりする
- Actorモデルだと性質上Lockがかからない
- 複雑な分散処理などでも比較的楽に実装できる
話さなかったこと
- アドレスについて
- コーディング
- Fault Tolerance
- ask/tell/pipeline/forward
- ユースケース
本の紹介
Learning Akka
- 著者: Jason Goodwin
- Amazon(U.S): $44.99
- 理論からコーディングまで幅広くカバーし
てくれる
- 図も入れて説明してくれるのでわかりや
すい
- 日本語版はないみたい …
Thanks!
Any questions?
ご清聴ありがとうございました!

Akka/Actor introduction