Nonblocking I/O trong Node (phần 2)

Nonblocking I/O trong Node (tiếp tục)

Trong ảnh dưới CSDL được truy cập trên mạng. Trong Node, truy cập mạng đó là nonblocking, vì Node sử dụng một
thư viện gọi là libuv (http://libuv.org) để cung cấp lối truy cập vào các lời gọi mạng nonblocking của hệ điều
hành. Cái này được thực thi khác nhau trong Linux, macOS và Windows, nhưng tất cả bạn phải lo lắng về là thư viện
CSDL Javascript thân thiện của bạn. Trong khi bạn đang viết code như db.insert(query,err => {}), Node đang thực
hiện liên mạng tối ưu hoá, nonblocking bên dưới.
Node web
Truy cập ổ cứng là tương tự, nhưng thú vị là không giống nhau. Khi email receipt được khởi tạo và email template
được đọc từ ổ cứng, libuv sử dụng một thread pool để cung cấp giả rằng một lời gọi nonblocking đang được sử dụng.
Quản lí một thread pool không thú vị tí nào, nhưng viết email.send(‘template.ejs’, (err, html) => {}) là hoàn toàn
dễ dàng hơn nhiều để hiểu.
Lợi ích thực đối với sử dụng APIs không đồng bộ với nonblocking I/O là rằng Node có thể làm thứ khác trong khi các quá
trình chậm so sánh này xảy ra. Mặc dù bạn chỉ có một ứng dụng web Node thread đơn, quá trình đơn đang chạy, nó có thể
xử lí nhiều hơn một kết nối, từ hàng ngàn khách ghé thăm website tiềm tàng tại một thời điểm. Để hiểu cái này, bạn cần
nhìn vào event loop.

Chia sẻ