Kiến trúc Node
Mô hình được thúc đẩy bởi sự kiện trong Node (cái cũng được biết đến là mô hình non-blocking I/O) dựa trên
event loop thread đơn. Có nhiều cái rút ra về phát biểu đó nhưng bản chất là rằng Node có thể xử lí nhiều nhiệm
vụ cùng lúc bằng cách đăng kí một event listener cho mỗi nhiệm vụ. Khi một nhiệm vụ được hoàn thành, event listener
của nó được châm ngòi. Node sử dụng các threads và khả năng không đồng bộ bản địa của hệ điều hành bên dưới để
hoàn thành cái đó.
Event loop của Node chịu trách nhiệm cho xử lí tất cả hoạt động I/O không đồng bộ. Ví dụ, khi một máy khách web gửi
một yêu cầu tới máy chủ web Node, Node xử lí yêu cầu bên trong mà không phong toả thread đơn chính, và khi Node thực
hiện xong với yêu cầu đó, nó nhặt request listener (cái là một hàm Javascript đặc biệt cái là phần của code máy chủ web), và thêm nó vào hàng event. Event loop là một vòng lặp ticking mãi mãi cái chờ cho thread đơn V8 để có sẵn, nhặt một event listener từ hàng event, và gửi tới nó V8 cho xử lí.
Cùng một luồng chính xác xảy ra khi bạn hướng dẫn Node đọc một file từ hệ thống file, bắt đầu một cái đếm thời gian, mã hoá dữ liệu, và ..vv… Mọi thứ có một hàm listener (cái cũng được biết đến như một hàm callback, vì Node về cơ bản gọi nó quay trở lại khi nó đã sẵn sàng cho nó). Mọi hàm listener xếp hàng trong hàng event. Đôi khi hàng event sẽ có nhiều sự kiện treo, cái tất cả đã sẵn sàng cho xử lí. Đó là tại sao có một vòng lặp ticking mãi mãi, nó sẽ nhặt các events từng cái một, và trong trật tự hàng (cái đầu tiên vào, cái đầu tiên ra).