Hız Sınırları

Google Ads API paketleri, istemci müşteri kimliği (CID) ve geliştirici jetonu başına saniye başına sorgu sayısı (QPS) ile hız sınırlaması ister. Bu, ölçümün hem müşteri kimlikleri hem de geliştirici jetonlarında bağımsız olarak zorunlu kılındığı anlamına gelir. Google Ads API, istekleri ölçmek ve uygun bir QPS sınırı belirlemek için bir Jeton Paketi algoritması kullanır. Bu nedenle tam sınır, herhangi bir zamanda toplam sunucu yüküne bağlı olarak değişiklik gösterir.

Hız sınırları uygulamanın amacı, bir kullanıcının Google Ads API sunucularını çok yüksek hacimli isteklerle yoğunluğa yol açarak (kasıtlı veya istemeden) bir kullanıcının diğer kullanıcılar için hizmeti kesintiye uğratmasını önlemektir.

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

Hem istek sayısını etkin bir şekilde azaltarak hem de QPS'yi istemci tarafından kısıtlayarak uygulamanızın kontrolünü elinize alabilir ve hız 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 Kısıtlama gibi Kurumsal Entegrasyon Kalıpları (EIP) kavramlarını öğrenmek, daha güçlü bir istemci uygulaması oluşturmanıza yardımcı olabilir.

Karmaşıklığa göre sıralanmış aşağıdaki önerilen uygulamalar, üstte daha basit stratejiler, sonrasında ise daha sağlam ancak gelişmiş mimariler yer almaktadır:

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

Hız sınırlarını aşmanın temel nedenlerinden biri, istemci uygulamasının çok sayıda paralel görev üretmesidir. Bir istemci uygulamasının sahip olabileceği paralel isteklerin sayısını sınırlamamakla birlikte, bu sınır geliştirici jetonu düzeyindeki Saniye Başına İstek sınırını kolayca aşabilir.

Tüm işlemlerde ve makinelerde istek yapacak olan toplam eşzamanlı görev sayısı için makul bir üst sınır belirlemeniz ve hız sınırını aşmadan işleme hızınızı optimize etmek için yukarı doğru ayarlamalar yapmanız önerilir.

Ayrıca, QPS'yi istemci tarafından kısıtlamayı da düşünebilirsiniz (Hızlandırma 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 gruplandırmayı deneyin. Bu, en çok MutateFoo çağrılarında geçerlidir. Örneğin, birden fazla AdGroupAd örneği için durumu güncelliyorsanız her AdGroupAd için MutateAdGroupAds kodunu bir kez çağırmak yerine MutateAdGroupAds öğesini bir kez çağırabilir ve birden fazla operations geçirebilirsiniz. Bazı ek örnekler için toplu işlemler rehberimize bakın.

İstekleri toplu olarak uygulama, toplam istek sayısını azaltır ve Dakika Başına İstek hız sınırını azaltır ancak tek bir hesapta çok sayıda işlem gerçekleştirirseniz Dakika Başına İşlem hız sınırını tetikleyebilir.

Kısıtlama ve hız sınırlayıcılar

İstemci uygulamanızdaki toplam iş parçacığı sayısını sınırlandırmanın yanı sıra istemci tarafında hız sınırlayıcılar da uygulayabilirsiniz. Bu, işlemlerinizdeki ve / veya kümelerinizdeki tüm iş parçacıklarının istemci tarafında belirli bir QPS sınırına tabi olmasını sağlayabilir.

Guava Hız Sınırlayıcı'yı inceleyebilir veya kümelenmiş bir ortam için kendi Jeton Paketi tabanlı algoritmanızı uygulayabilirsiniz. Örneğin, jetonlar oluşturabilir ve bunları veritabanı gibi paylaşılan bir işlem depolama alanında depolayabilirsiniz. Bu durumda her istemcinin, isteği işlemeden önce bir jeton edinmesi ve kullanması gerekir. Jetonlar kullanılmışsa istemcinin bir sonraki jeton grubu oluşturulana kadar beklemesi gerekir.

Sıraya ekleme

Mesaj sırası, işlem yükü dağıtımı için çözüm sağlamanın yanı sıra istek ve tüketici ücretlerini de kontrol eder. Kullanabileceğiniz çeşitli mesaj sırası seçenekleri vardır (bazıları açık kaynaklı, bazılarına özel) ve bunların çoğu farklı dillerde çalışabilir.

Mesaj sıralarını kullanırken, mesajları sıraya gönderen birden fazla üretici ve bu mesajları işleyen birden fazla tüketici olabilir. Kısıtlamalar, eşzamanlı tüketici sayısını sınırlandırarak tüketici tarafında uygulanabilir veya üreticiler ya da tüketiciler için hız sınırlayıcılar veya sınırlandırıcılar uygulayabilir.

Örneğin, bir ileti tüketicisi ücret sınırı hatasıyla karşılaşırsa, isteği yeniden denenmek üzere sıraya geri döndürebilir. Aynı zamanda bu tüketici, hatadan kurtulmaları için diğer tüm tüketicileri birkaç saniye süreyle işlemeyi duraklatmaları konusunda da bilgilendirebilir.