Một trong những khái niệm quan trọng mà bạn đã đề cập đến là:
Vâng, họ đang Giao đất a thread cho mỗi yêu cầu
Nó được hiển thị thời gian và một lần nữa rằng có một thread cho mỗi yêu cầu với một ứng dụng bị ràng buộc IO cuối cùng sẽ cạn kiệt thread-pool của bạn khi mục tiêu của bạn là hỗ trợ một số lượng lớn người dùng đồng thời. Khi nó quay ra, các khung công tác mà bạn đang nói về như Node.js, Tornado, v.v. nổi trội trong việc xử lý một số lượng lớn người dùng đồng thời, nơi ứng dụng của bạn có nhiều khả năng chỉ chờ đợi một điều gì đó xảy ra và không thực hiện bất kỳ CPU nào các nhiệm vụ bị ràng buộc. Nói cách khác, những công cụ này là tuyệt vời để xây dựng các ứng dụng thời gian thực như trò chơi trực tuyến, phòng chat, hệ thống ghi nhật ký, hệ thống thông báo nơi mục tiêu chính nhanh chóng điều phối thông điệp nhỏ, với nhiều người dùng càng nhanh càng tốt.
Thực tế, các công cụ này rất tuyệt vời khi viết các ứng dụng dựa trên websocket vì nó thực sự cung cấp trải nghiệm thời gian thực hoặc gần thời gian thực cho người dùng.
Mặc dù nhiều công ty đang sử dụng các nền tảng này từ khi bắt đầu, tôi nghĩ rằng các công ty có ngăn xếp truyền thống sử dụng các công cụ hướng sự kiện càng bổ sung cho hệ thống của họ thì càng phổ biến. Khi bạn đi với một cái gì đó như node.js hoặc Tornado, bạn có thể thấy mình từ bỏ rất nhiều phần mềm tích hợp mà bạn dựa vào có lợi cho việc phải cuộn api và trình điều khiển của riêng bạn. Bây giờ node.js đã có mặt, và thực sự có rất nhiều sự hỗ trợ tuyệt vời cho việc tìm kiếm cơ sở dữ liệu, nền tảng nosql và các hệ thống xây dựng nhưng phải mất một thời gian để nó đến đó.
Là một thử nghiệm, hãy thử viết một ứng dụng trò chuyện tcp đơn giản sử dụng một chuỗi cho mỗi yêu cầu và xem bạn có thể hỗ trợ bao nhiêu người dùng. Cuối cùng, bạn sẽ đạt đến giới hạn với số lượng chủ đề hệ điều hành mà bạn có thể quay lên, điều này thực sự tốn kém.
Sau đó, xem bạn có thể đi được bao xa với node.js bằng cách sử dụng chỉ một chuỗi, chuỗi mặc định của nó. Bạn sẽ thấy rằng bạn có thể hỗ trợ một số lượng lớn yêu cầu đồng thời mỗi giây. Nó được biết đến với quy mô trong hàng triệu vì nó không bị giới hạn bởi các chủ đề, nó chỉ bị giới hạn bởi bộ nhớ, số lượng các bộ mô tả tập tin và cpu tại thời điểm đó.
Để trả lời câu hỏi của bạn tốt nhất mà tôi có thể:
- Tôi không nghĩ rằng đó là khả thi chỉ đơn giản là mương toàn bộ nền tảng của bạn chỉ vì bạn nghe thế nào Node.js tuyệt vời và kiến trúc hướng sự kiện đang có. Bạn thực sự phải tự hỏi mình, nếu bạn có nhu cầu xây dựng một IO bị ràng buộc ứng dụng đồng thời cao. Nếu vậy, tại sao không chỉ sử dụng nó để bổ sung cho ngăn xếp hiện tại của bạn?
- Tôi không chắc chắn về câu hỏi thứ hai của bạn, ý của bạn là gì đối với thiết bị?
- Bạn có thể xây dựng một ứng dụng tuyệt vời trong đám mây dựa trên các công cụ truyền thống cũng giống như sử dụng các kiến trúc hướng sự kiện. Thực tế là nó có thể là một ứng dụng "đám mây" thực sự không liên quan gì đến việc chọn nền tảng.
- Tôi có thể nói nó có quy mô hơn hiệu suất. Bạn có thể thấy rằng một ứng dụng node.js chạy chậm hơn hoặc nhanh hơn một ứng dụng java chạy cùng một mã. Nhưng những gì node.js có thể làm là cho phép một tỷ lệ thông lượng cao hơn nhiều bởi vì nó sẽ không đạt đến giới hạn luồng mà tôi đã đề cập. Và điều này cũng ngụ ý rằng bạn đã xây dựng một ứng dụng hướng sự kiện thích hợp, nơi bạn không chặn. Nếu bạn chặn, bạn gỡ toàn bộ hệ thống!