Slide 1

Slide 1 text

Erlang u praksi [email protected]

Slide 2

Slide 2 text

Korisnici

Slide 3

Slide 3 text

Platforma ● jezik ● framework (OTP) ● runtime

Slide 4

Slide 4 text

Konkurentnost spawn(...)

Slide 5

Slide 5 text

Konkurentnost scheduler spawn(...)

Slide 6

Slide 6 text

Konkurentnost scheduler CPU scheduler CPU scheduler CPU scheduler CPU spawn(...)

Slide 7

Slide 7 text

Komunikacija P1 poruka P2 P2 = spawn(...), P2 ! Poruka receive Poruka1 -> ... Poruka2 -> ... ... end

Slide 8

Slide 8 text

Komunikacija P1 poruka odgovor P2 P2 ! {self(), ...}, receive ... receive {Sender, ...} -> ... Sender ! Response end

Slide 9

Slide 9 text

Stanje A = 5, A = A + 1

Slide 10

Slide 10 text

Stanje S f(Stanje) -> Poruka = receive ... end, NovoStanje = f2(Poruka, Stanje), f(NovoStanje).

Slide 11

Slide 11 text

Stanje {set, ...} {get, ...} P S f(Stanje) -> Poruka = receive ... end, NovoStanje = f2(Poruka, Stanje), f(NovoStanje).

Slide 12

Slide 12 text

Actor model actor actor actor actor actor actor

Slide 13

Slide 13 text

Supervisor S W

Slide 14

Slide 14 text

Supervisor W S S S W W W S W W W W

Slide 15

Slide 15 text

Http server http_server request_1 request_n request response response

Slide 16

Slide 16 text

Http server http_server stanje request_1 request_n request response response

Slide 17

Slide 17 text

Push server korisnik_1 korisnik_2 korisnik_n kanal_2 kanal_1 podaci podaci

Slide 18

Slide 18 text

Push server <= 3000 paralelnih korisnika ≈ 30 kanala > 2000 requesta u sekundi

Slide 19

Slide 19 text

Erlang ● actor model ● supervisor ● distribuiranost ● mnesia ● hot code swapping ● interoperabilnost ● alati

Slide 20

Slide 20 text

Primjena ● server ● skalabilnost ● dinamički requesti

Slide 21

Slide 21 text

Linkovi ● Why Erlang? ● Programming Erlang ● Learn You Some Erlang for Great Good! ● Erlang and OTP in Action ● A History of Erlang ● erlang.org ● Erlang Programming Group