SlideShare una empresa de Scribd logo
1 de 68
Descargar para leer sin conexión
並行処理初心者のための 
Akka入門 
株式会社ドワンゴ 吉村総一郎 
@sifue
今日はAkkaの勉強会
そもそもAkkaとは 
何か?
そんな人のための 
プレセッション
Akkaとは 
• ScalaとJavaのApach2ライセンスで提供され 
ているOSSのライブラリ 
• アクターモデルを適用したスケーラビリティや 
耐障害性に優れた並行処理が書けるライブラリ 
• Play Framework 2でも利用されている 
http://akka.io/
Akkaを知る前に 
• 並行処理 
• アクターモデル 
この二つを知らないといけない。 
今から上記二つをざっくり説明して、 
Akkaの機能もざっくり解説する
並行処理プログラミングとは 
ブライアン・ゲーツ 
ダグ・リー 
Java並行処理プログラミング ―その「基盤」と「最新API」を究める― 
• この本の内容をざっくり 
• まだ書店にはあるかも?
並行処理の歴史 
1. OSのプロセスによる並行処理 
• 資源の有効利用: 入出力のような外部操作の待ち時間 
• 公平性: 複数のユーザーで複数の処理 
• 利便性: 一つのプログラムで一つのタスクの方がシンプル 
➡タイムシェアリングシステムでメモリは別 
2. スレッド (軽量プロセス)による並行処理 
• プロセスと同じ動機 
• ひとつのプロセス内で複数のお仕事 
• メモリ、ファイルハンドルは共有 
• 共有データへのアクセスは明示的な同期化が必要
スレッドの利点 
• マルチプロセッサの有効利用 
• 1つのスレッドに1つのタスクで設計 
の単純化※ 
• サーバーへのクライアント接続などの 
処理を単純化※ 
• 応答性の良いUIの実現 
※問題点でもある
スレッドのリスク: 安全性の危機 
インクリメントと取得が 
別スレッドで交互に実行 
p.7より
スレッドのリスク: デッドロック 
リソースをロックし 
合って永遠に待つ 
パターン 
p.233より
スレッドのリスク: 実行性能の危機 
• スレッドが増えると、プロセス上のス 
レッドの入れ替えのためのコンテキス 
トスイッチのコストが増大
スレッドセーフの解決案 
1.ステートレスにする 
2.ロックして同期化処理を行う 
• メモリの可視性にはすごく注意が必要 (激難) 
変数の更新が 
別スレッドからは 
見えない 
p.40より
オブジェクトの 
共有の難しさ 
• synchronizedによるlockでの同期 
• volatileによる揮発性変数の利用 
• ただし同一スレッドからの書き込みの 
みの場合に限る 
• 同期化されてない内部変数を逸出しない 
ような入念なチェックが必要
並行処理プログラミング 
ってとてもむずかしい... 
→ concurrentパッケージのお陰 
でなんとか
ちなみにJavaの 
concurrentパッケージの概要 
名前内容 
Executor フレームワークスレッドを、CallableとFutureで扱えるようにしたり、 
並列度やリトライ、スケジュールを制御できる 
Concurrent コレクションJavaのコレクションをマルチスレッドで扱えるようにし 
たコレクション群、putIfAbsentとかもある。 
Atomic パッケージAtomicLongやAtomicReferenceなど、並行処理で変更 
しても問題が起こらない値や参照のクラス群 
ReentrantLock 再利用可能なロック。いわゆる排他処理とかMutexとか 
いわれるものを実現。tryLockとlockの両対応。 
CyclicBarrier 全スレッドがバリアに到達するまで待って、何かを実行 
してくれる部品 
CountDownLatch 指定した数まで処理が実行されるまで、全スレッドを待 
たせてくれる部品 
Semaphore 一度に指定された数のスレッドしか実行されないように 
してくれる部品 
DelayQueue 特定の時間が経過すると中身を取得できるようになる 
キュー
とはいえ、チーム開発してると 
よくわからんバグが起こりやすい 
→ なぜかテストが2回に1回落ちるw
誰かが界王拳みたいな 
ものだと言ってた 
(数倍の力出るけど死ぬかもしれない...)
そこで登場
アクターモデル
アクターモデルの歴史 
• 将来的に「数百・数千のマイクロプロ 
セッサから構成され、個々にローカル 
メモリを持ち、高性能通信ネットワー 
クで通信を行う並列コンピュータが近 
い将来登場するとの予測」から開発さ 
れた
現状スケールのためには 
• マルチコア 
• クラスタ構成 
が、今の大規模サービスの基本戦略な 
ので、すごく今の現状にマッチ 
1985年ぐらいにアクターモデル理論として完 
成したらしい…ここらへんの学術的な話は→ 
Wikipediaのアクターモデルを見てください
アクターモデルとは 
メールボックス 
アクター 
メッセージ 
address 
address 
address 
address 
address 
address 
ループ
アクターという処理行い、状態を持つオブジェクト 
メールボックス 
アクター 
メッセージ 
address 
address 
address 
address 
address 
address 
ループ
それぞれメールボックスとアドレスがある 
メールボックス 
アクター 
メッセージ 
address 
address 
address 
address 
address 
address 
ループ
アクター内ではループで逐次処理しながら、メッセージを別 
なアクターに投げたりして、メールボックスに溜まった命令を 
順不同で処理 (Akkaではデフォルトでは到着順で処理) 
メールボックス 
アクター 
メッセージ 
address 
address 
address 
address 
address 
address 
ループ
メッセージパッシングすることで非同期に処理し、 
単一のループで逐次処理しているので、並行処理のロックや同期が不要 
メールボックス 
アクター 
メッセージ 
address 
address 
address 
address 
address 
address 
ループ
さらにAkkaでは、子どものActorを作り、それぞれに 
ラウンドロビンでメッセージをブロードキャストしたりすることもできる 
メールボックス 
アクター 
メッセージ 
address 
address 
address 
address 
address 
address 
ループ
すばらしい! 
メールボックス 
アクター 
メッセージ 
address 
address 
address 
address 
address 
address 
ループ
Akka Actorの主な特徴 
• ActorSystemというActorの実行コン 
ポーネントが内部的にスレッドプールを 
持っており、tellによるメッセージパッシ 
ングのイベント駆動モデルと、マルチス 
レッドによる実行の融合がなされている 
• デフォルトでは、単一実行するMailboxの 
実装により逐次メッセージが処理される
Actor同士がリモートで 
メッセージを送信できる 
• ActorPathというアドレスを利用 
• ロケーション透過性があり、アク 
ターの物理的な位置をAkka上で 
は考慮する必要が無い 
• ポートは自由に設定可能
耐障害性の機能 
• SupervisorがActorを監視しており、処理中 
に例外を吐いた時に再実行を行わせたりする 
ことができる 
• SupervisorStrategyにより子どものアクター 
が起こしたエラーの挙動を変えられる 
• let-it-crashという考え (とっとと壊して新し 
いモノを再度作ったり、やり直したりする)
Akkaで実現できる機能 
• 並行処理 
• 分散処理のために子どものアクターを作る 
• アクターが失敗した時に再実行する 
• アクターのメッセージの結果をFutureで受け取る (ask) 
• メッセージの送信元を知る 
• メッセージ送信のスケジューリング 
• リモートのアクターへのメッセージ送信 
• アクター同士のゴシッププロトコルによるクラスタリング 
• トランザクションの実行とロールバック 
• ロギング
どんな用途に向いているか 
スケールアップ、スケールアウト、耐障害性の必要な 
• トランザクション処理 
• サービスのバックエンド処理 
• 並行処理 
• 大規模なシミュレーション計算 
• バッチ処理 
• コミュニケーションハブ 
• オンラインゲーム、賭けなどの実装 
• BIやデータマイニング 
• 複雑なイベントストリーム処理 
http://doc.akka.io/docs/akka/2.3.6/intro/use-cases.html
Akkaの基本的な機能の解説 
• Actor 
• ActorSystem 
• tell, ask 
• SupervisorStrategy 
• ActorPath 
• DeadLetter 
• Akka Cluster
Actor 
• メッセージを受信するためのMailboxと、メッ 
セージの対する処理を記述するreceiveを持つ 
• それぞれのActorは、並列に動作するが、1つ 
のActorは並列にメッセージを処理することは 
ない 
• そのため、Actorでスレッドセーフを意識する 
必要はない
HelloWorld 
• Actorにメッセージを送信して表示する
ActorSystem 
• 複数のActorを構成するために必要な 
もろもろを管理するクラス 
• ActorSystemからActorを作っていく 
ことができる
tell, ask 
• Actorにメッセージを送信する
tell (別名: “!”) 
• Actorにメッセージを投げて、 
返答を待たない
ask (別名: “?”) 
• Actorにメッセージを投げて、 
返答を待つ 
ブロッキングするのではなく、 
Futureオブジェクトが返る
SupervisorStrategy 
• Actorは複数の子供Actorを持つことが 
できる 
http://doc.akka.io/docs/akka/snapshot/scala/fault-tolerance.html
親Actor 
• 子供Actorを管理するための戦略、SupervisorStrategy 
を持つことができる 
• 自分で定義することもできるがすでに2つ定義されている 
1. OneForOneStrategy 
- ある子供Actorが例外で停止した時、その子供Actor 
だけを再起動する 
2. OneForAllStrategy 
- ある子供Actorが例外で停止した時、全ての子供 
Actorを再起動する
SupervisorStrategyの 
設定の例
ActorPath 
• ActorにはURIが付いており、それで 
メッセージを送信できる 
akka://system/user/MyActor
ActorPathはActorの 
親子関係に対応 
• MySupervisorがMyActorという子供 
Actorを持っている場合 
akka://system/user/MySupervisor/MyActor
ActorPathからActorに 
メッセージを投げる
存在しないAcotorにメッセー 
ジを投げたらどうなるの? 
• DeadLetterになる
DeadLetter 
• メッセージを投げたけど届かなかった場合 
にメッセージはDeadLetterとなる 
• 以下の場合もDeadLetterになる 
- 送信したがActorが停止してしまった場合 
- Actorが持つメールボックス(メッセージ 
の入れ物)に追加できなかった場合 
‣ 容量制限に引っかかるなど
Akka Cluster 
• Akka Remoteを利用した、複数ノード構成 
のAkkaアプリケーションを構築するエクス 
テンション 
• ノードのメンバー管理、クラスタへのノード 
のJoin・Leaveを行ってくれている 
• 参加のやりとりはゴシッププロトコル 
• 論理時間はベクタークロックアルゴリズム
ノードの役割 
• シードノード 
- 最初にクラスタに参加するノードが接続するためのエン 
トリーポイント 
• リーダー 
- クラスタを管理するノード、リーダーがクラスタから落 
ちると別のノードがリーダーに昇格する 
• ロール 
- 各ノードに複数のロールを持たせることができる (ただの 
文字列)
ノードの一生 
• クラスタにJoinしてLeaveするまでの 
ライフサイクルが存在する
ノードの状態 
• ノードは一生の中でいくつかの状態を取る 
• この状態の管理はリーダーノードが行い、 
クラスタ全体で共有される 
状態意味 
joining クラスタに入ろうとしている 
up クラスタに正常に入った状態 
leaving/exiting クラスタから正常に抜けようとしてる状態 
down ノードが落ちた状態 
removed クラスタから削除された
Unreachable 
• 特別な状態、あるノードが通信不能、 
ハートビートがタイムアウトした時など 
• この状態はdown状態と似ているが、ク 
ラスタ全体で共有されるわけではなく 
ノードごとに保持している
Unreachableの検出 
• 任意のノードがUnreachableかどうか 
は、ノードのFailureDetector(*fd)と呼 
ばれる仕組みにより検出される 
• 他のノードからはUnreachableではな 
くとも、自分からはUnreachableであ 
ることもある
利用する時に 
気をつけること 
• ActorSystemをたくさん作らない 
• メッセージに型がない 
• シリアライズ不可能なメッセージを投げない 
• DeadLetterに注意する 
• Mailboxのサイズに注意する 
• ActorPathに注意する
ActorSystemを 
たくさん作らない 
• スレッドプールができるので生成コストが 
大きい 
• ちなみに、以下の2つのActorSystemは 
同値ではないので要注意
シリアライズ不可能な 
メッセージを投げない 
• Actorはノードをまたいで実行される時 
もある 
• シリアライズ不可能なクラスのインス 
タンスを投げないこと 
➡例外投げて落ちる
メッセージに型がない 
• Actorが受け取る事のできるメッセージは全部Any 
• TypedActorというものもあったりするが基本、 
メッセージ型を作ったほうが便利 
• Actorが処理することができないメッセージを投げ 
ても、Actorに無視されるだけ 
➡DeadLetterにならない 
➡Unhandledになる、Loggerで拾うことは可能
DeadLetterに注意する 
• Actorに処理して欲しいはずなのに処理 
してもらっていない 
• DeadLetterをログに全て出力している 
の設定を確認する 
• 何個まで出すかなどの設定がある 
http://doc.akka.io/docs/akka/2.3.4/scala/logging.html
MailBoxのサイズに 
注意する 
• メッセージが無限に入るので処理が遅 
れてることに気がつかない 
• 対策としては、Mailboxにサイズ制限を 
設ける 
• デフォルトでは無制限
ActorPathに注意する 
• メッセージを投げたいActorの実装が 
変わってActorPathが変わるかもしれ 
ない 
• 対策としては、ActorPathのBuilderク 
ラスを用意したほうが無難
もっとAkkaについて 
知りたい 
• akka-user、akka-devを見る 
• akkaのコードを読む (https://github.com/ 
akka/akka) 
• Effective Akkaという洋書がKindleで読める
以上 
ご静聴ありがとう 
ございました 
Special thanks for 
@suikwasha (Shoshi TAMAKI)
おまけ
Akka Streamsについて 
• 2014年9月現在実験的機能として公開中 
• Akkaの分散、耐障害性の仕組みを利用してス 
トリーム処理ができる
Akka Streamsの用途 
• バルクデータの転送 
• リアルタイムデータソース 
• 巨大データセットのバッチ処理 
• 監視/解析 
http://www.slideshare.net/rolandkuhn/reactive-streams
Akka StreamsでのFlowの処理例 
• データをストリー 
ムとして処理 
• Flowの情報受取 
元はTCPを選択す 
ることもできる 
http://typesafe.com/activator/template/akka-stream-scala

