Giới hạn số lần yêu cầu
Nhóm API Google Ads yêu cầu giới hạn số lượng yêu cầu theo truy vấn mỗi giây (QPS) cho mỗi mã khách hàng ứng dụng (CID) và mã của nhà phát triển, nghĩa là việc đo lường được thực thi một cách độc lập trên cả mã khách hàng và mã của nhà phát triển. API Google Ads sử dụng thuật toán Nhóm mã thông báo để đo lường các yêu cầu và xác định giới hạn QPS phù hợp. Vì vậy, giới hạn chính xác sẽ thay đổi tuỳ thuộc vào tổng tải trọng của máy chủ tại một thời điểm bất kỳ.
Mục đích của việc áp dụng giới hạn số lượng yêu cầu là để ngăn một người dùng làm gián đoạn dịch vụ của những người dùng khác bằng cách làm choáng ngợp các máy chủ API Google Ads bằng một số lượng lớn yêu cầu.
Những yêu cầu vi phạm giới hạn số lượng yêu cầu sẽ bị từ chối kèm theo lỗi:
RESOURCE_TEMPORARILY_EXHAUSTED
.
Bạn có thể kiểm soát ứng dụng của mình và giảm thiểu giới hạn số lượng bằng cách chủ động giảm số lượng yêu cầu và điều tiết QPS từ phía máy khách.
Có một số cách để giảm khả năng vượt quá giới hạn tốc độ. Việc làm quen với các khái niệm về Mẫu tích hợp doanh nghiệp (EIP) như Nhắn tin, Phân phối lại và Điều tiết có thể giúp bạn xây dựng một ứng dụng khách mạnh mẽ hơn.
Các phương pháp được đề xuất sau đây được sắp xếp theo độ phức tạp, với các chiến lược đơn giản hơn ở trên cùng và các cấu trúc mạnh mẽ nhưng tinh vi hơn ở phía sau:
Giới hạn các tác vụ đồng thời
Một nguyên nhân gốc rễ của việc vượt quá giới hạn số lượng yêu cầu là do ứng dụng khách đang tạo ra quá nhiều tác vụ song song. Mặc dù chúng tôi không giới hạn số lượng yêu cầu song song mà một ứng dụng khách có thể có, nhưng điều này có thể dễ dàng vượt quá giới hạn Số yêu cầu mỗi giây ở cấp mã thông báo dành cho nhà phát triển.
Bạn nên đặt giới hạn trên hợp lý cho tổng số tác vụ đồng thời sẽ đưa ra yêu cầu (trên tất cả các quy trình và máy) và điều chỉnh tăng lên để tối ưu hoá công suất mà không vượt quá giới hạn tốc độ.
Hơn nữa, bạn có thể cân nhắc việc điều tiết QPS từ phía máy khách (xem phần Điều tiết và giới hạn tốc độ).
Yêu cầu gộp nhóm
Cân nhắc phân lô nhiều hoạt động thành một yêu cầu duy nhất. Điều này áp dụng nhất cho các lệnh gọi MutateFoo
. Ví dụ: nếu bạn đang cập nhật trạng thái cho nhiều thực thể của AdGroupAd
– thay vì gọi MutateAdGroupAds
một lần cho mỗi AdGroupAd
, bạn có thể gọi MutateAdGroupAds
một lần và truyền nhiều operations
. Hãy tham khảo hướng dẫn về thao tác hàng loạt của chúng tôi để xem thêm một số ví dụ.
Mặc dù các yêu cầu phân lô giúp giảm tổng số yêu cầu và giảm giới hạn tốc độ Yêu cầu mỗi phút, nhưng việc này có thể kích hoạt giới hạn tốc độ Thao tác mỗi phút nếu bạn thực hiện nhiều thao tác trên một tài khoản.
Điều tiết và giới hạn tốc độ
Ngoài việc giới hạn tổng số luồng trong ứng dụng khách, bạn cũng có thể triển khai các giới hạn số lượng yêu cầu ở phía máy khách. Việc này có thể đảm bảo tất cả các luồng trong các quy trình và / hoặc cụm của bạn đều chịu sự điều chỉnh của một giới hạn QPS cụ thể từ phía máy khách.
Bạn có thể xem Trình giới hạn tốc độ của Guava hoặc triển khai thuật toán dựa trên Bộ chứa mã thông báo của riêng mình cho một môi trường phân cụm. Ví dụ: bạn có thể tạo mã thông báo và lưu trữ các mã đó trong bộ nhớ giao dịch dùng chung, chẳng hạn như cơ sở dữ liệu, đồng thời mỗi ứng dụng sẽ phải thu thập và sử dụng mã thông báo trước khi xử lý yêu cầu. Nếu dùng hết mã thông báo, ứng dụng sẽ phải đợi cho đến khi lô mã thông báo tiếp theo được tạo.
Danh sách chờ
Hàng đợi thông báo là giải pháp để phân bổ tải hoạt động, đồng thời kiểm soát yêu cầu và mức giá của người tiêu dùng. Hiện có một số tuỳ chọn hàng đợi thông báo (một số là nguồn mở, một số thuộc quyền sở hữu riêng) và nhiều tuỳ chọn trong số đó có thể hoạt động với nhiều ngôn ngữ.
Khi sử dụng hàng đợi thông báo, bạn có thể có nhiều nhà sản xuất đẩy thông báo vào hàng đợi và nhiều người tiêu dùng sẽ xử lý các thông báo đó. Bạn có thể triển khai cơ chế điều tiết ở phía người tiêu dùng bằng cách giới hạn số lượng người tiêu dùng đồng thời hoặc triển khai bộ giới hạn số lượng yêu cầu hoặc điểm điều tiết cho người sản xuất hoặc người tiêu dùng.
Ví dụ: nếu người tiêu dùng thông báo gặp lỗi giới hạn mức giá, thì người tiêu dùng đó có thể trả yêu cầu về hàng đợi để thử lại. Đồng thời, người tiêu dùng đó cũng có thể thông báo cho tất cả các thực thể tiêu thụ khác tạm dừng xử lý trong một vài giây để khắc phục lỗi.