Submit Search
Upload
Akkaとは。アクターモデル とは。
•
4 likes
•
8,373 views
K
Kenjiro Kubota
Follow
2/28社内勉強会用
Read less
Read more
Software
Report
Share
Report
Share
1 of 49
Download now
Download to read offline
Recommended
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
mosa siru
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
NTT DATA Technology & Innovation
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
Etsuji Nakai
Akka actorを何故使うのか?
Akka actorを何故使うのか?
Nyle Inc.(ナイル株式会社)
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
Ryuji Tsutsui
並行処理初心者のためのAkka入門
並行処理初心者のためのAkka入門
Yoshimura Soichiro
マイクロサービスに至る歴史とこれから - XP祭り2021
マイクロサービスに至る歴史とこれから - XP祭り2021
Yusuke Suzuki
マイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ
増田 亨
Recommended
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
mosa siru
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
NTT DATA Technology & Innovation
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
Etsuji Nakai
Akka actorを何故使うのか?
Akka actorを何故使うのか?
Nyle Inc.(ナイル株式会社)
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
Ryuji Tsutsui
並行処理初心者のためのAkka入門
並行処理初心者のためのAkka入門
Yoshimura Soichiro
マイクロサービスに至る歴史とこれから - XP祭り2021
マイクロサービスに至る歴史とこれから - XP祭り2021
Yusuke Suzuki
マイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ
増田 亨
Where狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキー
yoku0825
フロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjug
Itsuki Kuroda
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Akihiro Suda
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Toru Makabe
Redisの特徴と活用方法について
Redisの特徴と活用方法について
Yuji Otani
Kubernetesによる機械学習基盤への挑戦
Kubernetesによる機械学習基盤への挑戦
Preferred Networks
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
Kentaro Matsui
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
Kumazaki Hiroki
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
Taku Miyakawa
初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!
Tetsutaro Watanabe
分散システムについて語らせてくれ
分散システムについて語らせてくれ
Kumazaki Hiroki
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
Yahoo!デベロッパーネットワーク
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
NTT Communications Technology Development
モジュールの凝集度・結合度・インタフェース
モジュールの凝集度・結合度・インタフェース
Hajime Yanagawa
例外設計における大罪
例外設計における大罪
Takuto Wada
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
Yoshitaka Kawashima
Akkaで分散システム入門
Akkaで分散システム入門
Shingo Omura
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意
Yoshitaka Kawashima
開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)
mosa siru
Scalaの現状と課題
Scalaの現状と課題
Kota Mizushima
IIJlab seminar - Linux Kernel Library: Reusable monolithic kernel (in Japanese)
IIJlab seminar - Linux Kernel Library: Reusable monolithic kernel (in Japanese)
Hajime Tazaki
More Related Content
What's hot
Where狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキー
yoku0825
フロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjug
Itsuki Kuroda
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Akihiro Suda
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Toru Makabe
Redisの特徴と活用方法について
Redisの特徴と活用方法について
Yuji Otani
Kubernetesによる機械学習基盤への挑戦
Kubernetesによる機械学習基盤への挑戦
Preferred Networks
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
Kentaro Matsui
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
Kumazaki Hiroki
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
Taku Miyakawa
初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!
Tetsutaro Watanabe
分散システムについて語らせてくれ
分散システムについて語らせてくれ
Kumazaki Hiroki
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
Yahoo!デベロッパーネットワーク
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
NTT Communications Technology Development
モジュールの凝集度・結合度・インタフェース
モジュールの凝集度・結合度・インタフェース
Hajime Yanagawa
例外設計における大罪
例外設計における大罪
Takuto Wada
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
Yoshitaka Kawashima
Akkaで分散システム入門
Akkaで分散システム入門
Shingo Omura
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意
Yoshitaka Kawashima
開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)
mosa siru
What's hot
(20)
Where狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキー
フロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjug
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Redisの特徴と活用方法について
Redisの特徴と活用方法について
Kubernetesによる機械学習基盤への挑戦
Kubernetesによる機械学習基盤への挑戦
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!
分散システムについて語らせてくれ
分散システムについて語らせてくれ
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
モジュールの凝集度・結合度・インタフェース
モジュールの凝集度・結合度・インタフェース
例外設計における大罪
例外設計における大罪
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
Akkaで分散システム入門
Akkaで分散システム入門
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意
開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)
Similar to Akkaとは。アクターモデル とは。
Scalaの現状と課題
Scalaの現状と課題
Kota Mizushima
IIJlab seminar - Linux Kernel Library: Reusable monolithic kernel (in Japanese)
IIJlab seminar - Linux Kernel Library: Reusable monolithic kernel (in Japanese)
Hajime Tazaki
Scalaでのプログラム開発
Scalaでのプログラム開発
Kota Mizushima
機械学習基盤として活用するAutonomous Database
機械学習基盤として活用するAutonomous Database
Kenichi Sonoda
EMF勉強会
EMF勉強会
Norihito Ohshima
Try andstudy cloud_20120509_nagoya
Try andstudy cloud_20120509_nagoya
Etsuji Nakai
Try andstudy cloud
Try andstudy cloud
Etsuji Nakai
Hivemall Talk@SIGMOD-J Oct.4, 2014.
Hivemall Talk@SIGMOD-J Oct.4, 2014.
Makoto Yui
試して学べるクラウド技術!Eucalyptus/GlusterFS
試して学べるクラウド技術!Eucalyptus/GlusterFS
Etsuji Nakai
OpenStack概要
OpenStack概要
Akira Yoshiyama
H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門
H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門
Etsuji Nakai
Open Source Study Session #3
Open Source Study Session #3
Satoshi Konno
Linux on Power と x86 Linux との技術的な相違点
Linux on Power と x86 Linux との技術的な相違点
Shinichiro Arai
Guide to Cassandra for Production Deployments
Guide to Cassandra for Production Deployments
smdkk
Cumulus Linux 導入事例 -ネットワークをDevOpsに統合した、エンジニアが幸せになるインフラ運用手法のご紹介-
Cumulus Linux 導入事例 -ネットワークをDevOpsに統合した、エンジニアが幸せになるインフラ運用手法のご紹介-
Takashi Sogabe
Azure Antenna AI 概要
Azure Antenna AI 概要
Miho Yamamoto
Quarkus入門
Quarkus入門
Norito Agetsuma
Watsonをささえる ハイパフォーマンスクラウドで はじめるDeep Learning
Watsonをささえる ハイパフォーマンスクラウドで はじめるDeep Learning
Atsumori Sasaki
Starc verilog hdl2013d
Starc verilog hdl2013d
Kiyoshi Ogawa
Spine入門
Spine入門
AdvancedTechNight
Similar to Akkaとは。アクターモデル とは。
(20)
Scalaの現状と課題
Scalaの現状と課題
IIJlab seminar - Linux Kernel Library: Reusable monolithic kernel (in Japanese)
IIJlab seminar - Linux Kernel Library: Reusable monolithic kernel (in Japanese)
Scalaでのプログラム開発
Scalaでのプログラム開発
機械学習基盤として活用するAutonomous Database
機械学習基盤として活用するAutonomous Database
EMF勉強会
EMF勉強会
Try andstudy cloud_20120509_nagoya
Try andstudy cloud_20120509_nagoya
Try andstudy cloud
Try andstudy cloud
Hivemall Talk@SIGMOD-J Oct.4, 2014.
Hivemall Talk@SIGMOD-J Oct.4, 2014.
試して学べるクラウド技術!Eucalyptus/GlusterFS
試して学べるクラウド技術!Eucalyptus/GlusterFS
OpenStack概要
OpenStack概要
H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門
H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門
Open Source Study Session #3
Open Source Study Session #3
Linux on Power と x86 Linux との技術的な相違点
Linux on Power と x86 Linux との技術的な相違点
Guide to Cassandra for Production Deployments
Guide to Cassandra for Production Deployments
Cumulus Linux 導入事例 -ネットワークをDevOpsに統合した、エンジニアが幸せになるインフラ運用手法のご紹介-
Cumulus Linux 導入事例 -ネットワークをDevOpsに統合した、エンジニアが幸せになるインフラ運用手法のご紹介-
Azure Antenna AI 概要
Azure Antenna AI 概要
Quarkus入門
Quarkus入門
Watsonをささえる ハイパフォーマンスクラウドで はじめるDeep Learning
Watsonをささえる ハイパフォーマンスクラウドで はじめるDeep Learning
Starc verilog hdl2013d
Starc verilog hdl2013d
Spine入門
Spine入門
More from Kenjiro Kubota
いまどき(これから)のPHP開発
いまどき(これから)のPHP開発
Kenjiro Kubota
アイスタイル特設サイトにおけるVue.js導入事例(再演)
アイスタイル特設サイトにおけるVue.js導入事例(再演)
Kenjiro Kubota
gRPC入門
gRPC入門
Kenjiro Kubota
アイスタイル特設サイトにおけるVue.jsの導入事例
アイスタイル特設サイトにおけるVue.jsの導入事例
Kenjiro Kubota
フロントエンドエンジニアが知るべきFirebaseの世界
フロントエンドエンジニアが知るべきFirebaseの世界
Kenjiro Kubota
PHP,Go,Elasticsearchによる、@cosmeを5倍速くする取り組み
PHP,Go,Elasticsearchによる、@cosmeを5倍速くする取り組み
Kenjiro Kubota
カメラを利用したアプリを作って約1000人で遊んだ話
カメラを利用したアプリを作って約1000人で遊んだ話
Kenjiro Kubota
中・大規模でLaravelを導入するTips
中・大規模でLaravelを導入するTips
Kenjiro Kubota
FirebaseとNuxtでLPを作って見た
FirebaseとNuxtでLPを作って見た
Kenjiro Kubota
introducing vue-wait-component
introducing vue-wait-component
Kenjiro Kubota
HHVM/Hackを本番投入した話
HHVM/Hackを本番投入した話
Kenjiro Kubota
HackのAsyncCurlで死んだ話
HackのAsyncCurlで死んだ話
Kenjiro Kubota
LaravelでAPI定義を管理する
LaravelでAPI定義を管理する
Kenjiro Kubota
2017: A CSS Design Odyssey
2017: A CSS Design Odyssey
Kenjiro Kubota
Introducing hhvm hack-async
Introducing hhvm hack-async
Kenjiro Kubota
Responsableを使ったadr実装
Responsableを使ったadr実装
Kenjiro Kubota
土日でLineみたいなチャット作ってきた!
土日でLineみたいなチャット作ってきた!
Kenjiro Kubota
Viewを活用して複雑化と戦う
Viewを活用して複雑化と戦う
Kenjiro Kubota
Laravel aspectで関心の分離
Laravel aspectで関心の分離
Kenjiro Kubota
Laravelでfacadeを使わない開発
Laravelでfacadeを使わない開発
Kenjiro Kubota
More from Kenjiro Kubota
(20)
いまどき(これから)のPHP開発
いまどき(これから)のPHP開発
アイスタイル特設サイトにおけるVue.js導入事例(再演)
アイスタイル特設サイトにおけるVue.js導入事例(再演)
gRPC入門
gRPC入門
アイスタイル特設サイトにおけるVue.jsの導入事例
アイスタイル特設サイトにおけるVue.jsの導入事例
フロントエンドエンジニアが知るべきFirebaseの世界
フロントエンドエンジニアが知るべきFirebaseの世界
PHP,Go,Elasticsearchによる、@cosmeを5倍速くする取り組み
PHP,Go,Elasticsearchによる、@cosmeを5倍速くする取り組み
カメラを利用したアプリを作って約1000人で遊んだ話
カメラを利用したアプリを作って約1000人で遊んだ話
中・大規模でLaravelを導入するTips
中・大規模でLaravelを導入するTips
FirebaseとNuxtでLPを作って見た
FirebaseとNuxtでLPを作って見た
introducing vue-wait-component
introducing vue-wait-component
HHVM/Hackを本番投入した話
HHVM/Hackを本番投入した話
HackのAsyncCurlで死んだ話
HackのAsyncCurlで死んだ話
LaravelでAPI定義を管理する
LaravelでAPI定義を管理する
2017: A CSS Design Odyssey
2017: A CSS Design Odyssey
Introducing hhvm hack-async
Introducing hhvm hack-async
Responsableを使ったadr実装
Responsableを使ったadr実装
土日でLineみたいなチャット作ってきた!
土日でLineみたいなチャット作ってきた!
Viewを活用して複雑化と戦う
Viewを活用して複雑化と戦う
Laravel aspectで関心の分離
Laravel aspectで関心の分離
Laravelでfacadeを使わない開発
Laravelでfacadeを使わない開発
Akkaとは。アクターモデル とは。
1.
Akkaとは。アクターモデル とは。 #2/28社内勉強会@KenjiroKubota
2.
Akkaとは。
3.
の前に、
4.
Akkaの誕生した背景 2000年代中盤… CPU(主にシングルスレッド)の性能限界 アプリケーションを並行で動作させる。 ● マルチスレッド処理 ●
分散処理
5.
分散処理を行うための、Akka Lightbend社(旧Typesafe社)によって開発されたオープンソースのJava/Scala向けツールキット 並行・分散アプリケーションをシンプルに単一モデルで実装するプログラミングモデルを提供する。 ● 回復性…システムにダウンタイムを発生させない ● 即応性…トラフィックに対して素早く反応する ●
弾力性…サーバーやコア数によってスケールさせる アクターモデル プログラミング
6.
アクターモデル 並行処理を効率的に実現する手法のひとつ 1973年にカール・ヒューイット氏が発表した並列処理を行う計算モデル アクターモデル におけるアクターは、オブジェクト指向プログラミング におけるオブジェクトのようなもの(と思っておくと理解しやすい?)
7.
アクターモデル アクターはメールボックス、アドレスを持ち、メッセージを受け取ることができる。 インメモリに状態を持ち、アプリケーションが再起動されてもログから状態を復帰できる。 アクター メールボックス メッセージ アドレス
8.
アクターモデル アクターは別のアクターを生成することができる。 また、そのアクターを監督する アクター メールボックス メッセージ アドレス
9.
アクターモデル 生成した別のアクターに、メッセージを送信することができる。 また、アクターは受け取ったメッセージの種別により振る舞いを変えることができる(状態変化) アクター メールボックス メッセージ アドレス
10.
雑に実装ベースで見る
11.
12.
13.
14.
15.
16.
! = tel 返信を受け取らない ?
= ask 返信を受け取る
17.
18.
19.
20.
21.
アクターの分散処理
22.
分散処理 複数のアクターに送信することで分散処理が行える。 デフォルトではメッセージはメールボックスの到着順に処理される。
23.
分散処理 アクターは設定を変更するだけでリモートに設置することも可能(位置透過性) サーバーA サーバーB
24.
雑に実装ベースで見る(2)
25.
最初の設定
26.
変更後の設定
27.
実装は変わらず(位置透過性・・・!)
28.
Remote用にアプリケーションを作成(+Actor)
29.
Remoteの設定
30.
実行コンソール
31.
Remoteコンソール
32.
Remoteコンソール 呼び出し側がsys.exit()して切断したのでWARNが出ているもよう
33.
耐障害性
34.
let it crash Akkaではlet
it crash(クラッシュするならさせておけ)の思想で設計されている。 障害発生時には障害発生箇所をクラッシュさせておき、スーパーバイザー(監督を行う親アクター) へエスカレートを行う。 アクターではtry~catchのように、正常系処理の中に障害回復処理を含むのではなく、正常フローと 回復フローを分けて実装する。 実際にアクターで障害が発生した場合は親アクターに障害通知を行い、監督を行う親アクターが子ア クターの回復方法を決定する
35.
回復方法の決定 再起動 アクターを再生成して処理を続行する 再開 クラッシュしたアクターを続行させる。クラッシュは無視される 停止 アクターを停止させ、メッセージを送信しない エスカレート このアクターで回復方法が判断できない場合(回復方法の未定義)、さらに上位のアクターへエ スカレートする
36.
雑に実装ベースで見る(3)
37.
38.
OneForOneStrategy AllForOneStrategy 問題の発生したアクターのみ適応 一つのアクターに問題が発生した場合すべてのアクターに適応
39.
40.
Restart Resume 再起動 再開 Stop 停止 Escalate エスカレート
41.
42.
43.
44.
1 2 3
45.
1 2 3
46.
Circuit Breaker 外部サービス障害時に即座にエラーを返す仕組み ● リトライによるネットワーク帯域の無駄遣いが減る ●
レイテンシを低く抑えられる ● 障害の連鎖を抑えられる ● Close, Open, Half-Openの状態をとる 参照) https://www.slideshare.net/negokaz/lagom-reactive-microservices-architecture#66
47.
Open Close 回路が開いた状態 = 通信できない 回路が閉じた状態 = 通信できる
48.
時間切れおわり
49.
今日の内容はこの本を参考にしています。
Download now