Ograniczenia liczby żądań

Interfejs Google Ads API łączy żądania dotyczące ograniczenia liczby żądań na sekundę do zapytań o identyfikatory klienta i identyfikatora programisty, co oznacza, że pomiar jest egzekwowany niezależnie od ID klienta i tokena dewelopera. Interfejs API Google Ads używa algorytmu zasobnika tokena do rejestrowania żądań i określania odpowiedniego limitu zapytań na sekundę, więc dokładny limit będzie różny w zależności od ogólnego obciążenia serwera w danym momencie.

Nakładanie ograniczeń na liczbę użytkowników ma zapobiegać zakłócaniu działania usługi przez innych użytkowników (umyślnie lub przypadkowo) i zatwierdzaniu serwerów interfejsu Google Ads API dużą liczbą żądań.

Żądania, które naruszają limity ruchu, zostaną odrzucone i pojawią się błędy: RESOURCE_TEMPORARILY_EXHAUSTED.

Możesz kontrolować swoją aplikację i ograniczyć liczbę żądań, ograniczając liczbę żądań i ograniczając zapytań na sekundę po stronie klienta.

Istnieje kilka sposobów na zmniejszenie prawdopodobieństwa przekroczenia limitu częstotliwości. Poznanie koncepcji wzorców integracji dla przedsiębiorstw (EIP), takich jak przesyłanie wiadomości, ponowne dostarczanie czy ograniczanie, może pomóc Ci w utworzeniu bardziej wydajnej aplikacji klienckiej.

Poniżej znajdziesz sprawdzone metody uporządkowane według złożoności. U góry znajdują się prostsze strategie, a bardziej wyrafinowane, ale bardziej wyrafinowane architektury:

Ogranicz zadania równoczesne

Jedną z głównych przyczyn przekraczania limitów jest to, że aplikacja kliencka generuje zbyt wiele równoczesnych zadań. Nie ograniczamy liczby jednoczesnych żądań, które może mieć aplikacja kliencka, ale może łatwo przekroczyć limit żądań na sekundę na poziomie tokena dewelopera.

Najlepiej jest ustawić rozsądną górną granicę całkowitej liczby równoczesnych zadań, które będą wysyłać żądania (we wszystkich procesach i maszynach), a także skorygować większą liczbę żądań, aby nie przekroczyć limitu limitu.

Możesz też użyć ograniczania zapytań na sekundę po stronie klienta (zobacz Ograniczanie lub ograniczanie liczby żądań).

Żądania grupowania

Rozważ pogrupowanie wielu operacji w jedno żądanie. Ma to zastosowanie do połączeń MutateFoo. Jeśli na przykład aktualizujesz stan wielu wystąpień AdGroupAd, zamiast wywoływać element MutateAdGroupAds raz dla każdego AdGroupAd, możesz wywołać raz MutateAdGroupAds i przekazać wiele operations. Kilka przykładów znajdziesz w naszych wskazówkach dotyczących działań zbiorczych.

Grupowanie żądań zmniejsza łączną liczbę żądań i minimalizuje limit częstotliwości żądań na minutę, ale może spowodować ograniczenie liczby operacji na minutę, jeśli na jednym koncie zostanie wykonana duża liczba operacji.

Ograniczanie i ograniczanie szybkości

Oprócz ograniczenia łącznej liczby wątków w aplikacji klienckiej możesz też zaimplementować ograniczenia po stronie klienta. Dzięki temu wszystkie wątki w procesach lub klastrach będą podlegać konkretnemu limitowi zapytań na sekundę po stronie klienta.

Możesz wypróbować ogranicznik liczby Guava lub wprowadzić własny algorytm oparty na zasobniku tokenów dla środowiska grupowanego. Możesz na przykład generować tokeny i przechowywać je w współdzielonym miejscu na dane transakcji, takim jak baza danych, a każdy klient musi uzyskać i przetworzyć token, zanim przetworzy żądanie. Jeśli tokeny zostały wykorzystane, klient będzie musiał poczekać na wygenerowanie kolejnej grupy tokenów.

Kolejkowanie

Kolejka wiadomości to rozwiązanie do dystrybucji obciążenia operacyjnego, które umożliwia kontrolowanie stawek i żądań klientów. Dostępnych jest wiele opcji kolejek wiadomości – niektóre typu open source, niektóre zastrzeżone, z których wiele działa z różnymi językami.

Gdy korzystasz z kolejek wiadomości, kilku producentów może przekazywać wiadomości do kolejki, a wielu konsumentów je przetwarza. Ograniczenie można wdrożyć po stronie klienta, ograniczając liczbę jednoczesnych konsumentów albo wdrażając ograniczenia albo ograniczenia dla producentów albo konsumentów.

Jeśli na przykład klient napotka błąd związany z limitem liczby żądań, może on zwrócić żądanie do kolejki, aby spróbować ponownie. Możliwy jest również, że konsument może poinformować wszystkich pozostałych konsumentów o wstrzymaniu przetwarzania na kilka sekund, aby mógł naprawić błąd.