Giao diện
Case study: chat
Nhắn tin một-một và nhóm, thời gian thực.
Dàn ý
- Kết nối thời gian thực: WebSocket, gateway giữ kết nối, định tuyến tới đúng gateway.
- Lưu tin nhắn: khoá (conversation_id, message_id), ID có thứ tự thời gian (Sinh ID), phân trang ngược.
- Shard theo cuộc trò chuyện.
- Trạng thái đã gửi, đã nhận, đã đọc; online/offline.
- Tin nhắn khi người nhận offline: push notification, đồng bộ khi kết nối lại.
- Nhóm lớn: fan-out.