Más contenido relacionado

La actualidad más candente

Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)NTT DATA Technology & Innovation
 
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~NTT DATA OSS Professional Services
 
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティスAmazon Web Services Japan
 
Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法についてYuji Otani
 
Akkaで分散システム入門
Akkaで分散システム入門Akkaで分散システム入門
Akkaで分散システム入門Shingo Omura
 
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Masahito Zembutsu
 
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjugYahoo!デベロッパーネットワーク
 
脱RESTful API設計の提案
脱RESTful API設計の提案脱RESTful API設計の提案
脱RESTful API設計の提案樽八 仲川
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話Kumazaki Hiroki
 
Azure API Management 俺的マニュアル
Azure API Management 俺的マニュアルAzure API Management 俺的マニュアル
Azure API Management 俺的マニュアル貴志 上坂
 
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」Takuto Wada
 
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)NTT DATA Technology & Innovation
 
なぜ「マイクロサービス“化”」が必要なのか
なぜ「マイクロサービス“化”」が必要なのかなぜ「マイクロサービス“化”」が必要なのか
なぜ「マイクロサービス“化”」が必要なのかYusuke Suzuki
 
こんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツールこんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツールdcubeio
 
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理NTT DATA Technology & Innovation
 
エンジニアから飛んでくるマサカリを受け止める心得
エンジニアから飛んでくるマサカリを受け止める心得エンジニアから飛んでくるマサカリを受け止める心得
エンジニアから飛んでくるマサカリを受け止める心得Reimi Kuramochi Chiba
 
