Quay lại bộ đề
Question #283 Topic 1
You are operating a streaming Cloud Dataflow pipeline. Your engineers have a new version of the pipeline with a different windowing algorithm and triggering strategy. You want to update the running pipeline with the new version. You want to ensure that no data is lost during the update. What should you do?
Bạn đang vận hành một pipeline Cloud Dataflow phát trực tuyến (streaming). Các kỹ sư của bạn có một phiên bản mới của pipeline với thuật toán cửa sổ (windowing algorithm) và chiến lược kích hoạt (triggering strategy) khác nhau. Bạn muốn cập nhật pipeline đang chạy bằng phiên bản mới. Bạn muốn đảm bảo không bị mất dữ liệu trong quá trình cập nhật. Bạn nên làm gì?
A
Update the Cloud Dataflow pipeline inflight by passing the --update option with the --jobName set to the existing job name
Cập nhật trực tiếp pipeline Cloud Dataflow đang chạy bằng cách truyền tùy chọn --update với --jobName được đặt thành tên job hiện có.
B
Update the Cloud Dataflow pipeline inflight by passing the --update option with the --jobName set to a new unique job name
Cập nhật trực tiếp pipeline Cloud Dataflow đang chạy bằng cách truyền tùy chọn --update với --jobName được đặt thành một tên job duy nhất mới.
C
Stop the Cloud Dataflow pipeline with the Cancel option. Create a new Cloud Dataflow job with the updated code
Dừng pipeline Cloud Dataflow bằng tùy chọn Cancel. Tạo một job Cloud Dataflow mới với mã nguồn đã cập nhật.
D
Stop the Cloud Dataflow pipeline with the Drain option. Create a new Cloud Dataflow job with the updated code
Dừng pipeline Cloud Dataflow bằng tùy chọn Drain. Tạo một job Cloud Dataflow mới với mã nguồn đã cập nhật.
Giải thích & Tài liệu tham khảo
Khi cập nhật một pipeline Dataflow streaming đang hoạt động bằng một mã nguồn mới có thuật toán cửa sổ (windowing) hoặc trigger khác nhau:
- D (Dừng pipeline bằng tùy chọn Drain và tạo một job Dataflow mới với mã nguồn cập nhật) là phương án an toàn nhất. Thao tác Drain yêu cầu Dataflow ngừng nhận dữ liệu mới nhưng vẫn tiếp tục xử lý và ghi nốt toàn bộ dữ liệu đang nằm trong hàng đợi (in-flight data) trước khi tắt hẳn cụm. Việc này đảm bảo không có dữ liệu nào bị mất. Sau khi job cũ dừng hoàn toàn, ta có thể khởi chạy job mới với logic cửa sổ mới.
- A & B sai: Việc cập nhật trực tiếp (in-flight update) bằng tùy chọn
--updateyêu cầu cấu trúc đồ thị pipeline (pipeline graph) và các định nghĩa cửa sổ phải tương thích nhau. Nếu thay đổi thuật toán cửa sổ và chiến lược trigger, Dataflow sẽ từ chối cập nhật trực tiếp vì không thể ánh xạ trạng thái (state) cũ sang logic mới. - C sai: Tùy chọn Cancel sẽ lập tức dừng tất cả các tiến trình xử lý và hủy bỏ bất kỳ dữ liệu in-flight nào chưa kịp ghi nhận, dẫn đến mất dữ liệu.
(Đáp án được gợi ý bởi AI)