Al leer un libro sobre aplicaciones web de una sola página , llegué a un párrafo que me hizo pensar:
Node.js no es bloqueante y está controlado por eventos. En pocas palabras, esto significa que una sola instancia de Node.js en hardware modesto puede manejar decenas o cientos de miles de conexiones abiertas concurrentes , como las que se usan en la mensajería en tiempo real, que a menudo es una característica muy deseada de los SPA modernos.
Noté el caso de usar Raspberry Pi como un servidor Rails , entonces, ¿qué tal para Node.js?
¿Cómo configuro mi Raspberry Pi para servir una aplicación Node.js?
¿Alguien lo intentó, hay consejos y trucos, quizás problemas o limitaciones a considerar?
Editar: para evitar malentendidos o fuera de tema, mantengamos el foco en Raspberry Pi, en el contexto de Node.js:
- ¿Qué tan adecuado es el Raspberry Pi para servir aplicaciones Node?
- Si ese es el caso, ¿cómo se puede ajustar la Raspberry Pi para obtener mejores resultados?
fuente
Respuestas:
Conseguir Node.js en una Raspberry Pi
Tu también puedes:
Actuación
Hice una prueba de rendimiento rápida (para dar una primera impresión aproximada):
Mi Raspberry Pi está overclockeado (Turbo) con la memoria predeterminada_split (64)
Las pruebas se realizaron en mi red local (802.11g Wifi).
Usé el ejemplo estándar "Hello World" del sitio web Node.js:
Configuración de Apache Bench:
ab -r -n 10000 -c 100 http://192.168.0.116:1337/
Por lo tanto, estas pruebas no son representativas de una aplicación web normal (tanto en lo que respecta a la conexión de red como a la longitud / complejidad del contenido transferido).
Resultados
Para comparar, también instalé nginx en mi Raspberry Pi y ejecuté la misma prueba con el predeterminado "¡Bienvenido a nginx!" Archivo HTML:
Optimizar la configuración de Raspberry Pi
Use
raspi-config
para cambiar las siguientes configuraciones:fuente
Servidores web
Node.JS
puede usarse como reemplazo del servidor web en el Pi y puede crear aplicaciones web independientes o de una sola página con facilidad.Pero solo para su información, en la mayoría de las aplicaciones del mundo real se recomienda utilizar servidores como el moderno
nginx
, ligerolighttpd
o grueso pero con todas las funcionesapache2
. Y luego script node.js para complementar el sitio.Obviamente, las posibilidades son infinitas y todo depende de lo que le gustaría lograr.
Raspberry Pi?
La Raspberry Pi puede ejecutar cualquiera de esos servidores web. También puede ejecutar Node sin complicaciones serias y es realmente rápido sin ningún ajuste complicado.
La Raspberry Pi es muy capaz, pero lo mejor sería convertir la división de memoria en la menor cantidad de gráficos y la mayor cantidad de RAM. Olvídate de usar un IDE y simplemente haz todo a través de SSH. Si realmente necesita más jugo, coloque un disipador de calor en el chip BCM y hágalo overclockear cuando se sienta seguro. Otra opción sería usar múltiples Pi como un clúster para ayudar con el equilibrio de carga. Puede comenzar a cavar por aquí acerca de la agrupación.
¿Pero realmente necesitas usar node.js?
Node.JS
estaba destinado a usarse cuando comienza (o anticipa) para obtener cientos y miles de solicitudes que requieren que se almacenen pequeños fragmentos de datos en DB, almacenados en caché o leídos de nuevo con una sobrecarga mínima del servidor. Entonces lo maneja usando JS en el cliente, pero enNode.JS
realidad lo maneja C / C ++. Entonces, ¿qué sucede si necesita un módulo personalizado o un cambio específico en el código base?En una aplicación que sirve páginas web, node.js generalmente no supera a Apache, por ejemplo, en solicitudes únicas. La función sin bloqueo de node.js es excelente si tiene miles de solicitudes por segundo durante la mayor parte del día, aquí es donde Apache se bloquearía y se bloquearía.
Un ejemplo del mundo real.
Para compilar e instalar Node.js en Pi *:
Obviamente, no hay nada de malo en usar node.js en lugar de otros y cuál es la mejor manera de aprender el nodo si no está en un pequeño dispositivo como Pi. Para que pueda compilar el código usted mismo así.
actualización: las versiones posteriores del nodo (la versión actual es v0.8.18) se pueden construir sin los pasos especiales a continuación
a continuación, debemos decirle al compilador que use la
armv6
arquitectura para la compilación:Luego comente las líneas que comienzan alrededor de la marca 157, para eliminar el vfp3 y las partes del simulador. Como se trata de un objeto similar a JSON, recuerde eliminar la coma en la
CPPDEFINES
línea.Luego, el proceso habitual de configuración, creación y realización, NB tuve que especificar manualmente la ubicación de la ruta de acceso de OpenSSL:
Eso es todo, ¡ahora debería tener una instalación Node.JS funcionando!
* Referencias y articulo original
Pero como se señaló en otras respuestas, simplemente puede descargar un binario precompilado que simplemente funcionará.
Conclusiones
Un buen pedazo de Pi no está mal. Puede ejecutar casi cualquier cosa en el Pi- Simplemente no espere un rendimiento a nivel de producción.
fuente
P: ¿Qué tan adecuado es el Raspberry Pi para servir aplicaciones Node?
A: Muy adecuado :) No hay duda al respecto.
P: Si ese es el caso, ¿cómo se puede ajustar la Raspberry Pi para obtener mejores resultados?
A: no lo hagas! Concéntrese en escribir aplicaciones de nodo muy bien diseñadas. Optimizar el script de aplicaciones es el camino a seguir.
Siempre use un servidor proxy, por ejemplo nginex, solo por una razón: Node.JS todavía está en su infancia (en comparación con Apache), por lo que puede suponer que todavía hay problemas de seguridad por descubrir.
fuente