Mostrando postagens com marcador scalable networking. Mostrar todas as postagens
Mostrando postagens com marcador scalable networking. Mostrar todas as postagens

22 de jul. de 2011

Primeiro contato com Node.j e mais sobre non-blocking servers



Dae gurizada..

Na sequência do meus estudos sobre non-blocking web servers vou dar uma olhada no Node.js.


Vou utilizar como base esta apresentação do Ryan Dahl, que está disponível no site do node.js

Antes de olhar sobre Node.js é importante entender o C10K Problem e Non-blocking I/O

Node.js
Node.js nada mais é que uma biblioteca que roda em cima do virutal machine chamada v8. V8 é uma JavaScript Engine escrita pelos  engenheiros da Google e é utilizada no Google Chrome.

Node utiliza o v8 para fazer o trabalho de comunicação (networking) corretamente. 

Não existe "waiting time"
Óbvio, é isso que faze dele um non-blocking server: Não ter "waiting time".

Você não consegue mandar o node dormir (sleep). Não é que você seja encorajado a não fazer um "sleep", na verdade você não tem poder para isso. 

O que o Node faz é definir Timeouts e deixar processos em idle (ocioso), fazendo com que o consumo de CPU vá para zero.

De uma olhada nesse código:

19 de jul. de 2011

C10K Problem. O quê Deft, Node.js, Netty e outros estão solucionando

Dae gurizada,

A idéia de olhar para esse problema surgiu depois que o Diego Pacheco me deu a missão de falar sobre Deft e Loft em um lighting talk que fizemos há algumas semanas atrás.

O grande impecílio que tive para entender o conceito dos servidores Deft e Loft foi de entender o problema. Eis a motivação do post.

O que vou tentar explicar são as limitações existetes que fazem com alguns servidores não consigam processar mais que 10mil requisições simultâneas. E (se tudo der certo) você vai entender porque servidors como Deft, Loft, Tornado, Netty, Node.js e outros tem um desempenho diferente que os sservidores normais. 

C10k Problem

C10k significa 10.000 (dez mil) conexões simultâneas. Este é a limitação de conexões silmutaneas da maioria dos servidores de aplicação.

Isso acontece devido a forma que os servidores trabalham com cada conexão recebida.

Muitas destes problemas são ocasionaos pela forma que o servidor foi impelmentado e de como o Sistema Operaciona (OS) trabalha com sockets.

Eu vou descrever algumas destas limitações abaixo.