DockerとPodmanの比較
DockerとPodmanの比較DockerとPodmanの比較
DockerとPodmanの比較Akihiro Suda
 

La actualidad más candente (20)

Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
 
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
 
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
 
Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法について
 
Akkaで分散システム入門
Akkaで分散システム入門Akkaで分散システム入門
Akkaで分散システム入門
 
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
 
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
 
脱RESTful API設計の提案
脱RESTful API設計の提案脱RESTful API設計の提案
脱RESTful API設計の提案
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
 
Azure API Management 俺的マニュアル
Azure API Management 俺的マニュアルAzure API Management 俺的マニュアル
Azure API Management 俺的マニュアル
 
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
 
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
 
なぜ「マイクロサービス“化”」が必要なのか
なぜ「マイクロサービス“化”」が必要なのかなぜ「マイクロサービス“化”」が必要なのか
なぜ「マイクロサービス“化”」が必要なのか
 
こんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツールこんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツール
 
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
 
ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開
 
エンジニアから飛んでくるマサカリを受け止める心得
エンジニアから飛んでくるマサカリを受け止める心得エンジニアから飛んでくるマサカリを受け止める心得
エンジニアから飛んでくるマサカリを受け止める心得
 
NGINXをBFF (Backend for Frontend)として利用した話
NGINXをBFF (Backend for Frontend)として利用した話NGINXをBFF (Backend for Frontend)として利用した話
NGINXをBFF (Backend for Frontend)として利用した話
 
