Selamlar,
Bazen farklı servislerden aynı servise ait api’ye erişme ihtiyacı oluyor veya aynı app içinden concurrent olarak erişim ihtiyacı oluyor. Bu durumda API’de ki rate limiting’i yönetmek için nasıl bir yöntem izliyorsunuz? Rate Limiting’de retry stratejisi çok fazla app’den gidildiği zaman çok sağlıklı olmayabiliyor. Bu konuda ki tecrübelerinizi merak ettim.
Benim aklıma aslında bir proxy server atmak geliyor. Proxy server üzerinde limitleri tanımlayıp ona gelen istekleri yönlendirerek yada bekleterek işlemleri yapmayı düşündüm(Evet bir dar boğaz oluşacak farkındayım) fakat sizlerin tecrübelerini merak ediyorum.
Benim sorunum bende ki ratelimiting için değildi anlatamadım sanırım orasını benim gittiğim servislerde ki limiting. Benim tarafımdan concurrent(uygulamanın içinde de async var farklı servislerden de istekler var) olarak bir servise istekler gidiyor. Bu durumda ki karşı serviste ki limiting’i manage etmek için aslında demek istedim.
Bana göre concurrent bir uygulamada istek yaptığın bir servisin rate limiti yönetmek inanılmaz zor olacaktır. Shopify bu konuda leaky bucket algorithm denilen bir algoritma kullanıyor.
.NET ile entegrasyon yazarken çok zorlanacağımızı öngörüp single thread bir uygulama yazdım ve her istek arasında belirtilen süre kadar sleep atarak çözdüm.
Naçizane tavsiyem senin de benzer bir çözüm uygulaman olacaktır.
Abi queue’ya atmak demek yanıt beklememek demek olacak kodun akışı sırasında bu isteğin yapılması ve sonucunun işleme etki etmesi gerekiyor o yüzden queue pek mümkün değil
İşte eğer UI’lık bir şey olsa sorun yok abi ama hesaplamalarda gereken bir şey olduğu için ne yazık ki callback mantığı oturmuyor benim senaryoya O result’un sonucunda gelen şeyi hesaplamaya katılması ve diğerlerine devam edilmesi gerekliliği var bende yoksa UI değerleri olsa ne rahat olur