Các ví dụ điển hình về hiệu suất vượt trội của Node

Nội dung bài viết

Video học lập trình mỗi ngày

1. RESTful API


Nếu bạn cần một dịch vụ RESTful API để giao tiếp giữa nhiều hệ thống khác nhau, hoặc giữa người dùng và Server thì đây là tình huống lý tưởng để sủ dụng Node.js. Vì khi chúng ta triển khai dịch vụ API với Node.js thì bạn có thể xây dựng nó để xử lý hàng chục nghìn kết nối. Cho dù là kết nối đồng thời cao thì Node vẫn không đòi hỏi nhiều logic, về cơ bản nó chỉ vượt qua những điều kiện để xâm nhập vào tầng Database để truy cập dữ liệu và trả lại một response cho Client.


Chưa nói đến kỹ thuật nhưng đa số hầu hết mọi request cũng mang theo những văn bản or định dạng dưới dạng JSON, và khi response thì cũng vậy, chính vì vậy ngay cả lưu lượng truy cập cao và một máy có thể xử lý ngay cả các nhu cầu API của công ty bận rộn nhất. Cũng đừng quên triển khai Cluster cho nodejs.


2. Twitter sử dụng Node.js


Hãy tưởng tượng một công ty giống như Twitter có thể gọi là ông lớn trong việc sử dụng công nghệ, tính năng chủ yếu của Twitter là phải nhận các tweet của hàng triệu người dùng khắp thế giới và ghi chúng vào cơ sở dữ liệu mỗi ngày. Trên thực tế, gần hàng nghìn lượt tweet đến mỗi giây và cơ sở dữ liệu không thể xử lý kịp thời số lượt ghi cần thiết trong giờ cao điểm. 

Node đã trở thành một phần quan trọng của giải pháp cho vấn đề này. Như bạn thấy, Node có thể xử lý hàng chục nghìn tweet gửi đến. Nó có thể nhanh chóng và dễ dàng ghi chúng vào một cơ chế Stack trong bộ nhớ (chẳng hạn như memcached), từ đó một tiến trình riêng biệt khác có thể ghi chúng vào cơ sở dữ liệu. Vai trò của Node ở đây là nhanh chóng thu thập các tweet và chuyển thông tin này cho một quy trình khác chịu trách nhiệm triển khai việc nhập dữ liệu. 


Hãy tưởng tượng một thiết kế khác (giả sử một máy chủ PHP thông thường sẽ cố gắng xử lý việc ghi vào chính cơ sở dữ liệu) mỗi tweet sẽ gây ra sự chậm trễ ngắn trong việc ghi vào cơ sở dữ liệu vì lệnh gọi cơ sở dữ liệu đang block. Do độ trễ của cơ sở dữ liệu, máy được thiết kế theo cách này chỉ có thể xử lý 2000 tweet gửi đến mỗi giây. Như vậy cần 500 máy chủ để xử lý 1 triệu tweet mỗi giây. 


Nếu để hiểu sâu vì sao Java, PHP lại mất nhiều máy chú như vậy thì bạn nên đọc thêm tài liệu, ở đây tôi chỉ nói sơ qua về LOGIC mà thôi. Ngược lại, Node có thể xử lý từng kết nối mà không bị block, do đó có thể bắt được nhiều tweet nhất có thể. Một máy Node có thể xử lý 50.000 tweet chỉ cần 20 máy chủ. 


Chú ý: Hướng dẫn tìm hiểu Node.js từ số 0


3. Call of Duty sử dụng Node.js


Nếu bạn đã chơi trò chơi "Call of Duty" trực tuyến, một trò chơi nổi tiếng đấy, khi nhìn vào bảng thống kê của trò chơi, bạn sẽ nhận ra ngay một vấn đề: Để tạo ra mức thống kê đó, bạn phải theo dõi một lượng lớn thông tin. 


Bằng cách này, nếu có hàng triệu người chơi trực tuyến cùng một lúc và họ ở các vị trí khác nhau trong trò chơi, thì một lượng lớn thông tin sẽ được tạo ra rất nhanh chóng. Node là một giải pháp tốt cho tình huống này, vì nó có thể thu thập dữ liệu do trò chơi tạo ra, hợp nhất dữ liệu với số lượng ít nhất, sau đó xếp hàng đợi dữ liệu đó có thể được ghi vào cơ sở dữ liệu. 


Có vẻ ngớ ngẩn khi sử dụng toàn bộ máy chủ để theo dõi số lượng đạn mà người chơi bắn ra trong trò chơi. Nếu bạn sử dụng máy chủ như Apache, có thể có một số hạn chế hữu ích như đã nói ở trên. Nhưng ngược lại, nếu bạn sử dụng máy chủ chuyên dụng để theo dõi tất cả số liệu thống kê của một trò chơi mà dữ liệu được thay đổi liên tục như được thực hiện với một máy chủ sử dụng Node, đó có vẻ là một bước đi thông minh.


4. Tóm lại


Trên kia là một trong nhiều ví dụ để nói đên sự hiệu quả của Node.js, nếu bạn muốn tìm hiểu kỹ hơn để bắt đầu học về Nodej.js thì có lẽ bạn nên quay về bài viết trước "Node.js Series: Bắt đầu!!!" mà chúng tôi đã tóm tắt những vấn đề về lợi ích của Node. 


Có lẽ sẽ thiếu sót nhiều ví dụ nữa, nhưng từng ấy thôi cũng đủ chúng tôi yêu mến và sử dụng Node như thế nào, còn bạn? Bạn có suy nghĩ gì về ưu và nhược của Node.js, hãy nêu ý kiền nếu có thể. 


Love you!!!

Có thể bạn đã bị missing