Top Banner
まずはじめに
44

Akka/Actor introduction

Jan 07, 2017

Download

Software

Yuki Katada
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Akka/Actor introduction

まずはじめに

Page 2: Akka/Actor introduction

今回は噂のCyberZのオフィス使わせていただけることになりました!!

ありがとうございます!

Page 3: Akka/Actor introduction

Akka/Actor Introduction

Page 4: Akka/Actor introduction

Hello!

片田 雄樹 (Yuki Katada)

Pokemon Go

2015/5 CyberZ配属

2016/5 MDH異動

FB: yuki.katada.1

Page 5: Akka/Actor introduction

Agenda

× Akka/Actorモデルとは?

× Actorモデル

× まとめ

Page 6: Akka/Actor introduction

対象者

- 並列処理なんぞ知ったこっちゃないって人

- Akka使ってるけどしくみを知らない人

- Akkaには興味ないけどインプットほしい人

- 業務に疲れ果ててサボりたい人

Page 7: Akka/Actor introduction

話すこと

- 概要

- メリット

- しくみ

今日話すこと/話さないこと

話さないこと

- コーディング

- むずい用語

- 応用例

Page 8: Akka/Actor introduction

Akka/Actorとは?

Page 9: Akka/Actor introduction

Akka/Actorとは?

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

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

Page 10: Akka/Actor introduction

Akka v.s. Actor

Actor Model||

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

Page 11: Akka/Actor introduction

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

- Spray Toolkit

- Play Framework

- Scalatra

- Apache Spark

Page 12: Akka/Actor introduction

Actorモデル

Page 13: Akka/Actor introduction

Actorの特徴

1. 永続的

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

3. 並列処理

Page 14: Akka/Actor introduction

Actorができること

1. 新しいActorを作る

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

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

Page 15: Akka/Actor introduction

たとえば

アカウント残高: 100円

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

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

Page 16: Akka/Actor introduction

1番シンプルなパターン

Page 17: Akka/Actor introduction

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

Account100円

A

残高ちょうだい

Page 18: Akka/Actor introduction

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

Account100円

A

100円だよ

Page 19: Akka/Actor introduction

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

Account100円

A

30円引き出すね

Page 20: Akka/Actor introduction

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

Account70円

A

Aさん、OKだよ

Page 21: Akka/Actor introduction

2人以上いるパターン

Page 22: Akka/Actor introduction

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

Account100円

A B

残高ちょうだい

Page 23: Akka/Actor introduction

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

Account100円

A B

Aさん100円だよ

残高ちょうだい

Page 24: Akka/Actor introduction

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

Account100円

A B

30円引き出すね

ごめん、今Aさんと取引してる

Dead Lock

Page 25: Akka/Actor introduction
Page 26: Akka/Actor introduction

Actorモデルを使用したパターン

Page 27: Akka/Actor introduction

Actorモデルの場合 (Aさん&Bさん)

Account100円

A B

30円引き出すねMailbox

A -30

Page 28: Akka/Actor introduction

Actorモデルの場合 (Aさん&Bさん)

Account70円

A B

40円引き出すねMailbox

A

B -40

Page 29: Akka/Actor introduction

Actorモデルの場合 (Aさん&Bさん)

Account30円

A B

Aさん、OK

Mailbox

B

Page 30: Akka/Actor introduction

Actorモデルの場合 (平井さん&Bさん)

Account30円

A B

Bさん、OK

Mailbox

Page 31: Akka/Actor introduction

Actorモデルの場合 (平井さん&平井さん)

Account30円

A B

Mailbox

Page 32: Akka/Actor introduction
Page 33: Akka/Actor introduction

Actorモデルにおけるコミュニケーションの性質

1. “Best Effort”でメッセージする

2. 1回のみメッセージする

3. コミュニケーションの時間は保障されない

4. メッセージの順序は保障されない

Page 34: Akka/Actor introduction

Actorモデルで分散処理

http

http

http

request

serviceinbox

inbox

inbox

inbox

inbox

inbox

inbox

inbox

Page 35: Akka/Actor introduction

Actorモデルで分散処理

http

http

http

serviceinbox

inbox

inbox

inbox

inbox

inbox

inbox

inbox

request

Page 36: Akka/Actor introduction

Actorモデルで分散処理

http

http

http

serviceinbox

inbox

inbox

inbox

inbox

inbox

inbox

inbox

Page 37: Akka/Actor introduction

Actorモデルで分散処理

http

http

http

serviceinbox

inbox

inbox

inbox

inbox

inbox

inbox

serviceinbox

Page 38: Akka/Actor introduction

Actorモデルで分散処理

http

http

http

serviceinbox

inbox

inbox

inbox

inbox

inbox

inbox

serviceinbox

Page 39: Akka/Actor introduction

Actorモデルで分散処理

http

http

http

serviceinbox

inbox

inbox

inbox

inbox

inbox

inbox

serviceinbox

Page 40: Akka/Actor introduction

Actorモデルで分散処理

http

http

http

serviceinbox

inbox

inbox

inbox

inbox

inbox

inbox

inbox

response

Page 41: Akka/Actor introduction

まとめ

- AkkaはActorモデルを使ったJava/Scalaツールキット

- Actor間はメッセージでのみやりとりする

- Actorモデルだと性質上Lockがかからない

- 複雑な分散処理などでも比較的楽に実装できる

Page 42: Akka/Actor introduction

話さなかったこと

- アドレスについて

- コーディング

- Fault Tolerance

- ask/tell/pipeline/forward

- ユースケース

Page 43: Akka/Actor introduction

本の紹介

Learning Akka

- 著者: Jason Goodwin

- Amazon(U.S): $44.99

- 理論からコーディングまで幅広くカバーし

てくれる

- 図も入れて説明してくれるのでわかりや

すい

- 日本語版はないみたい…

Page 44: Akka/Actor introduction

Thanks!

Any questions?

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