Slide 1

Slide 1 text

No content

Slide 2

Slide 2 text

Thinking in Actors @sasajuric

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

CPU CPU CPU CPU CPU CPU CPU CPU

Slide 6

Slide 6 text

bank account balance http request socket database connection

Slide 7

Slide 7 text

“deposit”, 300 “store”, account_id, ... http request bank account database ok ok

Slide 8

Slide 8 text

bank account balance “deposit”, 300 “withdraw”, 200 “balance”

Slide 9

Slide 9 text

defmodule BankAccount do use ExActor.GenServer definit do initial_state(0) end defcast deposit(amount), state: balance do new_state(balance + amount) end defcast deposit(amount), state: balance do if amount <= balance do new_state(balance – amount) else new_state(balance) end end defcall balance, state: balance do reply(balance) end end

Slide 10

Slide 10 text

account = find_account(id) BankAccount.withdraw(account,200) account = find_account(id) BankAccount.deposit(account,300) account = find_account(id) balance = BankAccount.balance(account) client 1 client 2 client 3 account = BankAccount.start

Slide 11

Slide 11 text

http http bg job http clients accounts database

Slide 12

Slide 12 text

> 30 active events > 5,000 simultaneous players > 2,000 requests/sec

Slide 13

Slide 13 text

1.accept TCP packets 2.assemble XML messages 3.update the model 4.store to database 5.serialize the model 6.dispatch

Slide 14

Slide 14 text

tcp listener xml assembler model builder serializer persister dispatcher

Slide 15

Slide 15 text

tcp listener xml assembler model builder serializer persister dispatcher message 6 message 5 message 4 message 3 message 2 message 1

Slide 16

Slide 16 text

tcp listener xml assembler model builder serializer persister dispatcher

Slide 17

Slide 17 text

persister tcp listener xml assembler model builder serializer dispatcher

Slide 18

Slide 18 text

... ... ... ...

Slide 19

Slide 19 text

i model builder serializer dispatcher match 1 match 2 match 3 match 4 match 5

Slide 20

Slide 20 text

i

Slide 21

Slide 21 text

i match 1 match 2 match 3 match 4 match 5

Slide 22

Slide 22 text

player match http request subscription notification query new messages

Slide 23

Slide 23 text

http://www.manning.com/juric/ wcp14twcf