Rate Limiting
Rate Limiting, bir API veya bir servisin, bir kullanıcının belli bir süre içinde yapabileceği istek sayısını sınırlandırmak için kullanılan bir yöntemdir. Bu yöntem, bir uygulamanın veya hizmetin aşırı yüklenmesini önlemek için kullanılabilir.
Go dilinde, Rate Limiting yapmak için time
paketi kullanılabilir. Bu paket, belirli bir zaman aralığı boyunca belirli bir eylemde bulunmak için beklenmesi gereken süreyi hesaplamak için kullanılır.
Aşağıdaki örnekte, time.Ticker
ve time.Sleep
kullanarak bir Rate Limiting örneği gösterilmektedir:
Bu örnekte, requests
adlı bir channel
oluşturulur ve içine 5 adet sayı eklenir. Daha sonra, limiter
adlı bir time.Ticker
oluşturulur ve 200 milisaniyelik bir süreyle sınırlandırılır.
Daha sonra, requests
channel
'ındaki her bir istek için bir goroutine
başlatılır ve her bir istek önce limiter
channel
üzerinden bekletilir. Bu sayede, aynı anda en fazla 1 istek işlenebilir.
Örneğin, eğer requests
channel
'ındaki 5 isteğin arasında hiç bekleme yapmadan hemen işlem yapılırsa, tüm istekler hızlı bir şekilde işlenecektir. Ancak, limiter
channel
'ın sağladığı sınırlama nedeniyle, her bir istek arasında 200 milisaniye beklenmesi sağlanır.
Bu şekilde, Rate Limiting yaparak isteklerin belli bir hızda işlenmesi sağlanır.
Soru
Aşağıdaki kodda, limiter
channel
üzerinden neden range
döngüsü kullanılır?
A) Daha fazla istek eklendiğinde range
döngüsü, sınırlı sayıda istek kabul etmek için kullanılır.
B) range
döngüsü, requests
channel
'ındaki tüm istekleri tek tek işlemek için kullanılır.
C) range
döngüsü, sınırlı hızda istek işlemek için kullanılır.
D) range
döngüsü, sınırsız sayıda istek işlemek için kullanılır.
Last updated