Auditing content features in FollowFeed

Bài tóm tắt LinkedIn 2019 3. Quy mô lớn Độ khó: Trung bình

LinkedIn · 2019 · 3. Quy mô lớn · Độ khó: Trung bình — bài gốc

Bối cảnh

  • Hơn 80% feed là nội dung organic, đều do FollowFeed phục vụ. Activity và feature (ngôn ngữ, hashtag, vị trí tác giả...) cùng vào FollowFeed qua Kafka; storage node partition theo tác giả, chỉ giữ feature của activity mình index.
  • Một comment nằm ở node khác với bài gốc, nên feature của bài gốc phải được lan sang node chứa comment, dựa trên Activity Graph (LinkedIn 2017).
  • Đội AI thỉnh thoảng báo thiếu feature lúc ranking. Ví dụ: activity "Like" chưa được đưa vào Activity Graph nên feature tổ tiên không được lan, lỗi tồn tại một thời gian mới phát hiện. Không có cách đo lỗi lan rộng đến đâu.

Thay đổi chính

  • Định nghĩa feature coverage: tỉ lệ entity có feature trong sự kiện ingest và cũng có feature lúc chấm điểm.
  • Feature đã ingest được ETL từ Kafka sang HDFS (Gobblin). Response kèm feature được lấy từ broker dark canary (không phục vụ traffic thật) để không thêm tải lên node thật, và chỉ lấy mẫu 0,1% vì có hàng triệu response mỗi giây.
  • Job Spark hằng ngày so response của một ngày với 30 ngày sự kiện ingest; feature có lúc ingest mà thiếu lúc chấm điểm thì tính là miss.
  • Dashboard trên Raptor; coverage được đưa vào ThirdEye để bắt bất thường.

Bài học cho SWE

  • Khi dữ liệu phải lan qua nhiều partition, thiếu dữ liệu là lỗi im lặng; cần một phép đo đối chiếu đầu vào và đầu ra, không chờ metric sản phẩm rớt.
  • Đo bằng bản sao (dark canary, lấy mẫu, offline) để phép đo không đè lên đường phục vụ.

Liên quan