Hız sınırları

Google Ads API, hem müşteri kimliklerinde hem de Google Cloud projelerinde saniyedeki sorgu sayısı (QPS) ile sıklık sınırlaması uygular. Google Ads API, istekleri ölçmek ve uygun bir QPS sınırı belirlemek için jeton kovası algoritmasını kullanır. Bu nedenle, tam sınır herhangi bir zamanda genel sunucu yüküne bağlı olarak değişir.

Sıklık sınırları, bir kullanıcının Google Ads API sunucularını çok sayıda istekle (kasıtlı veya kasıtsız olarak) aşırı yükleyerek diğer kullanıcılar için hizmeti kesintiye uğratmasını önlemek amacıyla uygulanır.

Hız sınırlarını ihlal eden istekler şu hatayla reddedilir: RESOURCE_TEMPORARILY_EXHAUSTED.

Hem istek sayısını aktif olarak azaltarak hem de istemci tarafında saniyedeki sorgu sayısını sınırlayarak uygulamanızın kontrolünü elinize alabilir ve sıklık sınırlarını azaltabilirsiniz.

Hız sınırını aşma olasılığını azaltmanın çeşitli yolları vardır. Mesajlaşma, yeniden teslim ve sınırlama gibi Enterprise Integration Patterns (EIP) kavramlarına aşina olmak daha sağlam bir istemci uygulaması oluşturmanıza yardımcı olabilir.

Aşağıda, karmaşıklık düzeyine göre sıralanmış önerilen uygulamalar yer almaktadır. Daha basit stratejiler üstte, daha sağlam ancak karmaşık mimariler ise altta verilmiştir:

Eşzamanlı görevleri sınırlama

Hız sınırlarının aşılmasının temel nedenlerinden biri, istemci uygulamasının çok sayıda paralel görev oluşturmasıdır. Bir istemci uygulamasının sahip olabileceği paralel istek sayısını sınırlamasak da bu sayı, Google Cloud projesi düzeyindeki saniyedeki istek sayısı sınırını aşabilir.

İstek gönderecek eşzamanlı görevlerin toplam sayısı için (tüm işlemler ve makinelerde) makul bir üst sınır belirlemeniz ve sıklık sınırlamasını aşmadan işleme hızınızı optimize etmek için bu sınırı yukarı doğru ayarlamanız önerilir.

Ayrıca, istemci tarafında QPS'yi sınırlamayı da düşünebilirsiniz (Sınırlama ve hız sınırlayıcılar bölümüne göz atın).

İstekleri gruplama

Birden fazla işlemi tek bir istekte toplu olarak göndermeyi deneyin. Bu durum, çeşitli hizmetler için yapılan Mutate aramalarında daha çok geçerlidir. Örneğin, AdGroupAd öğesinin birden fazla örneğinin durumunu güncelliyorsanız MutateAdGroupAds öğesini bir kez çağırabilir ve her AdGroupAd için MutateAdGroupAds öğesini bir kez çağırmak yerine birden fazla operations öğesi iletebilirsiniz. Ek örnekler için toplu işlemlerle ilgili rehberimize göz atın.

İstekleri toplu işleme, toplam istek sayısını azaltır ve dakikada istek sayısı ile ilgili sıklık sınırlarını hafifletir. Ancak tek bir hesapta çok sayıda işlem gerçekleştirirseniz dakikada işlem sayısı sıklık sınırı tetiklenebilir.

Kısıtlama ve sıklık sınırlayıcılar

Uygulamanızdaki toplam iş parçacığı sayısını sınırlamanın yanı sıra istemci tarafında da sıklık sınırlayıcıları uygulayabilirsiniz. Bu, işlemleriniz ve / veya kümelerinizdeki tüm iş parçacıklarının istemci tarafında belirli bir QPS sınırı tarafından yönetilmesini sağlayabilir.

Guava Rate Limiter'ı inceleyebilir veya kümelenmiş bir ortam için kendi jeton kovası tabanlı algoritmanızı uygulayabilirsiniz. Örneğin, jeton oluşturup bunları veritabanı gibi paylaşılan bir işlemsel depolama alanında saklayabilirsiniz. Her istemcinin, isteği işlemeden önce bir jeton alıp kullanması gerekir. Jetonlar tükenmişse istemcinin bir sonraki jeton grubu oluşturulana kadar beklemesi gerekir.

Sıraya ekleme

İstek ve tüketici oranlarını kontrol ederken işlem yükü dağıtımı için mesaj sırası çözümü kullanılır. Açık kaynaklı ve tescilli olmak üzere çeşitli mesaj sırası seçenekleri vardır. Bunların çoğu farklı dillerle çalışabilir.

Mesaj kuyruklarını kullanırken kuyruğa mesaj gönderen birden fazla üreticiniz ve bu mesajları işleyen birden fazla tüketiciniz olabilir. Kısıtlamalar, eşzamanlı tüketici sayısı sınırlandırılarak tüketici tarafında uygulanabilir veya üreticiler ya da tüketiciler için hız sınırlayıcılar ya da kısıtlayıcılar uygulanabilir.

Örneğin, bir ileti tüketicisi hız sınırı hatasıyla karşılaşırsa bu tüketici, isteği yeniden denenmek üzere sıraya döndürebilir. Aynı zamanda, bu tüketici diğer tüm tüketicilere de hatadan kurtulmak için işlemeyi birkaç saniye duraklatmalarını bildirebilir.