NodeJS: Architecture

Client yang request ke client akan masuk ke Queue, dan akan masuk ke Event Loop (Single Thread). Kemudian akan masuk ke C++ Threadpool yang bersifat non-blocking. Setelah kode berhasil dieksekusi, maka akan memanggil callback dan menjalankan Event Loop. dan respon dikembalikan ke client

Event-Loop

 * Event-Loop merupakan single thread proses yang digunakan untuk mengeksekusi kode Non-Blocking
 * Karena Event-Loop hanya menggunakan single thread, maka kita harus berhati-hati ketika membuat blocking code, karena bisa memperlambat proses eksekusi kode kita
 * Event-Loop sendiri sebenarnya tugasnya hanya menerima dan mengirim eksekusi kode ke C++ Threadpool, oleh karena itu selalu usahakan menggunakan kode nonblocking agar proses blocking-nya dikerjakan di C++ threadpool
 * Event-Loop akan menerima response dari C++ threadpool yang di kirim via callback

C++ Threadpool

 * NodeJS Menggunakan C++ Threadpool untuk workernya, yaitu threadpool untuk melakukan pekerjaan
 * Libuv adalah library yang digunakan di NodeJS, dimana secara default libuv menggunakan 4 thread di dalam threadpool nya, hal ini menjadikan kita bisa melakukan 4 pekerjaan blocking sekaligus dalam satu waktu.
 * Jika terlalu banyak pekerjaan blocking, kita bisa mengubah jumlah thread di libuv dengan pengaturan environment variable UV_THREADPOOL_SIZE
 * http://docs.libuv.org/en/v1.x/threadpool.html

Resources

 * NodeJS Dasar by Eko Khannedy. https://docs.google.com/presentation/d/1id-hTsg5_StMTk_6nPD6m1Nxid_eGiPwD1otUfZM1LE/edit