How we build a robust analytics platform using Spark, Kafka and Cassandra
Bài tóm tắt Walmart 2018 2. Tăng trưởng Độ khó: Dễ
Walmart · 2018 · 2. Tăng trưởng · Độ khó: Dễ — bài gốc
Bài ngắn (3 phút đọc), mô tả kiến trúc ở mức khối. Site chặn crawler; ghi chú viết từ bản đọc qua trình duyệt.
Bối cảnh
- Người dùng nghiệp vụ cần dashboard mức độ còn hàng (item availability) tổng hợp ở các địa điểm then chốt, không theo dõi được từng SKU.
- Dữ liệu tồn kho đổi liên tục theo đơn hàng, tới khoảng 100 MB/giây (2018).
Thay đổi chính
- Kafka nhận cập nhật availability do ứng dụng quản lý tồn kho phát ra.
- Spark Streaming đọc Kafka, xử lý và upsert vào Cassandra: cần kho chịu lượng upsert lớn mà đọc vẫn nhanh. Theo Walmart, RDBMS lưu được nhiều nhưng không cho upsert và đọc đủ ổn định; team đã có kinh nghiệm tốt với Cassandra.
- Spark batch mỗi 6 giờ đọc toàn bảng Cassandra, join nguồn khác, gộp theo nhiều cột, ghi Parquet vào Swift storage.
- Bảng Hive trên Parquet, Spark SQL Thrift server để Tableau đọc.
Vì sao
- Một engine (Spark) cho cả nhánh stream lẫn batch; Kafka và Cassandra đều phân tán, chịu lỗi.
Bài học cho SWE
- Dạng lambda gọn: stream giữ trạng thái mới nhất trong kho chịu ghi, batch định kỳ dựng bảng gộp cho BI (Pipeline dữ liệu và analytics).
- Chọn kho cho nhánh ghi theo mẫu truy cập (upsert dày + quét toàn bảng định kỳ) (Chọn database theo workload).
- Bài không nói về xử lý trùng, trễ hay lỗi giữa hai nhánh; xem Allegro 2024 cho lý do chọn batch để kiểm được tính đầy đủ.
Liên quan
Được nhắc tới trong
Công ty (1)
Bài tóm tắt (1)