Quay lại bộ đề
Question #34 Topic 1
Your globally distributed auction application allows users to bid on items. Occasionally, users place identical bids at nearly identical times, and different application servers process those bids. Each bid event contains the item, amount, user, and timestamp. You want to collate those bid events into a single location in real time to determine which user bid first. What should you do?
Ứng dụng đấu giá phân tán toàn cầu của bạn cho phép người dùng đặt giá thầu cho các vật phẩm. Thỉnh thoảng, người dùng đặt các mức giá giống hệt nhau vào thời gian gần như trùng khớp và các máy chủ ứng dụng khác nhau xử lý các giá thầu đó. Mỗi sự kiện đặt thầu chứa thông tin về vật phẩm, số tiền, người dùng và dấu thời gian. Bạn muốn đối chiếu các sự kiện thầu này vào một nơi duy nhất theo thời gian thực để xác định người dùng nào đã đặt giá thầu trước. Bạn nên làm gì?
A
Create a file on a shared file and have the application servers write all bid events to that file. Process the file with Apache Hadoop to identify which user bid first.
Tạo một tệp trên một bộ lưu trữ tệp chia sẻ và yêu cầu các máy chủ ứng dụng ghi tất cả các sự kiện thầu vào tệp đó. Xử lý tệp bằng Apache Hadoop để xác định người dùng nào đã đặt giá thầu trước.
B
Have each application server write the bid events to Cloud Pub/Sub as they occur. Push the events from Cloud Pub/Sub to a custom endpoint that writes the bid event information into Cloud SQL.
Yêu cầu mỗi máy chủ ứng dụng ghi các sự kiện thầu vào Cloud Pub/Sub ngay khi chúng xảy ra. Đẩy (push) các sự kiện từ Cloud Pub/Sub đến một điểm cuối tùy chỉnh để ghi thông tin sự kiện thầu vào Cloud SQL.
C
Set up a MySQL database for each application server to write bid events into. Periodically query each of those distributed MySQL databases and update a master MySQL database with bid event information.
Thiết lập một cơ sở dữ liệu MySQL cho mỗi máy chủ ứng dụng để ghi các sự kiện thầu vào đó. Định kỳ truy vấn các cơ sở dữ liệu MySQL phân tán này và cập nhật cơ sở dữ liệu MySQL chính với thông tin sự kiện thầu.
D
Have each application server write the bid events to Google Cloud Pub/Sub as they occur. Use a pull subscription to pull the bid events using Google Cloud Dataflow. Give the bid for each item to the user in the bid event that is processed first.
Yêu cầu mỗi máy chủ ứng dụng ghi các sự kiện thầu vào Google Cloud Pub/Sub ngay khi chúng xảy ra. Sử dụng một đăng ký dạng kéo (pull subscription) để kéo các sự kiện thầu bằng Google Cloud Dataflow. Trao quyền thầu cho người dùng dựa trên sự kiện thầu được xử lý đầu tiên cho mỗi vật phẩm.
Giải thích & Tài liệu tham khảo
Để xử lý các sự kiện đặt giá thầu theo thời gian thực (real-time stream processing) từ một ứng dụng phân tán toàn cầu, mô hình tối ưu trên Google Cloud là sử dụng sự kết hợp giữa Cloud Pub/Sub và Cloud Dataflow.
- D. Gửi sự kiện thầu vào Cloud Pub/Sub và xử lý qua Dataflow: Cloud Pub/Sub đóng vai trò là một dịch vụ tiếp nhận thông điệp (ingestion) phân tán toàn cầu, có khả năng mở rộng cao để hứng các sự kiện thầu theo thời gian thực mà không bị nghẽn. Cloud Dataflow sau đó sử dụng cơ chế streaming pipeline kéo (pull) dữ liệu từ Pub/Sub, sắp xếp hoặc xử lý các sự kiện đặt thầu theo thời gian thực để xác định người đặt thầu đầu tiên một cách nhanh chóng và chính xác.
Các lựa chọn khác không phù hợp:
- A: Lưu file chia sẻ và chạy Hadoop là mô hình xử lý theo lô (batch processing), không đáp ứng được yêu cầu thời gian thực (real time) của ứng dụng đấu giá.
- B: Đẩy trực tiếp vào Cloud SQL có thể gây ra nghẽn cổ chai (bottleneck) ghi tại cơ sở dữ liệu quan hệ khi có số lượng lớn giao dịch đồng thời.
- C: Mô hình nhiều cơ sở dữ liệu MySQL phân tán và chạy định kỳ đồng bộ về MySQL Master không hỗ trợ xử lý thời gian thực và cực kỳ phức tạp để quản trị.
(Đáp án được gợi ý bởi AI)