Submit Search
Upload
Developing an Akka Edge1-3
•
Download as PPTX, PDF
•
21 likes
•
20,571 views
saaaaaaki
Follow
Developing an Akka EdgeというAkkaの入門書を読んで勉強しています。 要約して社内勉強会で発表した時のスライドを手直ししたものです。
Read less
Read more
Software
Report
Share
Report
Share
1 of 44
Download now
Recommended
Developing an Akka Edge4-5
Developing an Akka Edge4-5
saaaaaaki
Developing an Akka Edge6
Developing an Akka Edge6
saaaaaaki
プログラミング言語のパラダイムシフト(ダイジェスト)ーScalaから見る関数型と並列性時代の幕開けー
プログラミング言語のパラダイムシフト(ダイジェスト)ーScalaから見る関数型と並列性時代の幕開けー
TanUkkii
Akka入門
Akka入門
Masashi (Jangsa) Kawaguchi
実践Akka
実践Akka
Huy Do
Akka meetup 2014_sep
Akka meetup 2014_sep
masahitojp
並行処理初心者のためのAkka入門
並行処理初心者のためのAkka入門
Yoshimura Soichiro
WebSocket+Akka(Remote)+Play 2.1 Java
WebSocket+Akka(Remote)+Play 2.1 Java
Kazuhiro Hara
Recommended
Developing an Akka Edge4-5
Developing an Akka Edge4-5
saaaaaaki
Developing an Akka Edge6
Developing an Akka Edge6
saaaaaaki
プログラミング言語のパラダイムシフト(ダイジェスト)ーScalaから見る関数型と並列性時代の幕開けー
プログラミング言語のパラダイムシフト(ダイジェスト)ーScalaから見る関数型と並列性時代の幕開けー
TanUkkii
Akka入門
Akka入門
Masashi (Jangsa) Kawaguchi
実践Akka
実践Akka
Huy Do
Akka meetup 2014_sep
Akka meetup 2014_sep
masahitojp
並行処理初心者のためのAkka入門
並行処理初心者のためのAkka入門
Yoshimura Soichiro
WebSocket+Akka(Remote)+Play 2.1 Java
WebSocket+Akka(Remote)+Play 2.1 Java
Kazuhiro Hara
Akka-Streams in Production
Akka-Streams in Production
Kazunobu Raita
Akka actorを何故使うのか?
Akka actorを何故使うのか?
Nyle Inc.(ナイル株式会社)
akka-doc-ja
akka-doc-ja
TIS Inc.
Akkaとは。アクターモデル とは。
Akkaとは。アクターモデル とは。
Kenjiro Kubota
Servlet と Future の関わり方 #scala_ks
Servlet と Future の関わり方 #scala_ks
Kazuhiro Sera
Akkaの翻訳みんなでやろう Let's translate akka doc
Akkaの翻訳みんなでやろう Let's translate akka doc
賢太郎 前多
Scala警察のすすめ
Scala警察のすすめ
takezoe
【LT】akka receive とScala Javaの違い
【LT】akka receive とScala Javaの違い
賢太郎 前多
Scala再入門 @2014/02/08 Scala関西ビギナーズ第3回
Scala再入門 @2014/02/08 Scala関西ビギナーズ第3回
Asami Abe
[Japanese] Skinny Framework で始める Scala #jjug_ccc #ccc_r24
[Japanese] Skinny Framework で始める Scala #jjug_ccc #ccc_r24
Kazuhiro Sera
Java使いにとっての関数
Java使いにとっての関数
amkt922
Quasar: Actor Model and Light Weight Threads on Java
Quasar: Actor Model and Light Weight Threads on Java
Taku Miyakawa
Real world android akka
Real world android akka
Taisuke Oe
Seasar ユーザだったプログラマが目指す OSS の世界展開 #seasarcon
Seasar ユーザだったプログラマが目指す OSS の世界展開 #seasarcon
Kazuhiro Sera
Scala勉強会 初心者向けハンズオン前編
Scala勉強会 初心者向けハンズオン前編
takeuchi-tk
Skinny Framework 進捗どうですか? #fud_scala
Skinny Framework 進捗どうですか? #fud_scala
Kazuhiro Sera
1周遅れのScala入学 #nds41
1周遅れのScala入学 #nds41
Kazumune Katagiri
Ruby紹介
Ruby紹介
Masahiro Tomita
MySQL/Ruby終了のお知らせ
MySQL/Ruby終了のお知らせ
Masahiro Tomita
形式手法で捗る!インフラ構成の設計と検証
形式手法で捗る!インフラ構成の設計と検証
y_taka_23
akka-streamのマイクロサービスへの適用
akka-streamのマイクロサービスへの適用
Nyle Inc.(ナイル株式会社)
Akka Clusterの耐障害設計
Akka Clusterの耐障害設計
TanUkkii
More Related Content
What's hot
Akka-Streams in Production
Akka-Streams in Production
Kazunobu Raita
Akka actorを何故使うのか?
Akka actorを何故使うのか?
Nyle Inc.(ナイル株式会社)
akka-doc-ja
akka-doc-ja
TIS Inc.
Akkaとは。アクターモデル とは。
Akkaとは。アクターモデル とは。
Kenjiro Kubota
Servlet と Future の関わり方 #scala_ks
Servlet と Future の関わり方 #scala_ks
Kazuhiro Sera
Akkaの翻訳みんなでやろう Let's translate akka doc
Akkaの翻訳みんなでやろう Let's translate akka doc
賢太郎 前多
Scala警察のすすめ
Scala警察のすすめ
takezoe
【LT】akka receive とScala Javaの違い
【LT】akka receive とScala Javaの違い
賢太郎 前多
Scala再入門 @2014/02/08 Scala関西ビギナーズ第3回
Scala再入門 @2014/02/08 Scala関西ビギナーズ第3回
Asami Abe
[Japanese] Skinny Framework で始める Scala #jjug_ccc #ccc_r24
[Japanese] Skinny Framework で始める Scala #jjug_ccc #ccc_r24
Kazuhiro Sera
Java使いにとっての関数
Java使いにとっての関数
amkt922
Quasar: Actor Model and Light Weight Threads on Java
Quasar: Actor Model and Light Weight Threads on Java
Taku Miyakawa
Real world android akka
Real world android akka
Taisuke Oe
Seasar ユーザだったプログラマが目指す OSS の世界展開 #seasarcon
Seasar ユーザだったプログラマが目指す OSS の世界展開 #seasarcon
Kazuhiro Sera
Scala勉強会 初心者向けハンズオン前編
Scala勉強会 初心者向けハンズオン前編
takeuchi-tk
Skinny Framework 進捗どうですか? #fud_scala
Skinny Framework 進捗どうですか? #fud_scala
Kazuhiro Sera
1周遅れのScala入学 #nds41
1周遅れのScala入学 #nds41
Kazumune Katagiri
Ruby紹介
Ruby紹介
Masahiro Tomita
MySQL/Ruby終了のお知らせ
MySQL/Ruby終了のお知らせ
Masahiro Tomita
形式手法で捗る!インフラ構成の設計と検証
形式手法で捗る!インフラ構成の設計と検証
y_taka_23
What's hot
(20)
Akka-Streams in Production
Akka-Streams in Production
Akka actorを何故使うのか?
Akka actorを何故使うのか?
akka-doc-ja
akka-doc-ja
Akkaとは。アクターモデル とは。
Akkaとは。アクターモデル とは。
Servlet と Future の関わり方 #scala_ks
Servlet と Future の関わり方 #scala_ks
Akkaの翻訳みんなでやろう Let's translate akka doc
Akkaの翻訳みんなでやろう Let's translate akka doc
Scala警察のすすめ
Scala警察のすすめ
【LT】akka receive とScala Javaの違い
【LT】akka receive とScala Javaの違い
Scala再入門 @2014/02/08 Scala関西ビギナーズ第3回
Scala再入門 @2014/02/08 Scala関西ビギナーズ第3回
[Japanese] Skinny Framework で始める Scala #jjug_ccc #ccc_r24
[Japanese] Skinny Framework で始める Scala #jjug_ccc #ccc_r24
Java使いにとっての関数
Java使いにとっての関数
Quasar: Actor Model and Light Weight Threads on Java
Quasar: Actor Model and Light Weight Threads on Java
Real world android akka
Real world android akka
Seasar ユーザだったプログラマが目指す OSS の世界展開 #seasarcon
Seasar ユーザだったプログラマが目指す OSS の世界展開 #seasarcon
Scala勉強会 初心者向けハンズオン前編
Scala勉強会 初心者向けハンズオン前編
Skinny Framework 進捗どうですか? #fud_scala
Skinny Framework 進捗どうですか? #fud_scala
1周遅れのScala入学 #nds41
1周遅れのScala入学 #nds41
Ruby紹介
Ruby紹介
MySQL/Ruby終了のお知らせ
MySQL/Ruby終了のお知らせ
形式手法で捗る!インフラ構成の設計と検証
形式手法で捗る!インフラ構成の設計と検証
Viewers also liked
akka-streamのマイクロサービスへの適用
akka-streamのマイクロサービスへの適用
Nyle Inc.(ナイル株式会社)
Akka Clusterの耐障害設計
Akka Clusterの耐障害設計
TanUkkii
とりあえず使えるSBT
とりあえず使えるSBT
Kiyotaka Kunihira
Architecture of Falcon, a new chat messaging backend system build on Scala
Architecture of Falcon, a new chat messaging backend system build on Scala
TanUkkii
アクターモデルについて
アクターモデルについて
Takamasa Mitsuji
PHP開発者がScalaに入門して苦しんだ話
PHP開発者がScalaに入門して苦しんだ話
Nyle Inc.(ナイル株式会社)
Reactive Design Patterns: a talk by Typesafe's Dr. Roland Kuhn
Reactive Design Patterns: a talk by Typesafe's Dr. Roland Kuhn
Zalando Technology
Zen of Akka
Zen of Akka
Konrad Malawski
Rakuten Technology Conference 2017 A Distributed SQL Database For Data Analy...
Rakuten Technology Conference 2017 A Distributed SQL Database For Data Analy...
Rakuten Group, Inc.
Viewers also liked
(9)
akka-streamのマイクロサービスへの適用
akka-streamのマイクロサービスへの適用
Akka Clusterの耐障害設計
Akka Clusterの耐障害設計
とりあえず使えるSBT
とりあえず使えるSBT
Architecture of Falcon, a new chat messaging backend system build on Scala
Architecture of Falcon, a new chat messaging backend system build on Scala
アクターモデルについて
アクターモデルについて
PHP開発者がScalaに入門して苦しんだ話
PHP開発者がScalaに入門して苦しんだ話
Reactive Design Patterns: a talk by Typesafe's Dr. Roland Kuhn
Reactive Design Patterns: a talk by Typesafe's Dr. Roland Kuhn
Zen of Akka
Zen of Akka
Rakuten Technology Conference 2017 A Distributed SQL Database For Data Analy...
Rakuten Technology Conference 2017 A Distributed SQL Database For Data Analy...
Developing an Akka Edge1-3
1.
Developing an Akka
Edge Chapter 1-3
2.
この本について Developing an Akka
Edge (著)Thomas Lockney, Raymond Tay Akka初心者向けの洋書 全191ページ・10章 せっかく読んでるので要約しました ※自分で調べた事や、考えた例も載せたのでスライドに正しくないことが書いてある可能性があります※
3.
各章の概要 Chapter 1…ロックを使った並列処理がよくない理由 アクターの概要 Chapter 2…とりあえずAkkaを動かしてみる Chapter
3…ビルドツールの紹介 & ログの出し方など Akkaを触った事がある人はChapter4からでいいかも
4.
Chapter 1. Introduction ・並列処理のよくあるテクニック ⇒データを共有させて、ロックを使って整合性を保つ ・しかし、ロックにはデメリットがある
5.
デメリット① 処理速度が頭打ちになる 例「Webサイトにユーザーが訪れたらカウントする」 合計値を更新するメ ソッド スレッド A スレッド B 使用中なら待つ
6.
スレッドが増えると待ち時間が無限に… 例「Webサイトにユーザーが訪れたらカウントする」 合計値を更新するメ ソッド スレッド スレッド スレッド スレッド スレッド スレッド スレッド スレッド スレッド スレッド スレッド 使用中なら待つ
7.
8.
デメリット② デッドロック/ライブロック 2つのインスタンスのロックを取ろうとして 1つ取ったが、もう1つがロックされていた時 スレッド A スレッド B
9.
デッドロック お互いがお互いのロックを解放するのを待っている ⇒ずっと動かないまま スレッド A スレッド B
10.
ライブロック 一度ロックを解放して、もう片方のロックを取る ⇒どちらも片方のロックを持っているので、取得と解放を繰り返し続ける スレッド A スレッド B
11.
他にも 設計が大変などいろいろデメリットがあるので アクターモデルを使いましょう
12.
アクターについて ・メッセージのやりとりを使った計算機処理の手法 1973年に論文が発表された ・Actorとは1つのエンティティ メッセージの送受信を通して他のアクターとやりとりする
13.
メッセージを受け取った時の処理を定義しておく Actor case “How are
you?” => sender ! “I’m fine thank you” case “Nice to meet you” => sender ! “Nice to meet you too” case s:String => sender ! “Pardon?”
14.
メッセージを受け取った時の処理を定義しておく ①アクターがメッセージを受信する Actor case “How are
you?” => sender ! “I’m fine thank you” case “Nice to meet you” => sender ! “Nice to meet you too” case s:String => sender ! “Pardon?” “How are you?”
15.
メッセージを受け取った時の処理を定義しておく ①アクターがメッセージを受信する ②定義されたふるまいをする Actor case “How are
you?” => sender ! “I’m fine thank you” case “Nice to meet you” => sender ! “Nice to meet you too” case s:String => sender ! “Pardon?” “How are you?” “I’m fine thank you”
16.
結局 ・メッセージが来たらアクターのMailboxに貯まる ・メッセージを到着した順に1つずつ処理する ・あらかじめ定義されたふるまいを実行する
17.
Akkaのアクターの特徴 ・アドレスを持つ アドレスを使ってメッセージを送れる ・子アクターを作ることができる ヒエラルキーを構成する
18.
ヒエラルキー ・1つのアクターを始点としてヒエラルキーを構成する どんなアクターを作るときもActorSystemの参照が必要 ActorSystemの内部のアクターの子としてアクターを作れる
19.
ヒエラルキー Akkaの構造がヒエラルキーになっている理由⇒耐障害性 親アクターは子アクターにExceptionが発生した時にどうするか決められる ・子アクターを再起動させる ・子アクターを再開させる ・子アクターを終了させる ・例外を次の親に投げる
20.
ヒエラルキー ヒエラルキーはファイルシステム的な感じで、分かりやすい 例:accountingというActorsystemから作られた accountMonitorというアクターから作られた accountCrediterというアクター akka://accounting/user/accountMonitor/accountCreditor
21.
Akkaのアクターの特徴② 遠隔操作 本当にスケーラブルな並行処理の鍵となる アクターがどこにあっても (同じマシンでも、違うJVMのインスタンスでも、全く別のマシンでも) 同じように動く アクターのアドレスさえ知っていればローカルもリモートも関係ない ⇒location transparency
22.
Chapter 2.Working with
Actors ・既存プロジェクトへのアクターの追加の仕方 ・とりあえずアクターを動かしてみる
23.
Putting actors to
work アクターを使うのにまず必要な事 ・akka.actor.Actorトレイトを継承したクラスと、そこにreceiveメソッドを定義 ・ActorSystemを作る ・ActorSystemからアクターを生成
24.
receiveメソッドを定義
25.
ActorSystemを生成 ActorSystemからさっき定義したアクターを生成
26.
Actorインスタンスを作って開始させるとActorRefインスタンスが取得できる *この時点でもう非同期になっている* ActorRef…Akkaのアクターを参照する時に必ず使うオブジェクト Propf…アクターを作る時に使われる設定オブジェクト(ファクトリー的な)
27.
アクター内部からActorSystemにアクセス contextというプライベート変数 context.system :自分がいるのアクターシステムを参照できる context.stop(ref):ref(他のアクター)を停止させる 非同期に他アクターの開始・停止ができる
28.
メッセージの送り方① tell ActorRefオブジェクト と
!メソッドを使ってメッセージを送れる
29.
メッセージの送り方② ask ?メソッドはFutureを返す Futureの中身…送り先のアクターが返す値(処理済/まだ処理されていない/永遠に処理されない) 永遠に処理されない可能性もあるので、implicit valを使って時間を設定 アクターへ送るメッセージは非同期なので、アクター以外のコード内でレスポンス を得るにはFutureを使う必要がある
30.
Futureの中身を取り出す onCompleteメソッドはFutureインスタンスで使えるコールバック mapToで戻り値の型を指定 設定したタイムアウトの時間を過ぎるとFailureが返される
31.
最後に必ずActorSystemを終了させないといけない
32.
Chapter 3.Running with
Akka ・ビルドツールはいろいろあるけど、sbtがおすすめなのでちょっと紹介 ・ロギングとか
33.
The sbt build
defenition AntやRave⇒ビルドファイル名が指定されてる Mavenやsbt⇒ディレクトリ構造が指定されてる sbt Scalaのコード ⇒ src/main/scala以下と src/test/scala以下 設定ファイルなど ⇒ src/main/resources以下と src/test/resources以下 (設定でいろいろかえられる)
34.
build.sbtに設定を書く…project名とか、Scalaのバージョンや依存性 *決まり事* 全ての設定は空行をはさむ := 設定の割当 += 既にある設定に追記(libraryDependenciesとか) ++=
コレクション(Seqとか)を設定に追加する
35.
%%はScalaのバージョンを追記してくれる akka-actor_2.10
36.
sbtで使えるタスク upload…依存ライブラリの更新 compile test run…mainメソッドを探す 1つ以上あれば、どれを実行するかプロンプトに表示される
37.
Akka and application
configuration AkkaではActorSystemの設定に TypesafeConfig library を使っている JSONみたいな感じ HOCON(Human Optimized Config Object Notation)と知られている 独自の設定は /src/main/resources/application.conf に記述する
38.
書き方①
39.
書き方②
40.
Logging in Actors
and elsewhere Akkaのロギングは(もちろん)非同期 ロギングの方法 ①デフォルトのLogging機能を使う ②ActorLoggingトレイトをミックスインしたものを使う akka.actor.debug.receive = on ミックスインしたクラスに def receive = LoggingReceive{}を定義
41.
①デフォルトのLogging機能を使う build.sbt application.conf あとロギングのXMLを定義
42.
②ActorLoggingトレイトをミックスイン application.conf クラスを定義
43.
JavaベースのLoggingフレームワークと同様に error,warning,info,debug が使える {}でログ内に代入できる
44.
ビルドの仕方、ログの出し方が分かったので 次の章ではAkkaの特徴について触れる
Download now