Hỏi hướng giải quyết cho bài toán Concurrent

Chào mọi người, mình đang có một bài toán trong công việc như sau:

  • Trên màn hình của A có một button, và A thực thi 1 hành động “click”.
  • A có 1000 người theo dõi, trên màn hình của mỗi người đều có button, thì sau khi A click thì 1000 người theo dõi này sẽ thực hiện “click” trên màn hình của họ tương tự như A đã làm.

Vấn đề của mình ở đây là làm sau để 1000 người này đều nhận được tín hiệu “click” cùng lúc từ A và thực hiện đồng thời cùng nhau (độ trễ của việc thực thi hành động giữa 1000 người này nhỏ hết mức có thể). Mình đã suy nghĩ qua nhiều cách nhưng vẫn chưa có hướng cho việc chạy đồng thời nhiều như vậy, mong mọi người ai đã từng gặp qua thì cho mình gợi ý ạ, mình cảm ơn!

có vẻ bài toán của bạn là dùng cho 1 phần mềm thi thố gì đó nhỉ. Nơi mà ai nhanh tay nhất sẽ được chọn

3 Likes

Mình chưa hiểu logic nghiệp vụ này có ý nghĩa gì nhưng vấn đề bạn đang gặp là cần kết nối thời gian thực độ trễ nhỏ, phạm vi 1000 kết nối.

Như vậy tích hợp websocket là phù hợp nhất, thư viện hỗ trợ có thể là SocketIO, đây không phải bài toán Concurrent

3 Likes

Nghe bạn mô tả thì app cần realtime giống kahoot.it đúng không nhỉ? Mình không có nhiều kinh nghiệm nhưng mình nghĩ có 2 vấn đề cần giải quyết:

  1. realtime => dùng websocket
  2. app phải nhanh, độ trễ thấp: thuê server CPU mạnh, nhiều RAM, SSD => (nhiều người truy cập đồng thời như DDoS). Domain, server đặt ở Việt Nam delay sẽ thấp.

Title của bạn ghi “Concurrent” lúc mới đọc làm mình lầm tưởng “concurrent/parallel” của CPU.

P/S nhân tiện các bác cho em hỏi ké: trường hợp này 1 server sẽ xử lý event chính và có 1000 client cùng listening server này (websocket) thì server này được gọi là “broadcast server” đúng không ạ?

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?