Hız Sınırları
Google Ads API paketleri, müşteri müşteri kimliği (CID) ve geliştirici jetonu başına saniyedeki sorgu sayısı (QPS) ile hız sınırlaması isteğinde bulunur. Bu, ölçümün hem CID'ler hem de geliştirici jetonları üzerinde bağımsız olarak uygulandığı 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, kesin sınır herhangi bir zamanda genel sunucu yüküne bağlı olarak değişir.
Hız sınırları uygulamanın amacı, Google Ads API sunucularını çok sayıda istekle bunaltarak (kasıtlı veya bilinçli olarak) bir kullanıcının, hizmeti diğer kullanıcılara yönelik olarak kesintiye uğratmasını önlemektir.
Oran sınırlarını ihlal eden istekler şu hata mesajıyla reddedilir:
RESOURCE_TEMPORARILY_EXHAUSTED
.
Hem istek sayısını aktif olarak azaltarak hem de istemci tarafında QPS'yi kısıtlayarak uygulamanızın kontrolünü elinize alabilir ve hız sınırlarını azaltabilirsiniz.
Oran sınırını aşma olasılığını azaltmanın çeşitli yolları vardır. Mesajlaşma, Yeniden Teslim Etme ve Throttling gibi Kurumsal Entegrasyon Kalıpları (EIP) kavramlarını öğrenerek, daha sağlam bir istemci uygulaması geliştirebilirsiniz.
Aşağıda, karmaşıklığa göre sıralanmış olarak önerilen uygulamalar, üstte daha basit stratejiler, sonrasında ise daha güçlü ancak karmaşık mimariler bulunmaktadır:
- Eşzamanlı görevleri sınırlandırma
- İstekleri toplu olarak işleme
- Kısıtlama ve hız sınırlayıcılar
- Sıraya ekleme
Eşzamanlı görevleri sınırlama
Hız sınırlarını aşmanın temel nedenlerinden biri, istemci uygulamasının çok fazla sayıda paralel görev üretmesidir. Bir istemci uygulamasının sahip olabileceği paralel istek sayısını sınırlamasak da bu, geliştirici jetonu düzeyinde Saniye Başına İstek Sayısı sınırını kolayca aşabilir.
İstekte bulunacak olan eşzamanlı görevlerin toplam sayısı için makul bir üst sınır belirlemeniz (tüm süreçlerde ve makinelerde) ve hız sınırını aşmadan işleme hızınızı optimize edecek şekilde ayarlama yapmanız önerilir.
Ayrıca, QPS'yi istemci tarafında kısıtlamayı düşünebilirsiniz (Hız sınırlayıcılar ve hız sınırlamaya göz atın).
İstekleri gruplama
Birden fazla işlemi tek bir istek altında toplayabilirsiniz. Bu en çok MutateFoo
görüşmelerinde geçerlidir. Örneğin, birden fazla AdGroupAd
örneğinin durumunu güncelliyorsanız her AdGroupAd
için bir kez MutateAdGroupAds
çağırmak yerine MutateAdGroupAds
çağrısını bir kez yapabilir ve birden fazla operations
iletebilirsiniz. Bazı ek örnekler için toplu işlemler kılavuzumuza bakın.
Toplu istekler toplam istek sayısını azaltır ve Dakika Başına İstek Sayısı hız sınırını azaltır. Ancak tek bir hesap üzerinde çok sayıda işlem gerçekleştirirseniz Dakika Başına İşlem Sayısı 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ırlamaya ek olarak, 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ısı'nı 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. İsteği işlemeden önce her müşterinin bir jeton alması ve jetonu 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ünün dağıtılmasının yanı sıra istek ve tüketici oranlarını da kontrol eden bir çözümdür. Kullanabileceğiniz çeşitli ileti sırası seçenekleri vardır. Bazıları açık kaynaklı, bazıları özeldir ve bunların çoğu farklı dillerde çalışabilir.
Mesaj sıralarını kullanırken, mesajları sıraya aktaran birden fazla üreticiniz ve bu mesajları işleyen birden fazla tüketiciniz olabilir. Kısıtlamalar, tüketici tarafında eşzamanlı tüketici sayısı sınırlanarak tüketici tarafında uygulanabilir veya üreticiler ya da tüketiciler için hız sınırlayıcılar veya hızlandırıcılar uygulanabilir.
Örneğin, bir mesaj 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, hatadan kurtulmak için diğer tüm tüketicileri işlemeyi birkaç saniyeliğine duraklatmaları konusunda da bilgilendirebilir.