Để ra mắt tính năng quảng cáo trên UberEats, đội ngũ kỹ sư Uber phải giải quyết các bài toán liên quan đến ngành quảng cáo như hệ thống đấu giá, phân bổ hay tổng hợp báo cáo doanh thu. Để làm được điều này, đội kỹ sư Uber xác định việc đầu tiên và quan trọng nhất là xây dựng hệ thống xử lý exactly-once events với độ trễ “near real-time”.
Hiểu một cách đơn giản, mỗi quảng cáo được hiển thị sẽ có event tương ứng cho mỗi hành động của người dùng, như impression hay click. Nhiệm vụ của hệ thống là tổng hợp, phân bổ và quản lý các event do người dùng tạo ra khi tương tác với quảng cáo trên ứng dụng Uber.
Để đạt tính chính xác tuyệt đối (100%) theo quy định về xử lý dữ liệu liên quan đến hoạt động quảng cáo của Uber, đội kỹ sư tại đây đã thiết kế một mô hình kiến trúc dựa trên 4 công nghệ mã nguồn mở: Stream Processing với Apache Flink, Message Queues với Apache Kafka, Real-Time Analytics với Apache Pinot và Data Warehousing với Apache Hive.
Việc xây dựng hệ thống nhằm xử lý exactly-once events được chia thành nhiều module nhỏ, tối ưu về mặt vận hành và chức năng như Data Cleansing, Aggregation, Record UUID Generation. Hiện tại, hệ thống này đang xử lý hàng trăm triệu event quảng cáo mỗi tuần, và con số này vẫn còn tiếp tục gia tăng.
Để tìm hiểu thêm về thách thức, lý do cũng như quá trình xây dựng hệ thống này, mời bạn đọc bài viết bên dưới.