Rollup Pipeline
Định nghĩa
Rollup Pipeline là pipeline gom nhiều event chi tiết thành các aggregate nhỏ hơn để query nhanh, giảm storage/read cost và giữ lại khả năng tính lại từ dữ liệu gốc khi cần.
Cách hiểu bằng lời của tôi
Raw event là nguồn sự thật nhưng đọc trực tiếp rất đắt. Rollup tạo checkpoint: thay vì mỗi lần đọc phải scan toàn bộ event, hệ thống chỉ đọc aggregate đã tính đến một timestamp, rồi xử lý phần delta còn lại nếu cần.
Cơ chế
raw events
-> bucket theo time/counter key
-> rollup event báo counter cần aggregate
-> batch worker đọc event mới từ last_rollup_timestamp
-> ghi aggregate vào durable store
-> cache aggregate nóng để đọc nhanhPattern từ nguồn Netflix
- Rollup event nhẹ chỉ báo “counter này cần xử lý”, không mang toàn bộ raw data.
- Counter cùng key được route ổn định vào queue để giảm duplicate work.
- Nhiều event cho cùng counter được consolidate trong một window.
- Batch size thay đổi theo load và cardinality để tránh làm quá tải datastore.
- Low-cardinality counter có thể được rollup liên tục; high-cardinality counter cần chính sách re-queue tiết kiệm hơn.
Trade-off
- Count/read nhanh hơn nhưng có độ trễ hội tụ.
- Nếu worker crash, một số signal rollup có thể mất; hệ thống cần operation sau đó kích hoạt rollup lại.
- Cần chọn window bất biến để tránh aggregate trên dữ liệu còn thay đổi.