DockerとPodmanの比較
DockerとPodmanの比較DockerとPodmanの比較
DockerとPodmanの比較
 
KeycloakでAPI認可に入門する
KeycloakでAPI認可に入門するKeycloakでAPI認可に入門する
KeycloakでAPI認可に入門する
 

Destacado

Akkaの翻訳みんなでやろう Let's translate akka doc
Akkaの翻訳みんなでやろう Let's translate akka docAkkaの翻訳みんなでやろう Let's translate akka doc
Akkaの翻訳みんなでやろう Let's translate akka doc賢太郎 前多
 
Akka ActorとAMQPでLINEのメッセージングパイプラインをリプレースした話
Akka ActorとAMQPでLINEのメッセージングパイプラインをリプレースした話Akka ActorとAMQPでLINEのメッセージングパイプラインをリプレースした話
Akka ActorとAMQPでLINEのメッセージングパイプラインをリプレースした話LINE Corporation
 
リクルート流Elasticsearchの使い方
リクルート流Elasticsearchの使い方リクルート流Elasticsearchの使い方
リクルート流Elasticsearchの使い方Recruit Technologies
 
HBaseとRedisを使った100億超/日メッセージを処理するLINEのストレージ
HBaseとRedisを使った100億超/日メッセージを処理するLINEのストレージHBaseとRedisを使った100億超/日メッセージを処理するLINEのストレージ
HBaseとRedisを使った100億超/日メッセージを処理するLINEのストレージLINE Corporation
 
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Springドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring増田 亨
 
