Now You See Me, Now You Don't: LinkedIn's Real-Time Presence Platform
Bài tóm tắt LinkedIn 2018 3. Quy mô lớn Độ khó: Trung bình
LinkedIn · 2018 · 3. Quy mô lớn · Độ khó: Trung bình — bài gốc
Bối cảnh
- Chấm xanh "đang online" cho khoảng 500 triệu thành viên (2018): mỗi giây hàng nghìn người online/offline, cần phát thay đổi tới mọi kết nối đang xem.
- Dựa trên Real-time Platform dựng năm trước cho tin nhắn: pub/sub đẩy từ server xuống client qua kết nối bền. Có kết nối nghĩa là online; người xem subscribe topic presence của người kia.
Thay đổi chính
- Chống chập chờn: mobile hay rớt mạng ngắn (đường hầm, hầm xe). Real-time Platform phát heartbeat mỗi d giây cho mỗi kết nối. Presence Platform: không có entry còn hạn trong kho K/V → coi là vừa online, phát event online, ghi entry TTL d + ε; có entry → chỉ cập nhật thời điểm heartbeat. Rớt rồi nối lại trong d giây vẫn là online.
- Phát hiện offline = phát hiện heartbeat vắng: mỗi member online có một delayed trigger hẹn d + 2ε giây, mỗi heartbeat đặt lại; khi trigger nổ mà entry đã hết hạn thì phát event offline.
- Một Akka actor cho mỗi member online làm trigger: actor nhẹ nên hàng triệu cái chạy trên ít thread; số actor sống bằng số người đang online.
- Scale ngang: state chung chỉ nằm ở kho K/V nên node nào xử lý cũng được; để không trùng trigger, D2 băm member ID để heartbeat của một người dính vào một node (best-effort). Khi deploy, chờ d + 2ε giây cho trigger chạy hết rồi mới restart.
- Kết quả: thay đổi tới người xem dưới 200 ms ở p99; mỗi node khoảng 1.800 QPS.
Vì sao
- Không lọc chập chờn thì vừa xấu giao diện vừa tạo lượng fan-out vô ích qua toàn backend.
Bài học cho SWE
- Trạng thái "đang có mặt" nên suy ra từ heartbeat + TTL, và "vắng mặt" cần một timer riêng vì không có event nào báo.
- Chọn d là đánh đổi giữa tải heartbeat và độ trễ phát hiện offline.
- Sticky routing best-effort đủ để tránh trùng việc khi state thật nằm ở kho chung.
Liên quan
- LinkedIn 2018 (đo latency của chính Real-time Platform) · LinkedIn 2018 (fan-out thông báo)
- Realtime và fan-out
#Presence#online indicator#real-time delivery platform#pub/sub#persistent connection#heartbeat#jitter#TTL#delayed trigger#Akka actor#Play#sticky routing#D2 hash
Được nhắc tới trong
Chủ đề (1)
Công ty (1)
Bài tóm tắt (2)