Chào các bạn, đi dạo gần đây, mình bao gồm viết một chuỗi các bài viết về Javascript. Mặc dù nhiên, các nội dung bài viết trước trên đây mình đa số viết về ReactJS, hoặc javascript phía front-end. Cố thì hôm nay, nhân một ngày tp. Hà nội trái gió trở trời, bản thân xin được viết về javascript phía hệ thống nhé.Chủ đề mà lại hôm nay mình muốn giới thiệu với chúng ta đó là NodeJS - một chiếc nhìn tổng quan lại nhất.

Bạn đang xem: Non blocking io là gì

Bạn đang xem: Non blocking io là gì

NodeJS là gì vậy ?

Sau đấy là định nghĩa mình tìm kiếm được trêntrang chủcủa NodeJS:

Node.js uses an event-driven, non-blocking I/O mã sản phẩm that makes it lightweight và efficient.

Node.js’ package ecosystem, npm, is the largest ecosystem of xuất hiện source libraries in the world.

Đúng như nhân gian nói, NodeJS là một nền tảng (nền tảng - platform chứ không phải là framework đâu nhé) chạy xe trên engineGoogle Chrome V8của thằng google - mặt hàng xịn đừng hỏi. Khi chúng ta sử dụng trình duyệtGoogle Chromethì Javascript cũng rất được biên dịch bằng engine này, nó vẫn nhận đoạn mã javascript của công ty và dịch sang trọng mã máy, với vận tốc nhanh hơn. Nhận ra trình biên nhờn này rất nhanh và tác dụng nên tín đồ ta đưa ra quyết định đưa nó vào server-side, và thay là vào năm 2009, NodeJS đã ra đời. Tự đó đến nay, NodeJS đã vươn lên trở thành giữa những sự lựa chọn số 1 ở phía server-side, rất rất được ưa chuộng bởi cộng đồng các lập trình viên cũng như đã được áp dụng trong các hệ thống lớn như: Netflix, Paypal, Walmart, và Uber. Sau đây là bảng xếp hạng các thư viện/nền tảng rất được yêu thích nhất theo điều tra của Stackoveflow hồi tháng 2/2020


*

Vậy là tôi đã giải thích chấm dứt dòng đầu tiên của định nghĩa rồi. Hiện thời chúng ta sẽ thường xuyên với dòng thứ nhì nhé.

Event drivent? Non-blocking IO?

Mình giới thiệu IO một chút. IO chức là input/output, tức bất kì thao tác đọc/ghi như thế nào tới khối hệ thống file. IO là thao tác làm việc tốn thời hạn và nó sẽ block toàn bộ các hàm khác đã chạy. Đây chính là lúc mà vẻ ngoài non-blocking IO vào NodeJS vẫn phát huy ưu điểm của mình.

Xem thêm: Cách Chọn Và Nuôi Thuần Chào Mào Má Trắng Đơn Giản, Chào Mào Alưới

Mình đang lấy lấy ví dụ như cho dễ dàng nắm bắt nhé: hãy tưởng tượng hệ thống của bọn họ đón nhận 2 request tự 2 người tiêu dùng là A và B. Cả hai request này phần đa là đọc tài liệu từ database rồi trả về cho những người dùng, chẳng hạn như xem thông tin cá thể chẳng hạn. Lúc thằng A nhờ cất hộ request cho tới server, server tiến hành đọc database. Thường xuyên thì chúng ra sẽ khởi tạo một luồng mang đến request A, với một luồng khác đến request B, nhưng do NodeJS là đối kháng luồng (single-thread) nên nếu không sử dụng non-blocking IO thì thao tác đọc database sẽ ngăn request B, thằng B sẽ yêu cầu đợi cho đến khi request A được thực hiện xong thì mới rất có thể được server chào đón và xử lý. Nhưng với non-blocking IO thì 2 request này có thể được triển khai đồng thời nhưng không phải phải chờ đợi nhau. Đặc tính non-blocking IO cũng khiến cho cho họ không quan trọng phải sử dụng đến cách xử trí đa luồng mà vẫn có thể tiếp nhận và thực hiện được không ít request và một lúc.


*

Cơ chế bất đồng nhất của NodeJS đưa về một lợi thế cực to về hiệu năng, duy nhất là kỹ năng xử lý được số lượng lớn các request và một lúc. Bản thân lấy ví dụ như ASP .NET, một framework áp dụng cơ chế blocking IO, để xử lý những request một lúc thì chúng đề xuất sinh ra các luồng khác nhau, điều đó sẽ khiến cho tài nguyên bộ nhớ lưu trữ và vi cách xử trí sẽ tốn nhát hơn vô cùng nhiều. Tất yếu là những framework như ASP .NET cũng hoàn toàn có thể xử lý bất đồng bộ, mặc dù nhiên họ sẽ đề nghị viết code để tạo thành các làm việc bất đồng hóa ấy. Còn đối với Node JS thì vấn đề xử lý bất đồng nhất là mang định

Cộng đồng NodeJS rất đông và hung hãn


*

NPM - Node packages manager là khối hệ thống thư viện giúp bạn cũng có thể xây dựng ứng dụng một cách gấp rút và thuận tiện hơn. Tuy vậy Node mới chỉ thành lập tới ni được rộng 10 năm, nhưng hệ thống thư viện hỗ trợ của chúng - npm hiện nay đã có tới rộng 1,4 triệu packages, và số lượng này vẫn đang tăng thêm chóng khía cạnh (~804 packages/ngày ) theo số liệu được thống kê củahttp://www.modulecounts.com/. Số lượng này thậm chí là vượt trội đối với những khối hệ thống thư viện của những framework lâu đời như nudget của ASP .NET, gems của Ruby on Rails,...

Một số package thông dụng tốt nhất khi chúng ta tạo một server API cùng với NodeJS rất có thể kể cho như express, mongoose (được coi như thể relation mapping với MongoDB), Sequelize (Relation Mapping với các SQL database),... Chỉ với express cùng với 1 thư viện relation mapping thôi thì bọn họ hoàn toàn rất có thể build một RestfulAPI rất nhanh và thuận lợi rồi.

Tại sao lại là NodeJS ?

Vậy nguyên nhân NodeJS lại phạt triển mạnh mẽ và rất được quan tâm tới vậy ? mình xin được nói tới một vài ưu thế sau :

Trên đó là những share dựa trên kiến thức của mình, hy vọng nó sẽ giúp đỡ ích cho các bạn mới tiếp cận hoặc khám phá về NodeJS. Trong các bài tiếp theo, bản thân sẽ trình bày kỹ rộng những vấn đề liên quan tiền tới NodeJS nhé.