大規模データに対するデータサイエンスの進め方 #CWT2016
大規模データに対するデータサイエンスの進め方 #CWT2016大規模データに対するデータサイエンスの進め方 #CWT2016
大規模データに対するデータサイエンスの進め方 #CWT2016Cloudera Japan
 

Destacado (6)

Akkaの翻訳みんなでやろう Let's translate akka doc
Akkaの翻訳みんなでやろう Let's translate akka docAkkaの翻訳みんなでやろう Let's translate akka doc
Akkaの翻訳みんなでやろう Let's translate akka doc
 
Akka ActorとAMQPでLINEのメッセージングパイプラインをリプレースした話
Akka ActorとAMQPでLINEのメッセージングパイプラインをリプレースした話Akka ActorとAMQPでLINEのメッセージングパイプラインをリプレースした話
Akka ActorとAMQPでLINEのメッセージングパイプラインをリプレースした話
 
リクルート流Elasticsearchの使い方
リクルート流Elasticsearchの使い方リクルート流Elasticsearchの使い方
リクルート流Elasticsearchの使い方
 
HBaseとRedisを使った100億超/日メッセージを処理するLINEのストレージ
HBaseとRedisを使った100億超/日メッセージを処理するLINEのストレージHBaseとRedisを使った100億超/日メッセージを処理するLINEのストレージ
HBaseとRedisを使った100億超/日メッセージを処理するLINEのストレージ
 
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Springドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
 
大規模データに対するデータサイエンスの進め方 #CWT2016
大規模データに対するデータサイエンスの進め方 #CWT2016大規模データに対するデータサイエンスの進め方 #CWT2016
大規模データに対するデータサイエンスの進め方 #CWT2016
 

Similar a 並行処理初心者のためのAkka入門

実践Akka
実践Akka実践Akka
実践AkkaHuy Do
 
Akka meetup 2014_sep
Akka meetup 2014_sepAkka meetup 2014_sep
Akka meetup 2014_sepmasahitojp
 
【LT】akka receive とScala Javaの違い
【LT】akka receive とScala Javaの違い 【LT】akka receive とScala Javaの違い
【LT】akka receive とScala Javaの違い 賢太郎 前多
 
Developing an Akka Edge6
Developing an Akka Edge6Developing an Akka Edge6
Developing an Akka Edge6saaaaaaki
 
Akka Clusterの耐障害設計
Akka Clusterの耐障害設計Akka Clusterの耐障害設計
Akka Clusterの耐障害設計TanUkkii
 
