Escolar Documentos
Profissional Documentos
Cultura Documentos
assíncronas em Node.js
2504108449 - Gabriel Ferreira de Miranda Programação Concorrente
2505063910 - Glaydston Oliveira Veloso 7º Período - Noite
1105274863 - Isabela Pflueger Profeta Faculdade Anhanguera de Belo Horizonte
1191398393 - Marcio Francoes Borges
2505001269 - Rízia Vieira dos Santos
Resumo
● Arquiteturas Bloqueantes;
● Node.js
● Por que o assíncrono?
● Comparações
● Exemplo
● Referencias
● Questões
Arquiteturas Bloqueantes
Sistemas desenvolvidos em Java, .NET, Python, Ruby ou PHP possuem a
característica de paralisar um processamento enquanto utilizam um I/O.
Um sistema bloqueante enfileira cada requisição e depois as processa, uma a
uma, não permitindo múltiplos processamentos delas. Enquanto uma requisição é
processada as demais ficam em espera, mantendo por um período de tempo uma fila
de requisições ociosas.
Exemplo: enviar e-mail, consultar o banco de dados, leitura em disco e entre
outras tarefas.
Node.js
Node.js é uma plataforma construída em tempo de execução de JavaScript para a construção
de aplicações facilmente escaláveis e rápidas.
Node.js usa uma arquitetura “non-blocking thread” (não bloqueante).
É uma plataforma de baixo nível pois a programação ocorre diretamente com diversos
protocolos de redes, internet ou bibliotecas que acessam recursos do sistema operacional.
As aplicações serão do tipo “single-thread” cada aplicação terá instância de um único
processo, sendo assim, não será possível usar programação em “multi-thread”, mas para
concorrência é possível utilizar um módulo nativo chamado de “clusters”.
Node.js
Vantagens:
● Boa performance com consumo de memória;
● Utiliza de forma eficiente o processador;
● Resultados rápidos nos processos;
● Ausência de “dead-locks”;
Threads x Assincronismo
Threads são manipuláveis pelo desenvolvedor, ou seja, você pode pausar a execução de uma
Thread ou fazê-la esperar o término de uma outra.
Chamadas assíncronas apenas invocam suas funções numa ordem de que você não tem
controle, e você só sabe quando uma chamada terminou quando seu callback é executado.
Pode parecer vantajoso ter o controle sobre as Threads a favor de um sistema que executa
tarefas em paralelo, mas pouco domínio sobre eles pode transformar seu sistema em um caos de
travamentos dead-locks, afinal Threads são executadas de forma bloqueante.
Este é o grande diferencial das chamadas assíncronas, elas executam em paralelo suas funções
sem travar processamento das outras e principalmente sem bloquear o sistema principal.
Comparações
Síncrono - Programação Comum Assíncrono - Node.js
Escrita Assíncrona - Node.js
var fs = require('fs');
var inicio = new Date().getTime();
Construindo Aplicações Node com MongoDB e Backbone - Mike Wilson - Editora Novatec - 2012.
BIJOOR, Ashutosh. Java EE threads v/s Node.js – which is better for concurrent data processing
operations. Disponível em:<http://bijoor.me/2013/06/09/java-ee-threads-vs-node-js-which-is-
better-for-concurrent-data-processing-operations/>. Acesso em: 01 abr. 2014.