Node.js Hoặc các máy chủ? [đóng cửa]


10

Tôi đã nghe rất nhiều và đọc về ngôn ngữ phía máy chủ Javascript, ví dụ Node.js và thấy nhiều so sánh có lợi cho Node.

Tôi không hiểu điều gì làm cho nó tốt hơn hoặc nhanh hơn hoặc làm thế nào nó thậm chí liên quan đến thứ gì đó trưởng thành như Java Servlets.

Nhưng các Servlets được xây dựng dựa trên ngôn ngữ lập trình đa luồng trái ngược với Node.js. Vậy thì làm thế nào để node.js có thể nhanh hơn?

Nếu giả sử 1000K người dùng truy vấn cho một bản ghi cơ sở dữ liệu, thì Node.js không nên chậm hơn Servlets.

Ngoài ra các servlet có bảo mật tốt hơn so với Node.js không?


Cả hai quá trình và luồng có thể được sử dụng để mở rộng bất kỳ ứng dụng nào cho việc sử dụng đa lõi. Bạn không cần cả hai.
Raynos

@Raynos Chức năng C bị ràng buộc cũng có thể được xâu chuỗi? Tôi chỉ nhận vai trò của JS là người nhắn tin tự động xếp hàng không chặn để chuyển mọi thứ sang cấp độ thấp hơn nhưng tôi vẫn chưa nhận được bàn chân của mình trên Node.
Erik Reppen

Câu trả lời:


12

Bạn đang trộn táo và cam, loại.

Các máy chủ (hoặc kế thừa từ httpServlet) cho phép bạn truy cập các tham số yêu cầu HTTP và phản hồi với một cái gì đó, thông qua (hoặc trên đầu trang) một triển khai máy chủ HTTP hiện có.

Mặc dù sử dụng Javascript làm ngôn ngữ, Node.js ở mức thấp hơn mức đó. Nó bắt đầu từ việc thực hiện máy chủ HTTP. Tuy nhiên, bạn có thể tiếp tục làm nhiều thứ cấp cao hơn trong đó, chẳng hạn như các ứng dụng web.

Về đa luồng, nó không cần thiết. Các máy chủ Node.js không nhanh hơn vì đa luồng, chúng nhanh hơn vì chúng không chặn các yêu cầu IO, vì vậy chúng có thể tiếp tục bơm chúng lên hàng đợi trong khi thực hiện các thao tác khác. Chúng chỉ hoạt động khi có công việc phải hoàn thành - chúng không chờ đợi - và điều đó gây ra sự tăng cường hiệu suất nghiêm trọng, khi nó bật ra.

Đối với các truy vấn cơ sở dữ liệu, nó thực sự thiên về các ràng buộc trong mô hình cơ sở dữ liệu và API hơn là về máy khách.

Về bảo mật - đó thực sự là một chủ đề khác, và cuối cùng nằm trong tay của bất kỳ nhà phát triển nào, không quá nhiều trong thư viện.


3
Servlet 3 hỗ trợ asynch IO giống như Node
nhộn

3
vui nhộn - Có một sự khác biệt lớn giữa việc hỗ trợ một cái gì đó và được thiết kế từ đầu để làm một cái gì đó. Nút không đồng bộ là cái sau.
Jack

1
@Yam Marcovic Tôi vẫn không hiểu ý của bạn là gì bởi "họ không chặn các yêu cầu IO" Ngay cả trong JEE, một chuỗi sẽ chạy độc lập sẽ không dừng yêu cầu khác được phục vụ. Như một chủ đề mới được tạo ra theo yêu cầu. Tôi có ý nghĩa?
Oliver
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.