Limity szybkości

Segment interfejsu Google Ads API wysyła żądania ograniczenia liczby zapytań na sekundę według identyfikatora klienta (CID) i tokena programisty. Oznacza to, że pomiar wykorzystania pomiaru jest egzekwowany niezależnie od identyfikatorów klienta i tokenów programisty. Interfejs Google Ads API korzysta z algorytmu zasobnika tokenów do pomiaru liczby żądań i określania odpowiedniego limitu zapytań na sekundę, więc dokładny limit może się różnić w zależności od ogólnego obciążenia serwera w danym momencie.

Wprowadzenie limitów liczby żądań ma na celu zapobieganie zakłócaniu działania usług innym użytkownikom przez (celowe lub niezamierzone) przeciążanie serwerów Google Ads API przez dużą liczbę żądań.

Prośby, które naruszają limity liczby żądań, będą odrzucane z powodu błędu: RESOURCE_TEMPORARILY_EXHAUSTED.

Możesz przejąć kontrolę nad aplikacją i ograniczyć limity liczby żądań przez aktywne zmniejszanie liczby żądań i ograniczanie zapytań na sekundę po stronie klienta.

Istnieje kilka sposobów na to, aby ograniczyć ryzyko przekroczenia limitu. Zapoznanie się ze wzorcami integracji przedsiębiorstw (EIP), takimi jak przesyłanie wiadomości, ponowne dostarczanie i ograniczanie, może pomóc w utworzeniu bardziej niezawodnej aplikacji klienckiej.

Poniżej znajdziesz zalecane metody uporządkowane według złożoności, prostsze strategie na górze, a na końcu bardziej rozbudowane, ale zaawansowane architektury:

Ogranicz liczbę równoczesnych zadań

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 mieć aplikacja kliencka, może to łatwo przekroczyć limit żądań na sekundę na poziomie tokena programisty.

Zalecamy ustawienie rozsądnej górnej granicy łącznej liczby równoczesnych zadań, które będą wykonywać żądania (na wszystkich procesach i maszynach), oraz zwiększenie jej w celu optymalizacji przepustowości bez przekraczania limitu liczby żądań.

Możesz też ograniczyć liczbę zapytań na sekundę po stronie klienta (zapoznaj się z artykułem Ograniczanie liczby zapytań i ograniczeń liczby żądań).

Żądania wsadowe

Rozważ zgrupowanie wielu operacji w jednym żądaniu. Dotyczy to najbardziej wywołań typu MutateFoo. Jeśli np. aktualizujesz stan wielu instancji AdGroupAd – zamiast wywoływać MutateAdGroupAds raz na każde AdGroupAd, możesz wywołać funkcję MutateAdGroupAds raz i przekazać wiele operations. Więcej przykładów znajdziesz w wskazówkach dotyczących operacji wsadowych.

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

Ograniczanie możliwości

Oprócz ograniczenia łącznej liczby wątków w aplikacji klienckiej możesz też zaimplementować ograniczenia liczby żądań po stronie klienta. Dzięki temu wszystkie wątki w procesach lub klastrach są objęte określonym limitem zapytań na sekundę po stronie klienta.

Możesz sprawdzić ogranicznik szybkości Guava lub wdrożyć własny zasobnik tokenów dla środowiska klastrowanego. Można na przykład wygenerować tokeny i zapisać je we współdzielonej pamięci transakcyjnej, takiej jak baza danych, a każdy klient musiałby uzyskać i wykorzystać token, zanim przetworzy żądanie. Gdyby tokeny zostały wykorzystane, klient musiałby poczekać na wygenerowanie kolejnej partii tokenów.

Kolejkowanie

Kolejka wiadomości to rozwiązanie do rozkładania obciążenia operacji, które jednocześnie pozwala kontrolować współczynniki żądań i konsumentów. Dostępnych jest wiele opcji kolejki wiadomości – niektóre są udostępniane na zasadach open source, a inne – i wiele z nich działa w różnych językach.

Podczas korzystania z kolejek wiadomości wielu producentów może przekazywać wiadomości do kolejki i przetwarzać je przez wielu konsumentów. Ograniczanie liczby żądań można wdrożyć po stronie konsumenta, ograniczając liczbę równoczesnych konsumentów, albo zastosować ograniczenia liczby żądań dla producentów lub konsumentów.

Jeśli na przykład konsument napotka błąd limitu liczby żądań, może zwrócić żądanie do kolejki, aby spróbować ponownie. Jednocześnie konsument może też powiadomić wszystkich pozostałych konsumentów o wstrzymaniu przetwarzania na kilka sekund w celu naprawienia błędu.