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