Building Scalable Real Time Analytics, Alerting and Anomaly Detection Architecture at Dream11
Bài tóm tắt Dream11 2019 2. Tăng trưởng Độ khó: Trung bình
Dream11 · 2019 · 2. Tăng trưởng · Độ khó: Trung bình — bài gốc
Site chặn crawler; wiki đọc toàn văn qua trình duyệt, ghi chú bằng lời của wiki. Bài ngắn, nhiều phần giới thiệu công cụ.
Bối cảnh
- Dream11 (2019): hơn 3 TB dữ liệu/ngày, hơn 10 triệu giao dịch/ngày, 2,8 triệu người đồng thời, hàng tỉ sự kiện clickstream/ngày.
- OLTP là AWS Aurora, không hợp truy vấn tổng hợp; warehouse là Redshift, nạp bằng ETL mỗi giờ, nên không có số liệu thời gian thực.
- Cần biết ngay: tốc độ người tham gia contest, trạng thái gộp của các cổng thanh toán, bất thường (cổng thanh toán sập, traffic lạ), hiệu quả chiến dịch và mã giảm giá, alert khi contest lớn đầy trên 90%.
Thay đổi chính
- Kéo dữ liệu từ OLTP vào Kafka bằng Kafka Connect: Debezium (CDC đọc binlog) và JDBC source (query định kỳ).
- Bài học theo Dream11: Debezium đọc binlog thêm tải lên database; JDBC source không thấy delete và các lần cập nhật trung gian, và có thể bỏ sót transaction chạy lâu.
- Enrich bằng KSQL (join stream, lọc, tổng hợp). Theo Dream11 KSQL lúc đó còn non: có lần mất dữ liệu; chạy ở chế độ CLI đôi khi sinh bản ghi trùng nên dùng chế độ file.
- Ghi vào Elasticsearch qua sink connector, index theo tuần để dễ lưu trữ dữ liệu cũ; hỗ trợ upsert; mapping schema phải xử lý cẩn thận.
- Alert bằng ElastAlert với các kiểu luật: tần suất, spike, flatline (quá ít sự kiện), danh sách đen/trắng, giá trị mới chưa từng thấy, cardinality.
- Giám sát chính pipeline bằng New Relic: trong IPL, độ trễ đầu-cuối tối đa dưới 2 phút.
- Kết quả theo Dream11: ingest khoảng 40.000 sự kiện/giây, trễ đầu-cuối dưới 50 giây; đội vận hành quyết định thêm contest, đội sản phẩm và marketing chỉnh chiến dịch theo thời gian thực.
Vì sao
- OLTP không chịu được truy vấn phân tích, warehouse thì trễ một giờ; cần một đường thứ ba lấy thay đổi từ OLTP gần như ngay lập tức.
Bài học cho SWE
- CDC từ binlog là cách phổ biến để tách tải phân tích khỏi OLTP, nhưng không miễn phí với database nguồn; polling theo cột cập nhật thì rẻ hơn mà mất delete (Event-driven, message queue và Kafka).
- Alert trên chỉ số kinh doanh (contest đầy, cổng thanh toán, traffic lạ) cùng hướng với Netflix CORE và eBay Minerva (Observability và monitoring, eBay 2026).
- Kiểu luật flatline (quá ít sự kiện) bắt được loại lỗi "im lặng" mà ngưỡng trên không bắt.
- So với Grab tách OLTP/OLAP cho đơn hàng (Grab 2022).
Liên quan
#Real-time analytics#CDC#Debezium#Kafka Connect#KSQL#Elasticsearch#ElastAlert#Aurora#Redshift#Business alerting
Được nhắc tới trong
Công ty (1)
Bài tóm tắt (1)