44
まずはじめに

Akka/Actor introduction

Embed Size (px)

Citation preview

まずはじめに

今回は噂の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とは?

Akka/Actorとは?

Actor Model - 並列処理コンピューティングに優れたモデル

Akka - ScalaとJavaで使える分散処理ライブラリ/ツールキット

Akka v.s. Actor

Actor Model||

Akkaで採用されている分散処理モデル

Akkaを使用しているScalaライブラリ

- Spray Toolkit

- Play Framework

- Scalatra

- Apache Spark

Actorモデル

Actorの特徴

1. 永続的

2. 内部的な状態をカプセル化する

3. 並列処理

Actorができること

1. 新しいActorを作る

2. メッセージを受け取って返す (送る)

3. メッセージ1つに対して処理を行う

たとえば

アカウント残高: 100円

- Aさん: 30円引き出したい

- Bさん: 40円引き出したい

1番シンプルなパターン

シングルスレッドの場合 (Aさんのみ)

Account100円

A

残高ちょうだい

シングルスレッドの場合 (Aさんのみ)

Account100円

A

100円だよ

シングルスレッドの場合 (Aさんのみ)

Account100円

A

30円引き出すね

シングルスレッドの場合 (Aさんのみ)

Account70円

A

Aさん、OKだよ

2人以上いるパターン

シングルスレッドの場合 (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?

ご清聴ありがとうございました!