Submit Search
Upload
Akkaとは。アクターモデル とは。
•
4 likes
•
8,367 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
並行処理初心者のためのAkka入門
並行処理初心者のためのAkka入門
Yoshimura Soichiro
Redisの特徴と活用方法について
Redisの特徴と活用方法について
Yuji Otani
例外設計における大罪
例外設計における大罪
Takuto Wada
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
Yoshitaka Kawashima
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
Etsuji Nakai
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
Shin Ohno
ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方
Yoshiyasu SAEKI
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
mosa siru
Recommended
並行処理初心者のためのAkka入門
並行処理初心者のためのAkka入門
Yoshimura Soichiro
Redisの特徴と活用方法について
Redisの特徴と活用方法について
Yuji Otani
例外設計における大罪
例外設計における大罪
Takuto Wada
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
Yoshitaka Kawashima
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
Etsuji Nakai
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
Shin Ohno
ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方
Yoshiyasu SAEKI
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
mosa siru
MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話
Yoshinori Matsunobu
Akkaで分散システム入門
Akkaで分散システム入門
Shingo Omura
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
NTT Communications Technology Development
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!
kwatch
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
Atsushi Nakamura
WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介
Yasuhiro Mawarimichi
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
Hiroshi Tokumaru
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
Kumazaki Hiroki
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
Koichiro Matsuoka
SQL大量発行処理をいかにして高速化するか
SQL大量発行処理をいかにして高速化するか
Shogo Wakayama
Docker Compose 徹底解説
Docker Compose 徹底解説
Masahito Zembutsu
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
Akihiro Suda
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
NTT DATA Technology & Innovation
テストコードの DRY と DAMP
テストコードの DRY と DAMP
Yusuke Kagata
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Kohei Tokunaga
雑なMySQLパフォーマンスチューニング
雑なMySQLパフォーマンスチューニング
yoku0825
ドメイン駆動設計に15年取り組んでわかったこと
ドメイン駆動設計に15年取り組んでわかったこと
増田 亨
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Takuto Wada
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
NTT DATA OSS Professional Services
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
MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話
Yoshinori Matsunobu
Akkaで分散システム入門
Akkaで分散システム入門
Shingo Omura
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
NTT Communications Technology Development
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!
kwatch
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
Atsushi Nakamura
WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介
Yasuhiro Mawarimichi
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
Hiroshi Tokumaru
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
Kumazaki Hiroki
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
Koichiro Matsuoka
SQL大量発行処理をいかにして高速化するか
SQL大量発行処理をいかにして高速化するか
Shogo Wakayama
Docker Compose 徹底解説
Docker Compose 徹底解説
Masahito Zembutsu
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
Akihiro Suda
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
NTT DATA Technology & Innovation
テストコードの DRY と DAMP
テストコードの DRY と DAMP
Yusuke Kagata
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Kohei Tokunaga
雑なMySQLパフォーマンスチューニング
雑なMySQLパフォーマンスチューニング
yoku0825
ドメイン駆動設計に15年取り組んでわかったこと
ドメイン駆動設計に15年取り組んでわかったこと
増田 亨
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Takuto Wada
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
NTT DATA OSS Professional Services
What's hot
(20)
MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話
Akkaで分散システム入門
Akkaで分散システム入門
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
SQL大量発行処理をいかにして高速化するか
SQL大量発行処理をいかにして高速化するか
Docker Compose 徹底解説
Docker Compose 徹底解説
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
テストコードの DRY と DAMP
テストコードの DRY と DAMP
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
雑なMySQLパフォーマンスチューニング
雑なMySQLパフォーマンスチューニング
ドメイン駆動設計に15年取り組んでわかったこと
ドメイン駆動設計に15年取り組んでわかったこと
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
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