บทที่ 12 · Chat System

ออกแบบ Chat System

Chat System สนับสนุนการส่งข้อความแบบ Real-time ระหว่างผู้ใช้ บทนี้มุ่งเน้นการออกแบบแอปแชทที่รวม One-on-One Chat, Group Chat และ Online Presence

บทนำ

One-to-One Chat

ภาพที่ 1: One-to-One Chat Architecture

Chat System สนับสนุนการส่งข้อความแบบ Real-time ระหว่างผู้ใช้ Features หลัก:

ข้อกำหนด

Communication Protocols

Sender Side

ใช้ HTTP สำหรับส่งข้อความ โดยใช้ Persistent Connections เพื่อประสิทธิภาพ

Receiver Side

Online Presence

ภาพที่ 2: Online Presence System

Components

Messaging Flows

One-on-One Chat

  1. User A ส่งข้อความไปยัง Chat Server 1
  2. Chat Server 1 กำหนด Unique Message ID และเก็บข้อความใน Key-Value Store
  3. หาก User B Online ข้อความถูก Forward ไปยัง Chat Server 2
  4. หาก User B Offline ส่ง Push Notification

Group Chat

ข้อความถูก Copy ไปยัง Individual Inboxes สำหรับแต่ละผู้รับในกลุ่ม

Online Presence

Heartbeat Mechanism

Clients ส่ง Heartbeats เป็นระยะเพื่อบ่งชี้ว่าออนไลน์ หากไม่มี Heartbeat ในช่วง Threshold ผู้ใช้ถูกทำเครื่องหมายว่า Offline

Fanout Model

อัปเดตสถานะออนไลน์ถูก Push ไปยังเพื่อนโดยใช้ Publish-Subscribe Model

เนื้อหานี้อ้างอิงจาก ByteByteGo - System Design Interview - An Insider's Guide