Xây dựng website realtime có dễ dàng
Chào mọi người, em đang muốn xây dựng một website bằng nodejs và react, có chức năng thông báo realtime như Facebook thì không biết là có khó không ạ, và để vận hành được website này ban đầu thì cấu hình máy chủ khoảng bao nhiêu là đủ ạ, ví dụ cùng lúc có 1000 người truy cập chẳng hạn. E là dân tay ngang nên muốn hỏi rõ trước để lượng trước công việc. Cảm ơn mọi người.
1 ANSWERS
- Làm chức năng thông báo realtime sử dụng nodejs (socketio) thì mình nghĩ là một sự lựa chọn hợp lý & phổ biến hiện nay rồi. Còn phần frontend bạn dùng React cũng tốt, cũng là một hot trend Khó thì không khó, bởi tài liệu liên quan đến kỹ thuật này có rất nhiều, kể cả trên Viblo, bạn có thể tìm hiểu thêm.
- Cấu hình máy chủ thì còn phụ thuộc vào nhiều vấn đề khác, như phần xử lý logic backend, cũng như lượng request được gửi tới đồng thời. Như ở ví dụ của bạn thì cùng lúc có 1000 người truy cập mình không rõ là cùng một lúc có 1000 requests gửi đến, và bạn yêu cầu phải xử lý được tầm 1000 requests / giây, hay là cùng một lúc có 1000 người đang mở trang web (không quan tâm họ gửi request lúc nào), và chỉ cần giữ 1000 kết nối socket thôi là được? Nếu là yêu cầu xử lý 1000 requests / giây thì câu trả lời là khó Và nó liên quan đến bài toán scale cho phần backend logic của bạn hơn là phần server socket. Còn nếu bài toán là giữ 1000 socket connection thì sẽ dễ dàng hơn, nhất là socket connection của bạn chỉ dùng đển bắn realtime notification, nên cũng không nặng nhọc như việc làm roomchat 1000 người (không, hoặc rất ít khi, phải broadcast message vào tất cả các connection, mỗi connection thỉnh thoảng mới nhận được 1 message ...). Nhưng ngẫm lại để có 1000 người cùng đang mở web, thì số lượng request đến đồng thời chắc cũng không phải là nhỏ, chắc bạn cũng phải xét đến vấn đề về scale phần backend của mình đấy
@thangtd90 Giống kiểu thứ 2 như bạn nói, chỉ cần nó giữ được tầm đó connection để bắn realtime noti thôi. Còn vấn đề scale backend bạn nói rõ hơn giúp mình được ko, là nó nằm ở phần tổ chức code của mình hay sao nhỉ :V
@tuna À ý mình là là nếu service của bạn cần phải xử lý nhiều request đến đồng thời, thì lúc đó phần backend của bạn sẽ phải làm việc khá nặng nhọc, có thể bạn sẽ phải cần đến những giải pháp về load balancing đấy
Code đẹp, tổ chức code tốt, tối ưu logic hay đương nhiên là tốt, tuy nhiên nhiều lúc như thế vẫn là chưa đủ, đôi lúc bạn cần mở rộng server hay dùng thêm các server khác nữa
@thangtd90 Cảm ơn Thắng, mình sẽ để tâm tới phần đó, trước mắt là code xong để nó chạy được đã haha