SERVER VIẾT BẰNG NODEJS MẠNH MẼ RA SAO
Đã đến thời điểm bạn nên biết về NODEJS
Sự thăng hoa của JavaScript?
JavaScript ra đời từ những năm 1995 bởi Netscape trong cuộc chiến trình duyệt đã có rất nhiều thay đổi. Với sự phát triển mạnh mẽ của Internet, các trình duyệt và hệ thống các nền tảng web mạnh mẽ. JavaScript trở nên dần phổ biến cho các lập trình viên, đi kèm theo nó là rất nhiều sự phát triển, khiến bộ mặt của ngành phát triển web trở nên rực rỡ hơn bao giờ hết. Từ một ngôn ngữ chủ yếu chỉ được sử dụng để tương tác với người dùng trên trình duyệt, JavaScript giờ đây đã xuất hiện trên cả phía Server-side, điều đó tạo ra một xu hướng mới, trào lưu mới trong lập trình web.
Việc xuất hiện của JavaScript xuyên suốt hệ thống web từ Client đến Server có một thuận lợi rõ ràng nhất là về việc đồng nhất ngôn ngữ cũng như định dạng dữ liệu trao đổi (JSON). Khả năng này cho phép các nhà phát triển hợp nhất, tái sử dụng tài nguyên một cách hiệu quả, thêm vào đó là các tính năng mạnh mẽ mà JavaScript đem lại, nó thật sự là một điều tuyệt vời trong phát triển web cũng như các nền tảng khác trong tương lai.
Node.js là gì?
Theo bách khoa toàn thư mở Wikipedia định nghĩa: “Node.js là một nền tảng dựng trên trình biên dịch Google’s Chrome V8 JavaScript, một nền tảng các lớp trừu tượng và một thư viện lõi, được viết chính bằng JavaScript”.
Và theo như cha đẻ của Node.js – RyanDahl: “Node.js hướng đến việc tạo ra những Real-time Web Apps (Web Apps tương tác thời gian thực). Điều này được lấy cảm hứng từ Gmail. Thực vậy, với Node.js, các nhà phát triển làm việc với event-driven (cơ thể hướng sự kiện), non-blocking(thực thi không tuần tự)”.
Chúng ta có thể thấy được, với V8 JavaScript runtime – một trình thông dịch JavaScript cực nhanh chạy trên trình duyệt Chrome. Bạn có thể nhúng V8 vào bất kỳ thứ gì, Node.js làm điều đó đối với các web server. JavaSript suy cho cùng cũng chỉ là ngôn ngữ, vậy thì không lý do gì để nói nó không thể sử dụng trên môi trường server mạnh mẽ như là trong trình duyệt của người dùng được. Và Node.js được sinh ra để chứng minh cho điều đó.
Với Node.js, sau hơn 20 năm của cơ chế web request – response, đã xuất hiện ứng dụng realtime web, two way connection (tương tác 2 chiều). Với Node.js phía Client và Server có thể bắt đầu giao tiếp với nhau một cách đơn gỉan hơn rất nhiều do cùng dùng chung một ngôn ngữ, dẫn đến việc trao đổi với nhau về dữ liệu một cách thoải mái. Với hệ thống cũ, chỉ phía Client có khả năng gửi thông điệp đến Server.
Tại sao chúng ta nên sử dụng Node.js?
Đầu tiên, về tốc độ thực thi và khả năng mở rộng. Node.js có tốc độ thực sự tuyệt vời. Đó là một yêu cầu khá quan trọng trong việc phát triển ứng dụng. Nhất là trong giai đoạn mà bộ nhớ cũng như việc dư thừa dữ liệu đang được chấp nhận với các big-data. Hơn nữa, với những start-up đang cố gắng tạo ra một sản phẩm lớn và muốn đảm bảo có thể mở rộng nhanh chóng, đáp ứng được một lượng lớn các người dùng khi trang web của bạn ngày càng phát triển.
Node cũng hoàn hảo khi đưa ra một RESTful API – web service mạnh mẽ sẽ nhận vào một vào tham số và trả về một ít dữ liệu – thao tác dữ liệu một cách đơn giản mà không cần tính toán với số lượng lớn. Node có thể xử lý hàng ngàn kết nối động thời trong khi các nền tảng khác thì không. Bên cạnh các lợi ích về tốc độ thực và khả năng mở rộng. Việc được viết bằng ngôn ngữ JavaScript giúp cho bạn dễ dàng làm việc với nó khi đây là một ngôn ngữ cực kỳ phổ biến. Cách khai triển nó thực sự dễ dàng hơn việc bạn phải học các ngôn ngữ khác một cách rắc rối và mất nhiều thời gian. Và một điều nữa, Node.js đang trở nên ngày càng mạnh mẽ, bạn hãy nắm bắt nó một cách nhanh chóng nhất để làm việc hiệu quả với nó.
Tuy nhiên, có vẻ bạn đã từng nghĩ Node.js là mạnh mẽ vô đối, chắc chắn rồi, điều đó là không đúng. Node.js ở một góc độ nhất định, vẫn có những hạn chế của nó. Cụ thể, giống nhữ hầu hết các công nghệ mới khác, việc triển Node.js trên host không phải là điều dễ dàng. Nếu bạn có một web hosting xài chung, bạn không thể đơn giản tải lên một ứng dụng Node.js và mong chờ nó hoạt động tốt. VPS và dedicated server rõ ràng luôn là lựa chọn tốt hơn và bạn có thể cài đặt Node.js trên chúng. Thâm chí dễ dàng hơn như là Heroku, đó là nơi bạn có thể hoàn toàn yên tâm khi phát triển trang web của mình trên nó.
Một điều nữa, với những hệ thống yêu cầu cao về CPU, cần có tính toán nặng nề, thì đó chưa bao giờ là một lựa chọn phù hợp cho Node.js. Cái mà Node.js mạnh mẽ, như đã nói, đó là xây dựng được các ứng dụng network, khả năng kiểm soát một lượng lớn các kết nối đồng thời lưu lượng cao, đồng nghĩa với việc tính tương tác cao.
Cơ chế làm việc của Node.js
Node.js làm việc với cơ chế sử dụng non-blocking, event-driven I/O để làm giảm nhẹ và nâng cao hiệu quả trong việc xử lý một khối lượng rất lớn các ứng dụng realtime đa nền tảng. Như đã nói, Node.js là một nền tảng cho phép những nhà phát triển làm việc một cách hiệu quả với những Real-time Web Apps.
So sánh với kỹ thuật web-serving truyền thống: khi mỗi kết nối (request) sinh ra một luồng xử lý (thread) làm chiếm một bộ nhớ RAM của hệ thống và khi có nhiều request sẽ dẫn đến việc chiếm dụng lượng lớn RAM. Node.js thì khác, nó chỉ chạy trên 1 luồng xử lý duy nhất, sử dụng lời gọi non-blocking I/O cho phép nó xử lý được rất nhiều kết nối đến cùng lúc.
Một phép tính đơn giản, nếu chúng ta có một hệ thống 8Gb RAM, mỗi luồng xử lý có 2Mb bộ nhớ, thì trên lý thuyết chúng ta sẽ chỉ nhận được và đáp ứng 4000 kết nối đến cùng lúc. Đó là còn chưa tính toán đến việc các luồng xử lý cũng cần sử dụng bộ nhớ để chuyển đổi nội dung với nhau. Đây là viễn cảnh và thách thức mà bạn sẽ gặp phải khi sử dụng cơ chế web-serving truyền thống. Đối với Node.js, trong điều kiện tương tự, nó có thể xử lý đến 1 triệu kết nối cùng lúc.
Tuy nhiên việc sử dụng đơn luồng của Node.js gặp phải sự khó khăn khi chạy các tác vụ yêu cầu tính toán nặng nề, khi đó Node.js có thể bị chặn và gây ra những vấn đề ở phía Client, cụ thể là những request đến sẽ phải chờ cho việc tính toán kết thúc. Bên cạnh đó, những nhà phát triển phải cẩn thận để tránh đưa những ngoại lên vào phần core của Node.js event-loop (vòng lặp sự kiện lõi). Việc này sẽ khiến chương trình bị ngưng, hay thậm chí là crash.
Để xử lý việc này, Node.js sử dụng chuyển đổi nó thành các tham số trong hàm callback thay vì ném ra các ngoại lệ như các ngôn ngữ khác. Cho dù nó có số ngoại lệ khó kiểm soát, có khá nhiều công cụ và đa mô hình cho phép điều khiển tiến trình trong Node.js và biểu diễn, phục hồi các thể hiện lỗi. Thông thường nhất là việc sử dụng Forever modul, hay một số công cụ thứ 3 là Upstart and Monit.
NPM
Nhắc đến Node.js, không thể không nói NPM – bộ quản lý gói build-in sử dụng công cụ npm
. Bộ quản lý này được cài đặt mặc định kèm theo Node.js. Nguyên lý của module NPM là một bộ các thành phần mở, có khả năng tái sử dụng, có thể được cài đặt thông qua các kho mã nguồn online. Danh sách các gói được tìm thấy trên trang chủ của nó npm
hoặc truy cập thông qua công cụ npm CLI, đã được cài đặt tự động cùng với Node.js. Hệ sinh thái của npm
là open source, ai cũng có thể truy cập và tải về miễn phí, cũng như tạo ra và upload modile của riêng họ. Có rất nhiều module npm phổ biến mà tôi sẽ chỉ ví dụ dưới đây một vài module phổ biến:
- Express: expressjs, một framework phát triển web dựa trên Sinatra, nền tảng chuẩn cho rất nhiều ứng dụng Node.js bây giờ.
- Connect: Connect là một framework server HTTP mở rộng, cung cấp một bộ các plugins “hiệu năng cao” như middleware, serves, đồng thời cũng là nền tảng cho Express.
- Socket.io và sockjs: thành phần server-side của hai websocket thông dụng nhất hiện nay.
- Jade: một trong những template engine phổ biến (chuẩn viết html), dựa trên HAML, nền tảng của Expressjs.
- Mongo và mongojs: gói MongoDB cung cấp những APIs cho hệ cơ sở dữ liệu đối tượng MongoDB trong Node.js
- Redis: thư viện người dùng
- CoffeeScript: trình biên dịch CoffeeScript cho phép những nhà phát triển viết nên chương trình Node.js bằng Coffee (uống cà phê là viết được Node.js <3)
- Underscore (lodash, lazy): thư viện cung cấp rất nhiều tiện ích, được sử dụng phổ biến nhất trong Javascript, được gói gọn trong Node.js, với cách thực thi khác biệt, hứa hẹn sẽ mang đến hiệu năng tốt hơn.
- Forever: rõ ràng đây là tiện ích thông dụng nhất, giúp cho mã Node chạy một cách liên tục.
Kết luận:
Nếu bạn đang tìm hiểu về web, hoặc đang tìm cho mình một hướng đi trên con đường trở thành một nhà phát triển web, thì đây là thời điểm tuyệt vời mà bạn cần nắm bắt lấy. Với hệ thống các web service và trao đổi dữ liệu mở, việc tạo ra các ứng dụng web chưa bao giờ dễ dành đến thế. Và với Node.js, sẽ là một nền tảng mà bạn sẽ cảm thấy tuyệt vời khi sử dụng nó để có thể tạo ra một sản phẩm web tuyệt vời, như twitter hay facebook khác trong tương lai chẳng hạn. Thời điểm của bạn đến rồi, hãy nắm bắt lấy nó.
(Bài viết được tham khảo từ https://www.toptal.com/nodejs).
FUYU
TRUNG TÂM ĐÀO TẠO LẬP TRÌNH VIÊN JANETO
0933067997 – 0933267337
facebook.com/laptrinhvienio
YouTube/laptrinhvienio
tuyensinh@laptrinhvien.io
Tầng 2 Tòa nhà The Morning Star – 57 Quốc Lộ 13, Phường 26, Quận Bình Thạnh, Tp. Hồ Chí Minh.
![](https://laptrinhvien.io/wp-content/themes/Training/asset/img/eyes-icon.png)
![](https://laptrinhvien.io/wp-content/themes/Training/asset/img/comment-icon.png)
![](https://laptrinhvien.io/wp-content/themes/Training/asset/img/fb-icon.png)