今回は噂の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とは?
Actor Model - 並列処理コンピューティングに優れたモデル
Akka - ScalaとJavaで使える分散処理ライブラリ/ツールキット
Akka v.s. Actor
Actor Model||
Akkaで採用されている分散処理モデル
Akkaを使用しているScalaライブラリ
- Spray Toolkit
- Play Framework
- Scalatra
- Apache Spark
Actorの特徴
1. 永続的
2. 内部的な状態をカプセル化する
3. 並列処理
Actorができること
1. 新しいActorを作る
2. メッセージを受け取って返す (送る)
3. メッセージ1つに対して処理を行う
たとえば
アカウント残高: 100円
- Aさん: 30円引き出したい
- Bさん: 40円引き出したい
シングルスレッドの場合 (Aさんのみ)
Account100円
A
残高ちょうだい
シングルスレッドの場合 (Aさんのみ)
Account100円
A
100円だよ
シングルスレッドの場合 (Aさんのみ)
Account100円
A
30円引き出すね
シングルスレッドの場合 (Aさんのみ)
Account70円
A
Aさん、OKだよ
シングルスレッドの場合 (Aさん&Bさん)
Account100円
A B
残高ちょうだい
シングルスレッドの場合 (Aさん&Bさん)
Account100円
A B
Aさん100円だよ
残高ちょうだい
シングルスレッドの場合 (Aさん&Bさん)
Account100円
A B
30円引き出すね
ごめん、今Aさんと取引してる
Dead Lock
Actorモデルを使用したパターン
Actorモデルの場合 (Aさん&Bさん)
Account100円
A B
30円引き出すねMailbox
A -30
Actorモデルの場合 (Aさん&Bさん)
Account70円
A B
40円引き出すねMailbox
A
B -40
Actorモデルの場合 (Aさん&Bさん)
Account30円
A B
Aさん、OK
Mailbox
B
Actorモデルの場合 (平井さん&Bさん)
Account30円
A B
Bさん、OK
Mailbox
Actorモデルの場合 (平井さん&平井さん)
Account30円
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?
ご清聴ありがとうございました!