Quasar: Actor Model and Light Weight Threads on Java
Quasar: Actor Model and Light Weight Threads on JavaQuasar: Actor Model and Light Weight Threads on Java
Quasar: Actor Model and Light Weight Threads on JavaTaku Miyakawa
 
Scalaz-StreamによるFunctional Reactive Programming
Scalaz-StreamによるFunctional Reactive ProgrammingScalaz-StreamによるFunctional Reactive Programming
Scalaz-StreamによるFunctional Reactive ProgrammingTomoharu ASAMI
 
Scalaでのプログラム開発
Scalaでのプログラム開発Scalaでのプログラム開発
Scalaでのプログラム開発Kota Mizushima
 
SQL Server 使いのための Azure Synapse Analytics - Spark 入門
SQL Server 使いのための Azure Synapse Analytics - Spark 入門SQL Server 使いのための Azure Synapse Analytics - Spark 入門
SQL Server 使いのための Azure Synapse Analytics - Spark 入門Daiyu Hatakeyama
 
Scala Daysに行ってみて
Scala Daysに行ってみてScala Daysに行ってみて
Scala Daysに行ってみてKota Mizushima
 
WebSocket+Akka(Remote)+Play 2.1 Java
WebSocket+Akka(Remote)+Play 2.1 JavaWebSocket+Akka(Remote)+Play 2.1 Java
WebSocket+Akka(Remote)+Play 2.1 JavaKazuhiro Hara
 
Spark Structured StreamingでKafkaクラスタのデータをお手軽活用
Spark Structured StreamingでKafkaクラスタのデータをお手軽活用Spark Structured StreamingでKafkaクラスタのデータをお手軽活用
Spark Structured StreamingでKafkaクラスタのデータをお手軽活用Sotaro Kimura
 
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-PE-BANK
 
Scala による自然言語処理
Scala による自然言語処理Scala による自然言語処理
Scala による自然言語処理Hiroyoshi Komatsu
 
Akka-Streams in Production
Akka-Streams in ProductionAkka-Streams in Production
Akka-Streams in ProductionKazunobu Raita
 

Similar a 並行処理初心者のためのAkka入門 (20)

実践Akka
実践Akka実践Akka
実践Akka
 
Akka meetup 2014_sep
Akka meetup 2014_sepAkka meetup 2014_sep
Akka meetup 2014_sep
 
【LT】akka receive とScala Javaの違い
【LT】akka receive とScala Javaの違い 【LT】akka receive とScala Javaの違い
【LT】akka receive とScala Javaの違い
 
Play jjug2012spring
Play jjug2012springPlay jjug2012spring
Play jjug2012spring
 
ATN No.2 Scala事始め
ATN No.2 Scala事始めATN No.2 Scala事始め
ATN No.2 Scala事始め
 
Developing an Akka Edge6
Developing an Akka Edge6Developing an Akka Edge6
Developing an Akka Edge6
 
Akka Clusterの耐障害設計
Akka Clusterの耐障害設計Akka Clusterの耐障害設計
Akka Clusterの耐障害設計
 
Quasar: Actor Model and Light Weight Threads on Java
Quasar: Actor Model and Light Weight Threads on JavaQuasar: Actor Model and Light Weight Threads on Java
Quasar: Actor Model and Light Weight Threads on Java
 
Scalaz-StreamによるFunctional Reactive Programming
Scalaz-StreamによるFunctional Reactive ProgrammingScalaz-StreamによるFunctional Reactive Programming
Scalaz-StreamによるFunctional Reactive Programming
 
Scalaでのプログラム開発
Scalaでのプログラム開発Scalaでのプログラム開発
Scalaでのプログラム開発
 
とりあえず使えるSBT
とりあえず使えるSBTとりあえず使えるSBT
とりあえず使えるSBT
 
Akka入門
Akka入門Akka入門
Akka入門
 
SQL Server 使いのための Azure Synapse Analytics - Spark 入門
SQL Server 使いのための Azure Synapse Analytics - Spark 入門SQL Server 使いのための Azure Synapse Analytics - Spark 入門
SQL Server 使いのための Azure Synapse Analytics - Spark 入門
 
Scala Daysに行ってみて
Scala Daysに行ってみてScala Daysに行ってみて
Scala Daysに行ってみて
 
