highly_available do
# the code here magically works
end
#doesntworklikethat
Slide 8
Slide 8 text
fault-tolerance
scalability
+ responsiveness
= high availability
Slide 9
Slide 9 text
A
B
D
E
F
C
Slide 10
Slide 10 text
send(pid, message)
A
B
message = receive ...
Slide 11
Slide 11 text
def loop(state) do
receive do
message ->
new_state = handle(state, message)
loop(new_state)
end
end
Slide 12
Slide 12 text
bank account
balance
{:deposit, amount}
{:withdraw, amount}
:balance
amount
Slide 13
Slide 13 text
OS process or thread
Erlang process
Slide 14
Slide 14 text
db connection
background job
request handler
state
request handler
request handler
request handler
request handler
request handler state
state
state
background job
background job
background job
db connection db connection
db connection
Slide 15
Slide 15 text
A
B
C
D
E
F
Slide 16
Slide 16 text
A
exit message
B
C
D
E
F
Slide 17
Slide 17 text
supervisor
worker worker
Slide 18
Slide 18 text
S
S S
W
W
S
W
W
W S
W
W
Slide 19
Slide 19 text
scheduler scheduler scheduler scheduler
CPU CPU CPU CPU
VM
Slide 20
Slide 20 text
VM
VM
VM
VM
VM
Slide 21
Slide 21 text
VM
send(pid, message)
VM 1
send(pid, message)
VM 2
Slide 22
Slide 22 text
shared-nothing concurrency
process crash propagation
+ some VM magic
= fault tolerance
scalability
responsiveness
Slide 23
Slide 23 text
No content
Slide 24
Slide 24 text
3rd party data
source
transform data
push server
browsers
bets validation
Slide 25
Slide 25 text
Data transformation
1.Receive TCP stream"
2.Assemble XML messages"
3.Update the model"
4.Store to database"
5.Serialize the model"
6.Dispatch
Slide 26
Slide 26 text
receive stream
assemble messages
update model
store to database
serialize data
dispatch
Slide 27
Slide 27 text
receive stream
assemble messages
update model
store to database
serialize data
dispatch
message 6
message 5
message 4
message 3
message 2
message 1
Slide 28
Slide 28 text
receive stream
assemble messages
update model
store to database
serialize data
dispatch
Slide 29
Slide 29 text
storing to database
queuing bet odds
storing bet odds
Slide 30
Slide 30 text
match 1 match 3
match 2
Slide 31
Slide 31 text
update model
serialize data
dispatch
match 1 match 3
match 2