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