Rate limiting
Rate Limiting, bir API və ya xidmətin istifadəçinin müəyyən bir zaman ərzində edə biləcəyi sorğu sayını məhdudlaşdırmaq üçün istifadə edilən bir metoddur. Bu metod, tətbiqin və ya xidmətin həddindən artıq yüklənməsinin qarşısını almaq üçün istifadə oluna bilər.
Go dilində, Rate Limiting etmək üçün time
paketi istifadə oluna bilər. Bu paket, müəyyən bir zaman çərçivəsində müəyyən bir əməliyyatın yerinə yetirilməsi üçün nə qədər gözləmək lazım olduğunu hesablamaq üçün istifadə edilir.
Aşağıdakı nümunədə, time.Ticker
və time.Sleep
istifadə edilərək Rate Limiting nümunəsi göstərilir:
Bu nümunədə, requests
adlı bir kanal yaradılır və içinə 5 sorğu əlavə edilir. Daha sonra limiter
adlı bir time.Ticker
yaradılır və 200 millisaniyəlik bir müddətlə məhdudlaşdırılır.
Daha sonra, requests
kanalındakı hər bir sorğu məhdudlaşdırıcıya uyğun olaraq işlədir. Hər sorğu arasında 200 millisaniyəlik fasilə ilə işlənməsi təmin edilir.
Bu şəkildə, Rate Limiting istifadə edərək sorğular müəyyən bir sürətlə işlənir.