Membaca buku di Aplikasi Web Halaman Tunggal Saya sampai pada satu paragraf yang membuat saya berpikir:
Node.js adalah non-blocking dan event-driven. Singkatnya, ini berarti contoh Node.js tunggal pada perangkat keras sederhana dapat menangani puluhan atau ratusan ribu koneksi terbuka bersamaan , seperti yang digunakan dalam pesan waktu-nyata, yang sering merupakan fitur yang sangat diinginkan dari SPA modern.
Saya perhatikan kasus menggunakan Raspberry Pi sebagai server Rails , jadi bagaimana dengan Node.js?
Bagaimana cara saya mengatur Raspberry Pi saya untuk melayani aplikasi Node.js?
Adakah yang mencoba, apakah ada tips & trik, mungkin Gotcha atau keterbatasan untuk dipertimbangkan?
Sunting: Untuk menghindari kesalahpahaman atau di luar topik, mari tetap fokus pada Raspberry Pi, dalam konteks Node.js:
- Seberapa cocok Raspberry Pi untuk melayani aplikasi Node?
- Jika itu masalahnya, bagaimana kita bisa menyempurnakan Raspberry Pi untuk hasil terbaik?
sumber
Jawaban:
Mendapatkan Node.js di Raspberry Pi
Anda dapat:
Performa
Saya melakukan tes kinerja cepat (untuk memberikan kesan pertama yang kasar):
Raspberry Pi saya di-overclock (Turbo) dengan memory_split default (64)
Pengujian dilakukan melalui jaringan lokal saya (Wifi 802.11g).
Saya menggunakan contoh standar "Hello World" dari situs web Node.js:
Pengaturan Apache Bench:
ab -r -n 10000 -c 100 http://192.168.0.116:1337/
Jadi tes ini tidak representatif untuk aplikasi web normal (baik mengenai koneksi jaringan dan panjang / kompleksitas konten yang ditransfer).
Hasil
Sebagai perbandingan, saya juga menginstal nginx pada Raspberry Pi saya dan menjalankan tes yang sama dengan default "Selamat datang di nginx!" File HTML:
Mengoptimalkan pengaturan Raspberry Pi
Gunakan
raspi-config
untuk mengubah pengaturan berikut:sumber
Server Web
Node.JS
dapat digunakan sebagai pengganti server web pada Pi dan Anda dapat membuat aplikasi web yang berdiri sendiri atau Halaman Tunggal dengan mudah.Tetapi hanya untuk informasi Anda, dalam sebagian besar aplikasi dunia nyata, disarankan untuk menggunakan server seperti modern
nginx
, ringan,lighttpd
atau chunky tetapi berfitur lengkapapache2
! Dan kemudian skrip node.js untuk melengkapi situs.Jelas kemungkinan tidak terbatas dan semuanya tergantung pada apa yang ingin Anda capai.
Raspberry Pi?
Raspberry Pi dapat menjalankan server web mana saja. Itu juga dapat menjalankan Node tanpa komplikasi serius dan sangat cepat tanpa mengutak-atik yang rumit.
Raspberry Pi sangat mampu tetapi yang terbaik adalah mengubah pembagian memori menjadi paling tidak grafis dan sebagian besar RAM. Lupakan menggunakan IDE dan lakukan semuanya melalui SSH. Jika Anda benar-benar membutuhkan jus lagi, masukkan heat sink pada chip BCM dan lakukan overclock karena Anda merasa aman. Pilihan lain adalah menggunakan beberapa Pi sebagai kluster untuk membantu dengan load balancing. Anda dapat mulai menggali di sini tentang pengelompokan.
Tetapi apakah Anda benar-benar perlu menggunakan node.js?
Node.JS
dimaksudkan untuk digunakan ketika Anda memulai (atau mengantisipasi) untuk mendapatkan ratusan dan ribuan permintaan yang membutuhkan potongan kecil data untuk disimpan ke DB, di-cache atau dibaca kembali dengan overhead server minimal. Jadi Anda mengendarainya menggunakan JS pada klien tetapiNode.JS
sebenarnya didorong oleh C / C ++. Jadi apa yang terjadi jika Anda memerlukan modul khusus atau perubahan spesifik pada kode dasar?Dalam aplikasi yang melayani node.js halaman web biasanya tidak mengungguli apache misalnya, pada permintaan tunggal. Fitur non-blocking dari node.js sangat bagus jika Anda memiliki ribuan permintaan per detik hampir sepanjang hari, di sinilah apache akan memblokir dan crash.
Contoh dunia nyata
Untuk membangun dan menginstal Node.js di Pi *:
Jelas tidak ada yang salah dengan menggunakan node.js daripada yang lain dan cara terbaik untuk belajar simpul jika tidak pada perangkat kecil yang rapi seperti Pi. Jadi Anda bisa mengkompilasi kode sendiri seperti ini.
pembaruan: versi terbaru dari simpul (versi saat ini adalah v0.8.18) dapat dibangun tanpa langkah-langkah khusus di bawah ini
selanjutnya kita perlu memberi tahu kompiler untuk menggunakan
armv6
arsitektur untuk kompilasi:Kemudian komentari baris yang dimulai di sekitar tanda 157, untuk menghapus bagian vfp3 dan simulator. Karena ini adalah objek seperti JSON, ingatlah untuk menghapus koma di
CPPDEFINES
telepon!Kemudian seperti biasa mengkonfigurasi, membuat, membuat proses instalasi, NB saya harus secara manual menentukan lokasi libpath OpenSSL:
Itu saja, sekarang Anda harus sudah menginstal Node.JS!
* Referensi dan artikel asli
Tetapi seperti ditunjukkan dalam jawaban lain, Anda cukup mengunduh biner yang telah dikompilasi sebelumnya yang hanya akan berfungsi.
Kesimpulan
Sepotong Pi yang bagus tidak buruk. Anda dapat menjalankan hampir semua hal pada Pi- Hanya saja jangan mengharapkan kinerja tingkat produksi.
sumber
T: Seberapa cocok Raspberry Pi untuk melayani aplikasi Node?
A: Sangat cocok :) Tidak diragukan lagi.
T: Jika itu masalahnya, bagaimana seseorang bisa menyempurnakan Raspberry Pi untuk hasil terbaik?
A: Jangan! Fokus pada penulisan aplikasi simpul yang dirancang dengan sangat baik. Mengoptimalkan skrip aplikasi Anda adalah caranya.
Selalu gunakan proxyserver, misalnya nginex, hanya untuk satu alasan: Node.JS masih dalam masa kecilnya (dibandingkan dengan Apache), sehingga Anda dapat berasumsi bahwa masih ada masalah keamanan yang masih harus ditemukan.
sumber