Limity liczby żądań

Zasobniki zasobników Google Ads API dotyczące żądań ograniczania szybkości za pomocą zapytań na sekundę na identyfikator klienta (CID) i token programisty. Oznacza to, że pomiar wykorzystania limitu jest egzekwowany niezależnie zarówno w przypadku identyfikatorów klienta, jak i tokenów programisty. Interfejs Google Ads API używa algorytmu zasobnika tokenów do pomiaru żądań i ustalania odpowiedniego limitu zapytań na sekundę. Dlatego dokładny limit będzie się zmieniał w zależności od ogólnego obciążenia serwera w danym momencie.

Narzucanie limitów liczby żądań ma zapobiegać zakłócaniu działania usług u innych użytkowników przez (celowe lub niezamierzone) obciążanie serwerów interfejsu Google Ads API dużą liczbą żądań.

Żądania, które naruszają limity liczby żądań, będą odrzucane z komunikatem o błędzie: RESOURCE_TEMPORARILY_EXHAUSTED.

Możesz przejąć kontrolę nad aplikacją i łagodzić limity liczby żądań, aktywnie zmniejszając liczbę żądań i ograniczając zapytania na sekundę po stronie klienta.

Istnieje kilka sposobów na zmniejszenie prawdopodobieństwa przekroczenia limitu liczby żądań. Zapoznanie się z pojęciami związanymi z standardami integracji rozwiązań firmowych, takimi jak przesyłanie wiadomości, ponowne przesyłanie czy ograniczanie, może pomóc Ci utworzyć bardziej niezawodną aplikację kliencką.

Oto zalecane metody uporządkowane według złożoności. Na górze znajdują się prostsze strategie, a potem bardziej zaawansowane, ale zaawansowane architektury:

Ogranicz zadania równoległe

Jedną z głównych przyczyn przekraczania limitów liczby żądań jest to, że aplikacja kliencka generuje nadmierną liczbę równoległych zadań. Chociaż nie ograniczamy liczby równoległych żądań, które może przesłać aplikacja kliencka, może ona łatwo przekroczyć limit żądań na sekundę na poziomie tokena programisty.

Zalecamy wyznaczenie rozsądnej górnej granicy łącznej liczby równoczesnych zadań, które będą wykonywać żądania (dla wszystkich procesów i maszyn) oraz zwiększenie tej przepustowości bez przekraczania limitu liczby żądań.

Możesz też rozważyć ograniczanie liczby zapytań na sekundę po stronie klienta (zapoznaj się z ograniczeniami i ograniczeniami liczby żądań).

Grupowanie żądań

Rozważ zgrupowanie wielu operacji w jednym żądaniu. Dotyczy to głównie wywołań funkcji MutateFoo. Jeśli np. aktualizujesz stan wielu wystąpień AdGroupAd – zamiast wywoływać metodę MutateAdGroupAds raz dla każdego elementu AdGroupAd, możesz wywołać metodę MutateAdGroupAds raz i przekazać wiele wartości operations. Więcej przykładów znajdziesz we wskazówkach dotyczących operacji zbiorczych.

Żądania zbiorcze zmniejszają łączną liczbę żądań i zmniejszają limit żądań na minutę, ale mogą aktywować limit liczby operacji na minutę, jeśli wykonujesz dużą liczbę operacji na jednym koncie.

Ograniczanie

Oprócz ograniczenia łącznej liczby wątków w aplikacji klienckiej możesz też wdrożyć ograniczniki liczby żądań po stronie klienta. Dzięki temu możesz mieć pewność, że wszystkie wątki w Twoich procesach lub klastrach będą podlegały określonym limitom zapytań na sekundę po stronie klienta.

Możesz wypróbować ograniczenie liczby żądań Guava lub zaimplementować własny, oparty na zasobniku tokenów algorytm dla środowiska klastra. Możesz na przykład wygenerować tokeny i przechowywać je we współdzielonej pamięci transakcyjnej, takiej jak baza danych. Każdy klient będzie musiał pozyskać i wykorzystać token, zanim przetworzy żądanie. W przypadku wykorzystania tokenów klient musiał poczekać, aż zostanie wygenerowana kolejna porcja tokenów.

Kolejkowanie

Kolejka wiadomości to rozwiązanie do dystrybucji obciążenia operacji, przy jednoczesnym kontroli stawek żądań i klientów. Dostępnych jest wiele opcji kolejek wiadomości – niektóre są typu open source, a inne zastrzeżone – a wiele z nich obsługuje różne języki.

Podczas korzystania z kolejek wiadomości może się zdarzyć, że wielu producentów będzie przesyłać wiadomości do kolejki, a wielu konsumentów będzie je przetwarzać. Przepustnice można wdrożyć po stronie konsumenta, ograniczając liczbę jednoczesnych konsumentów albo wdrażając je po stronie producentów lub konsumentów.

Jeśli na przykład konsument napotka błąd limitu liczby żądań, może zwrócić żądanie do kolejki w celu ponowienia próby. Jednocześnie klient może powiadomić pozostałych klientów, aby wstrzymali przetwarzanie na określoną liczbę sekund, aby naprawić błędy.