Mais conteúdo relacionado Semelhante a Nodejs - A performance que eu sempre quis ter (20) Mais de Emerson Macedo (17) Nodejs - A performance que eu sempre quis ter1. A performance que eu sempre quis ter
Emerson Macedo
@emerleite
http://codificando.com
http://visaoagil.wordpress.com/author/emerleite/
27. PHP 1995
Java EE 1998
28. PHP 1995
Java EE 1998
ASP.Net 2002
29. PHP 1995
Java EE 1998
ASP.Net 2002
Ruby on Rails 2005
30. PHP 1995
Java EE 1998
ASP.Net 2002
Ruby on Rails 2005
Django 2005
32. Usuários de Internet no Mundo (em milhões)
2.000 milhões
2000
1500
1000
500 360 milhões
0
2000 2010
44. Escalando DB na horizontal
Shard Shard Shard Shard Shard Shard
Database Database Database Database Database Database
64. ~ 70% dos adultos
serão usuários
regulares de
redes sociais
72. Qual é o problema
das tecnologias atuais ?
75. Nosso código costuma
ser escrito assim
O que o software está fazendo
enquanto a querie executa ?
82. Rails ou Django
RUNTIME
BLOCK
PROCESS
RUNTIME
BLOCK
PROCESS
HTTPD Database
RUNTIME
BLOCK
PROCESS
RUNTIME
PROCESS BLOCK
85. Java
Servlet Container
HTTPD Servlet Database
86. Java
Servlet Container
HTTPD Servlet Database
87. Java
Servlet Container
HTTPD Servlet Database
88. Java
Servlet Container
Thread
HTTPD Servlet Database
89. Java
Servlet Container
Thread BLOCK
HTTPD Servlet Database
90. Java
Servlet Container
Thread BLOCK
Thread BLOCK
Thread BLOCK
HTTPD Servlet Database
Thread BLOCK
Thread BLOCK
Thread BLOCK
Thread BLOCK
99. concurrency × reqs/sec
Apache vs NGINX
concurrency × reqs/sec
http://blog.webfaction.com/a-little-holiday-present
http://blog.webfaction.com/a-little-holiday-present
100. concurrency × reqs/sec
Apache vs NGINX
concurrency × memory
http://blog.webfaction.com/a-little-holiday-present
http://blog.webfaction.com/a-little-holiday-present
123. Latência de I/O
L1 3 ciclos
L2 14 ciclos
RAM 250 ciclos
Disco 41.000.000 ciclos
124. Latência de I/O
L1 3 ciclos
L2 14 ciclos
RAM 250 ciclos
Disco 41.000.000 ciclos
Rede 240.000.000 ciclos
125. Latência de I/O
L1 3 ciclos
L2 14 ciclos
RAM 250 ciclos
Disco 41.000.000 ciclos
Rede 240.000.000 ciclos
129. I/O não bloqueante
L1 3 ciclos
L2 14 ciclos
RAM 250 ciclos
I/O bloqueante
Disco 41.000.000 ciclos
Rede 240.000.000 ciclos
131. Servidor TCP simples
em NodeJS
O código acima faz com que a execução
retorne imediatamente ao event loop
135. POSIX Assync I/O não
suportado por todos
os S.Os
libmysql_client não
permite query async
142. Pilha de execução
http_parse(1)
socket_readdable(1)
ev_loop()
I/O em disco (bloqueante)
143. Pilha de execução
load(“index.html”)
http_parse(1)
socket_readdable(1)
ev_loop()
I/O em disco (bloqueante)
144. Pilha de execução
http_parse(1)
socket_readdable(1)
ev_loop()
I/O em disco (bloqueante)
149. Pilha de execução
http_parse(2)
socket_readdable(2)
ev_loop()
I/O em RAM (não bloqueante)
150. Pilha de execução
http_respond(2)
http_parse(2)
socket_readdable(2)
ev_loop()
I/O em RAM (não bloqueante)
151. Pilha de execução
http_parse(2)
socket_readdable(2)
ev_loop()
I/O em RAM (não bloqueante)
156. Pilha de execução
http_respond(1)
file_loaded()
ev_loop()
Arquivo carregou do disco
161. Arquitetura Web
Nginx
Ruby Ruby Ruby Ruby Ruby
or or or or or
Python Python Python Python Python
162. Arquitetura Web
Nginx
Ruby Ruby Ruby Ruby Ruby
or or or or or NodeJS
Python Python Python Python Python
166. Arquitetura Web
NodeJS
Quando NodeJS estiver bem maduro, a
idéia de Ryan é que ele seja a porta de
entrada. Será ?
231. Status atual
Versão 0.1.103
Javascript ~ 6000 linhas
C++ ~ 11000 linhas
Mailin list ~ 1200 pessoas
232. Status atual
Versão 0.1.103
Javascript ~ 6000 linhas
C++ ~ 11000 linhas
Mailin list ~ 1200 pessoas
Contribuidores ~ 70 pessoas
234. I/O não deve ser feito
da forma que fazemos
hoje em dia
240. Obrigado !!!
Emerson Macedo
@emerleite
http://codificando.com