GoDasturchi
Building a Token Bucket: Refilling Tokens

Building a Token Bucket: Refilling Tokens

Token savatini qurish: tokenlarni to'ldirish

Oldingi darsdagi savat faqat bo'shashi mumkin edi — hech qachon to'lmaydi. Haqiqiy rate limiter esa vaqt o'tishi bilan tokenlarni qayta to'ldirishi kerak, aks holda bir marta tugagan klient abadiy bloklanib qoladi. Eng sodda qadam — tokenlarni qo'lda to'ldiradigan metod qo'shish, sig'imdan oshib ketmasligini ta'minlab:

example.go
func (b *TokenBucket) Refill(n int) {
    b.tokens += n
    if b.tokens > b.capacity {
        b.tokens = b.capacity
    }
}

Bu — Cache Eviction darsidagi TTL g'oyasiga o'xshaydi: xuddi eskirgan yozuvlarni tozalash kerak bo'lganidek, bu yerda ham holatni (tokens) tashqi hodisa (vaqt o'tishi) asosida yangilab turish kerak. if b.tokens > b.capacity tekshiruvi — savat haqiqiy sig'imidan oshib ketmasligini kafolatlaydigan chegara sharti.

>_ Exercise

Oldingi darsdagi TokenBucketga Refill(n int) metodini qo'shing. U tokensni nga oshiradi, lekin natija capacitydan oshib ketsa, tokensni capacityga tenglashtiradi.

Stuck? Reveal a hint to help you.

Hints (0/3)

Key Takeaway

Key Takeaway:

Refill savatga tokenlarni qaytaradi, lekin uni capacity bilan chegaralaydi — savat hech qachon dastlabki sig'imidan ko'p token saqlay olmaydi. Bu keyingi darsda vaqtga asoslangan avtomatik to'ldirishning poydevori.

NEXT UP

Refilling Tokens Over Time

OUTPUT

$ go run main.go
Kodingizni ishga tushiring

Building a Token Bucket: Refilling Tokens

Token savatini qurish: tokenlarni to'ldirish

Oldingi darsdagi savat faqat bo'shashi mumkin edi — hech qachon to'lmaydi. Haqiqiy rate limiter esa vaqt o'tishi bilan tokenlarni qayta to'ldirishi kerak, aks holda bir marta tugagan klient abadiy bloklanib qoladi. Eng sodda qadam — tokenlarni qo'lda to'ldiradigan metod qo'shish, sig'imdan oshib ketmasligini ta'minlab:

example.go
func (b *TokenBucket) Refill(n int) {
    b.tokens += n
    if b.tokens > b.capacity {
        b.tokens = b.capacity
    }
}

Bu — Cache Eviction darsidagi TTL g'oyasiga o'xshaydi: xuddi eskirgan yozuvlarni tozalash kerak bo'lganidek, bu yerda ham holatni (tokens) tashqi hodisa (vaqt o'tishi) asosida yangilab turish kerak. if b.tokens > b.capacity tekshiruvi — savat haqiqiy sig'imidan oshib ketmasligini kafolatlaydigan chegara sharti.

>_ Exercise

Oldingi darsdagi TokenBucketga Refill(n int) metodini qo'shing. U tokensni nga oshiradi, lekin natija capacitydan oshib ketsa, tokensni capacityga tenglashtiradi.

Stuck? Reveal a hint to help you.

Hints (0/3)

Key Takeaway

Key Takeaway:

Refill savatga tokenlarni qaytaradi, lekin uni capacity bilan chegaralaydi — savat hech qachon dastlabki sig'imidan ko'p token saqlay olmaydi. Bu keyingi darsda vaqtga asoslangan avtomatik to'ldirishning poydevori.

NEXT UP

Refilling Tokens Over Time