WebSocket+Akka(Remote)+Play 2.1 Java
WebSocket+Akka(Remote)+Play 2.1 JavaWebSocket+Akka(Remote)+Play 2.1 Java
WebSocket+Akka(Remote)+Play 2.1 Java
 
Trait in scala
Trait in scalaTrait in scala
Trait in scala
 
Spark Structured StreamingでKafkaクラスタのデータをお手軽活用
Spark Structured StreamingでKafkaクラスタのデータをお手軽活用Spark Structured StreamingでKafkaクラスタのデータをお手軽活用
Spark Structured StreamingでKafkaクラスタのデータをお手軽活用
 
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
 
Scala による自然言語処理
Scala による自然言語処理Scala による自然言語処理
Scala による自然言語処理
 
Akka-Streams in Production
Akka-Streams in ProductionAkka-Streams in Production
Akka-Streams in Production
 

Más de Yoshimura Soichiro

FirebaseでN高生証明botを作ってみた
FirebaseでN高生証明botを作ってみたFirebaseでN高生証明botを作ってみた
FirebaseでN高生証明botを作ってみたYoshimura Soichiro
 
N高等学校でやってるプログラミング
N高等学校でやってるプログラミングN高等学校でやってるプログラミング
N高等学校でやってるプログラミングYoshimura Soichiro
 
ソフトウェア設計のすすめ
ソフトウェア設計のすすめソフトウェア設計のすすめ
ソフトウェア設計のすすめYoshimura Soichiro
 
Obsのプラグイン作ってみた
Obsのプラグイン作ってみたObsのプラグイン作ってみた
Obsのプラグイン作ってみたYoshimura Soichiro
 
Developers Summit 2014 「Play2/Scalaでドメイン駆動設計を利用した大規模Webアプリケーションのスクラム開発の勘所」
Developers Summit 2014  「Play2/Scalaでドメイン駆動設計を利用した大規模Webアプリケーションのスクラム開発の勘所」Developers Summit 2014  「Play2/Scalaでドメイン駆動設計を利用した大規模Webアプリケーションのスクラム開発の勘所」
Developers Summit 2014 「Play2/Scalaでドメイン駆動設計を利用した大規模Webアプリケーションのスクラム開発の勘所」Yoshimura Soichiro
 
チームの目標への柔軟な対応
チームの目標への柔軟な対応チームの目標への柔軟な対応
チームの目標への柔軟な対応Yoshimura Soichiro
 
20121126 Solr@ニコニコ生放送
20121126 Solr@ニコニコ生放送20121126 Solr@ニコニコ生放送
20121126 Solr@ニコニコ生放送Yoshimura Soichiro
 

Más de Yoshimura Soichiro (9)

FirebaseでN高生証明botを作ってみた
FirebaseでN高生証明botを作ってみたFirebaseでN高生証明botを作ってみた
FirebaseでN高生証明botを作ってみた
 
N高等学校でやってるプログラミング
N高等学校でやってるプログラミングN高等学校でやってるプログラミング
N高等学校でやってるプログラミング
 
失敗の話
失敗の話失敗の話
失敗の話
 
ソフトウェア設計のすすめ
ソフトウェア設計のすすめソフトウェア設計のすすめ
ソフトウェア設計のすすめ
 
Obsのプラグイン作ってみた
Obsのプラグイン作ってみたObsのプラグイン作ってみた
Obsのプラグイン作ってみた
 
Developers Summit 2014 「Play2/Scalaでドメイン駆動設計を利用した大規模Webアプリケーションのスクラム開発の勘所」
Developers Summit 2014  「Play2/Scalaでドメイン駆動設計を利用した大規模Webアプリケーションのスクラム開発の勘所」Developers Summit 2014  「Play2/Scalaでドメイン駆動設計を利用した大規模Webアプリケーションのスクラム開発の勘所」
Developers Summit 2014 「Play2/Scalaでドメイン駆動設計を利用した大規模Webアプリケーションのスクラム開発の勘所」
 
チームの目標への柔軟な対応
チームの目標への柔軟な対応チームの目標への柔軟な対応
チームの目標への柔軟な対応
 
20121126 Solr@ニコニコ生放送
20121126 Solr@ニコニコ生放送20121126 Solr@ニコニコ生放送
20121126 Solr@ニコニコ生放送
 
私とインクス
私とインクス私とインクス
私とインクス
 

並行処理初心者のためのAkka入門