Download - Evented programming
![Page 1: Evented programming](https://reader034.vdocuments.us/reader034/viewer/2022042623/549c643cac7959ab2a8b46f4/html5/thumbnails/1.jpg)
© Copyright 2010 Hewlett-Packard Development Company, L.P. 1
I SEE MULTI THREADED CODE!
And there are alternatives!!
![Page 2: Evented programming](https://reader034.vdocuments.us/reader034/viewer/2022042623/549c643cac7959ab2a8b46f4/html5/thumbnails/2.jpg)
© Copyright 2010 Hewlett-Packard Development Company, L.P. 2 © Copyright 2010 Hewlett-Packard Development Company, L.P.
Alguem consegue lembrar de algum?
PROBLEMAS COM MULTI THREADING
![Page 3: Evented programming](https://reader034.vdocuments.us/reader034/viewer/2022042623/549c643cac7959ab2a8b46f4/html5/thumbnails/3.jpg)
© Copyright 2010 Hewlett-Packard Development Company, L.P. 3 © Copyright 2010 Hewlett-Packard Development Company, L.P. 3
ESTRATÉGIA PARA ATENDER MUITOS CLIENTES – Uma thread por cliente
– Cada thread precisa de memória própria
– Compartilhar dados entre threads é perigoso e complicado
– É muito dificil depurar e resolver problemas em código multi threading
![Page 4: Evented programming](https://reader034.vdocuments.us/reader034/viewer/2022042623/549c643cac7959ab2a8b46f4/html5/thumbnails/4.jpg)
© Copyright 2010 Hewlett-Packard Development Company, L.P. 4 © Copyright 2010 Hewlett-Packard Development Company, L.P.
MAS MESMO ASSIM ESTA FOI A ÚNICA SOLUÇÃO POR
MUITO TEMPO
![Page 5: Evented programming](https://reader034.vdocuments.us/reader034/viewer/2022042623/549c643cac7959ab2a8b46f4/html5/thumbnails/5.jpg)
© Copyright 2010 Hewlett-Packard Development Company, L.P. 5 © Copyright 2010 Hewlett-Packard Development Company, L.P. 5
C10K PROBLEM
– http://www.kegel.com/c10k.html
– It’s time for web servers to handle 10k clients simultaneously, don’t you think?
– Começaram e pensar nas possíveis soluções para estes problemas em 1999
![Page 6: Evented programming](https://reader034.vdocuments.us/reader034/viewer/2022042623/549c643cac7959ab2a8b46f4/html5/thumbnails/6.jpg)
© Copyright 2010 Hewlett-Packard Development Company, L.P. 6 © Copyright 2010 Hewlett-Packard Development Company, L.P. 6
EPOOL E SELECT
Podem ser a solução!!
![Page 7: Evented programming](https://reader034.vdocuments.us/reader034/viewer/2022042623/549c643cac7959ab2a8b46f4/html5/thumbnails/7.jpg)
© Copyright 2010 Hewlett-Packard Development Company, L.P. 7 © Copyright 2010 Hewlett-Packard Development Company, L.P.
NA VERDADE EVENTED PROGRAMMING!
![Page 8: Evented programming](https://reader034.vdocuments.us/reader034/viewer/2022042623/549c643cac7959ab2a8b46f4/html5/thumbnails/8.jpg)
© Copyright 2010 Hewlett-Packard Development Company, L.P. 8
epoll (linux 2.6+)
select()
poll
kqueue (FreeBSD, NetBSD)
![Page 9: Evented programming](https://reader034.vdocuments.us/reader034/viewer/2022042623/549c643cac7959ab2a8b46f4/html5/thumbnails/9.jpg)
© Copyright 2010 Hewlett-Packard Development Company, L.P. 9 © Copyright 2010 Hewlett-Packard Development Company, L.P. 9
PALAVRAS CHAVE
– Non blocking IO • epoll • poll
• select • kqueue
– Notification • Readiness change • Level triggered change notification
![Page 10: Evented programming](https://reader034.vdocuments.us/reader034/viewer/2022042623/549c643cac7959ab2a8b46f4/html5/thumbnails/10.jpg)
© Copyright 2010 Hewlett-Packard Development Company, L.P. 10 © Copyright 2010 Hewlett-Packard Development Company, L.P. 10
COMO EU USO ISTO?
Ta bonito mas e ai?
![Page 11: Evented programming](https://reader034.vdocuments.us/reader034/viewer/2022042623/549c643cac7959ab2a8b46f4/html5/thumbnails/11.jpg)
© Copyright 2010 Hewlett-Packard Development Company, L.P. 11 © Copyright 2010 Hewlett-Packard Development Company, L.P.
EM RUBY PODE-SE USAR EVENT MACHINE
![Page 12: Evented programming](https://reader034.vdocuments.us/reader034/viewer/2022042623/549c643cac7959ab2a8b46f4/html5/thumbnails/12.jpg)
© Copyright 2010 Hewlett-Packard Development Company, L.P. 12 © Copyright 2010 Hewlett-Packard Development Company, L.P. 12
CÓDIGO EXEMPLO
socket.onclose do
@channel.unsubscribe(sid)
users.delete(user_name)
@channel.push({:message => "just leaved", :user => user_name}.to_json)
@channel.push({:users => users}.to_json)
end
![Page 13: Evented programming](https://reader034.vdocuments.us/reader034/viewer/2022042623/549c643cac7959ab2a8b46f4/html5/thumbnails/13.jpg)
© Copyright 2010 Hewlett-Packard Development Company, L.P. 13 © Copyright 2010 Hewlett-Packard Development Company, L.P.
EM JAVASCRIPT PODE-SE USAR NODE.JS
![Page 14: Evented programming](https://reader034.vdocuments.us/reader034/viewer/2022042623/549c643cac7959ab2a8b46f4/html5/thumbnails/14.jpg)
© Copyright 2010 Hewlett-Packard Development Company, L.P. 14 © Copyright 2010 Hewlett-Packard Development Company, L.P. 14
CÓDIGO EXEMPLO self.httpServer = http.createServer(function (request, response) { request.addListener('end', function () { self.fileServer.serve(request, response, function (err, result) { if (err) { sys.error("Error serving " + request.url + " - " + err.message); response.writeHead(err.status, err.headers); response.end(); } }); }); });
![Page 15: Evented programming](https://reader034.vdocuments.us/reader034/viewer/2022042623/549c643cac7959ab2a8b46f4/html5/thumbnails/15.jpg)
© Copyright 2010 Hewlett-Packard Development Company, L.P. 15 © Copyright 2010 Hewlett-Packard Development Company, L.P.
EM PYTHON PODE-SE USAR TWISTED
![Page 16: Evented programming](https://reader034.vdocuments.us/reader034/viewer/2022042623/549c643cac7959ab2a8b46f4/html5/thumbnails/16.jpg)
© Copyright 2010 Hewlett-Packard Development Company, L.P. 16 © Copyright 2010 Hewlett-Packard Development Company, L.P. 16
CÓDIGO EXEMPLO
getPage(sys.argv[1]).addCallbacks(
callback=lambda value:(println(value),reactor.stop()),
errback=lambda error:(println("an error occurred", error),reactor.stop()))
reactor.run()
![Page 17: Evented programming](https://reader034.vdocuments.us/reader034/viewer/2022042623/549c643cac7959ab2a8b46f4/html5/thumbnails/17.jpg)
© Copyright 2010 Hewlett-Packard Development Company, L.P. 17 © Copyright 2010 Hewlett-Packard Development Company, L.P. 17
VOU USAR NA MINHA APLICAÇÃO HOJE!
Acho que não!
![Page 18: Evented programming](https://reader034.vdocuments.us/reader034/viewer/2022042623/549c643cac7959ab2a8b46f4/html5/thumbnails/18.jpg)
© Copyright 2010 Hewlett-Packard Development Company, L.P. 18
![Page 19: Evented programming](https://reader034.vdocuments.us/reader034/viewer/2022042623/549c643cac7959ab2a8b46f4/html5/thumbnails/19.jpg)
© Copyright 2010 Hewlett-Packard Development Company, L.P. 19 © Copyright 2010 Hewlett-Packard Development Company, L.P.
NÃO ADIANTA QUERER USAR EM UM PEDAÇO DA
APLICAÇÃO
![Page 20: Evented programming](https://reader034.vdocuments.us/reader034/viewer/2022042623/549c643cac7959ab2a8b46f4/html5/thumbnails/20.jpg)
© Copyright 2010 Hewlett-Packard Development Company, L.P. 20 © Copyright 2010 Hewlett-Packard Development Company, L.P.
EXIGE UMA MUDANÇA GRANDE NA FORMA DE
PENSAR
![Page 21: Evented programming](https://reader034.vdocuments.us/reader034/viewer/2022042623/549c643cac7959ab2a8b46f4/html5/thumbnails/21.jpg)
© Copyright 2010 Hewlett-Packard Development Company, L.P. 21 © Copyright 2010 Hewlett-Packard Development Company, L.P.
PODE SER A MELHOR SOLUÇÃO PARA UM SERVIÇO
DA SUA APLICAÇÃO
![Page 22: Evented programming](https://reader034.vdocuments.us/reader034/viewer/2022042623/549c643cac7959ab2a8b46f4/html5/thumbnails/22.jpg)
© Copyright 2010 Hewlett-Packard Development Company, L.P. 22 © Copyright 2010 Hewlett-Packard Development Company, L.P.
A PERFORMANCE NORMALMENTE É MUITO
SUPERIOR
![Page 23: Evented programming](https://reader034.vdocuments.us/reader034/viewer/2022042623/549c643cac7959ab2a8b46f4/html5/thumbnails/23.jpg)
© Copyright 2010 Hewlett-Packard Development Company, L.P. 23 © Copyright 2010 Hewlett-Packard Development Company, L.P.
E O USO DE MEMÓRIA MUITO MAIS BAIXO
![Page 24: Evented programming](https://reader034.vdocuments.us/reader034/viewer/2022042623/549c643cac7959ab2a8b46f4/html5/thumbnails/24.jpg)
© Copyright 2010 Hewlett-Packard Development Company, L.P. 24 © Copyright 2010 Hewlett-Packard Development Company, L.P.
QUE NA ABORDAGEM TRADICIONAL
![Page 25: Evented programming](https://reader034.vdocuments.us/reader034/viewer/2022042623/549c643cac7959ab2a8b46f4/html5/thumbnails/25.jpg)
© Copyright 2010 Hewlett-Packard Development Company, L.P. 25 © Copyright 2010 Hewlett-Packard Development Company, L.P.
POR HOJE É ISTO, MAS TENHO EXEMPLOS EM
RUBY E NODE
![Page 26: Evented programming](https://reader034.vdocuments.us/reader034/viewer/2022042623/549c643cac7959ab2a8b46f4/html5/thumbnails/26.jpg)
© Copyright 2010 Hewlett-Packard Development Company, L.P. 26 © Copyright 2010 Hewlett-Packard Development Company, L.P.
VAMOS CONVERSAR DEPOIS DA #DESCONF?
![Page 27: Evented programming](https://reader034.vdocuments.us/reader034/viewer/2022042623/549c643cac7959ab2a8b46f4/html5/thumbnails/27.jpg)
© Copyright 2010 Hewlett-Packard Development Company, L.P. 27 © Copyright 2010 Hewlett-Packard Development Company, L.P. 27
Q&A?