E muốn hỏi về vấn đề khi có nhiều người cùng vào trang web 1 lúc



  • Đây là lần đầu tiên e học về lập trình web và e đã chọn NodeJS, e cũng đã tự học và thực hành được 1 tuần nay. Và e có 1 vấn đề thắc mắc muốn hỏi thế này:

    Giả sử có 3 người dùng, họ cùng click vào nút đăng nhập cùng lúc ->

    • Trên máy chủ có 1 giao thức lấy thông tin người dùng đó từ giá trị Session khi đã đăng nhập:

      app.get('/', function(req, res, next){
          var s = req.session.passport;
          User.findOne({'_id' : s.user}, function(err, data){
              if(err) {next(err);}
              res.render('index.ejs', {id: data.id});
              next();			
          });	
      
      });
      
    • Sau đó giá trị ID được lấy và gửi về client và render

    Câu hỏi của e là, khi 3 người kia cùng đăng nhập 1 lúc và gửi dữ liệu session về cho Server để lấy thông tin ID thì bên Sever có xử lí riêng lẻ độc lập gủi dữ liệu về cho từng người cùng 1 lúc hay là sẽ xử lý gửi theo thứ tự (ví dụ: Người thứ 1 xong -> Xử lí người thứ 2 -> xử lí người thứ 3)

    Nếu mà xử lí theo kiểu thứ tự thì chắc giả sử trang của em có 1000 thành viên và cùng đăng nhập 1 lúc thì chắc Server e nát luôn.

    Mọi người trả lời giúp e với. E cảm ơn ạ



  • @Anh-Anh-Tran222 nodeJS là none blocking, người nào đăng nhập trước không có nghĩa là server tạo ra session và gởi cho người đó trước bạn nhé. tuỳ vào server nó xử lý, mà nói chung đăng nhập vào cùng 1 lúc mà 1000 người thì chắc là hiếm có.

    • đăng nhập ko kết nối database thì lưu xử lý bình thường thôi bạn
    • nếu có kết nói database thì cũng ko sao, thường thì thư viện kết nói có hỗ trợ limit connect vào. Nói chung thời gian mà 1000s người cùng 1 lúc hiếm chỉ có hacker nó gởi request kiểu vậy thôi. 100 người request 1 lúc, nhưng thời gian nó chênh lệnh nhau tính bằng mili giây.
    • NodeJS có thể chịu đc 1000 request cùng 1 lúc cũng ko sao bạn nhé.
    • Cơ chế chạy vòng tròn, gặp thằng nào request tới thì nó trả kết quả cho thằng đó. quan trọng server như thế nào. Nói chung cũng ko tốn ram cho lắm.
    • còn nếu PHP, ASP, mỗi người request vào thì nó tạo ra 1 luồng mới, mỗi lường xử lý 1 tác vụ riêng biệt. 1000 người, mỗi người 100 request, 1 request tốn khoảng 50mb chẳng hạn. 1000 x 100 x 50mb tốn khoảng 5gb ram, mình ví dụ vậy thôi hehe


  • @Anh-Anh-Tran222 nhiều người dùng thì người ta sẽ xử lý với services load balancing như amazon, google hoặc cloudflare..



  • @hongduy Cảm ơn anh, vậy là giờ e đã yên tâm tiếp tục viết một mạng xã hội bằng NodeJS rồi. Cảm ơn a rất nhiều


Log in to reply