Node.js hoạt động như thế nào?

Sổ tay JavaScript

4.7 (3 đánh giá)
Tạo bởi Lê Châu Cập nhật lần cuối 2 năm trước 11.545 lượt xem 0 bình luận
Tác giả/Dịch giả: Lê Châu
Học nhanh

Danh sách bài học

Node.js hoạt động như thế nào?

Dẫn nhập

Trong bài viết hôm nay, Kteam sẽ giải thích cho các bạn cơ chế hoạt động của Node.js.

Nội dung

Để theo dõi bài này tốt nhất, bạn nên xem qua bài:

  • Sổ tay Javascript
  • ECMAScript là gì?
  • Node.js là gì?
  • Cơ chế bất đồng bộ trong Javascript

Bài này sẽ giới thiệu những nội dung sau:

  • Kiến trúc Node.js
  • Cơ chế hoạt động của Node.js

Kiến trúc Node.js

Trước tiên, chúng ta sẽ tìm hiểu cấu trúc bên trong của Node.js. Node.js có 2 thành phần chính: phần core và node.js API (modules). Phần core được viết C/C++, còn phần Node.js API được viết bằng Javascript

Kteam sẽ nói giải thích rõ các thành phần trên như sau:

  1. Node.js API: là những thư viện được viết bằng Javascript, các thư viện ta hay gọi là module. Những module này giúp ta từ tương tác với các thành phần Node.js bên trong bằng ngôn ngữ Javascript.
  2. Node.js Bindings: đây là phần Core API, vì tầng dưới được viết bằng ngôn ngữ hệ thống C/C++ trong khi chúng ta viết bằng Javascript. Về cơ bản nó giúp chúng ta ràng buộc Javascript với những thư viện C/C++.
  3. C/C++ Add-ons: Trong trường hợp chúng ta muốn viết thư viện đi sâu vào hệ thống thì có thể viết thư viện bằng C/C++ thay vì Javascript.
  4. Libuv: Là thư viện C++ hỗ trợ đa nền tảng có trách nhiệm thực hiện thread pool, event loop và các xử lý bất đồng bộ trong Node.js. Trong Node.js, các xử lý có block sẽ ủy quyền qua Libuv, có các thread pool xử lý những hoạt động này.
  5. V8: Là Javascript Engine của Google, được viết bằng C/C++.  Đây là Javascript VM nhiệm vụ biên dịch Javascript Code sang ngôn ngữ máy thay vì thông dịch. Đây cũng là Javascript Engine chạy trên trình duyệt Chrome.
  6. C-ares: đây là thư viện C để thực hiện request DNS bất đồng bộ, giải quyết tên miền, và truy vấn nhiều DNS song song.
  7. http_parser: thư viện C để parse request và response HTTP.
  8. OpenSSL: thư viện C cho việc thực hiện cho giao thức SSL và TLS. Nó cung cấp các phương thức mã hóa như hash, cipher,  giải mã,...

Cơ chế hoạt động của Node.js

Node.js được sinh ra để phát triển server-side, vậy chúng ta tìm hiểu vì sao Javascript có thể tương tác đọc file, database. Ngoài ra, Javascript là single thread, nếu chạy ở client-side phục vụ cho 1 client thì có thể đáp ứng được, trong khi ở server-side phải đáp ứng hàng ngàn request từ client gửi đến.

Về bản chất, ngôn ngữ Javascript không thực hiện những công việc ở server-side như đọc file, truy vấn database mà nó ủy quyền cho phần core thực hiện. Như phía trên đã giới thiệu, phần core được viết bởi C/C++.

Ở các ngôn ngữ thực hiện Back-end khác, thì sẽ áp dụng multi-thread có nghĩa mỗi request vào server sẽ thành 1 thread để xử lý request đó. Còn ở Node.js, nếu những xử lý cần block chương trình thì lại đẩy xuống Thread Pool thực hiện.

Ví dụ: khi có request đến server, nó đẩy event vào Event Queue, event loop sẽ nhận lần lượt các event để xử lý. Nếu event đó không Block lại chương trình quá lâu, nó tự xử lý rồi trả response lại. Rồi có những request có thao tác truy vấn database, việc truy vấn sẽ tốn rất nhiều thời gian, Event Loop sẽ đưa công việc qua Thread Pool (thông qua thư viện Libuv đã nói phía trên), khi thread đó đã thực hiện xong thì có kết quả truy vấn database, Node.js đẩy callback của event đó về Event Queue để xử lý việc này. Callback chính là function Javascript xử lý sau khi có kết quả truy vấn database, có thể là response ngay về client.

Lưu ý

Không phải Thread Pool xử lý toàn bộ bất đồng bộ: Đây là kết luận team Node.js, vì bây giờ hệ điều hành có hỗ trợ các interface bất đồng bộ cho Node.js sử dụng, trừ khi cần mới sử dụng Thread Pool thực hiện.

Kết

Như vậy Kteam đã giới thiệu về Node.js hoạt động như thế nào

Ở bài tiếp theo, Kteam sẽ giới thiệu cho các bạn Promise là gì?

Cảm ơn các bạn đã theo dõi bài viết. Hãy để lại bình luận hoặc góp ý của mình để phát triển bài viết tốt hơn. Đừng quên “Luyện tập – Thử thách – Không ngại khó”.


Tải xuống

Tài liệu

Nhằm phục vụ mục đích học tập Offline của cộng đồng, Kteam hỗ trợ tính năng lưu trữ nội dung bài học Node.js hoạt động như thế nào? dưới dạng file PDF trong link bên dưới.

Ngoài ra, bạn cũng có thể tìm thấy các tài liệu được đóng góp từ cộng đồng ở mục TÀI LIỆU trên thư viện Howkteam.com

Đừng quên likeshare để ủng hộ Kteam và tác giả nhé!


Thảo luận

Nếu bạn có bất kỳ khó khăn hay thắc mắc gì về khóa học, đừng ngần ngại đặt câu hỏi trong phần bên dưới hoặc trong mục HỎI & ĐÁP trên thư viện Howkteam.com để nhận được sự hỗ trợ từ cộng đồng.

Tác giả/Dịch giả

Quan tâm lập trình và lịch sử.

Thích tìm hiểu công nghệ mới

Khóa học

Sổ tay JavaScript

Trong thời gian gần đây, JavaScript luôn là ngôn ngữ rất nhiều lập trình viên và sinh viên IT đang quan tâm và bàn tán vì tính linh hoạt, đa năng và cơ hội nghề nghiệp hấp dẫn mà ngôn ngữ này mang lại. Với sự phát triển nhanh các tính năng mới của JavaScript khiến nhiều người đang nghiên cứu cũng khó nhớ hết những tính năng và hiểu bản chất cụ thể của nó.

Thông qua khóa học SỔ TAY JAVASCRIPT, đây chỉ là những ghi chép mà Kteam tổng hợp như để có thể nghiên cứu lại khi cần thiết và giúp các bạn học hiểu được những tính năng JavaScript hiện nay.

Đánh giá

Midir reynard đã đánh giá 7 tháng trước

Vo Tan Duc đã đánh giá 2 năm trước

Kiiiva đã đánh giá 2 năm trước

Bình luận

Để bình luận, bạn cần đăng nhập bằng tài khoản Howkteam.

Đăng nhập
Không có video.