Çekirdek veriAPI'ler

Hız Sınırlama

Atomik, sunucu tarafı hız sınırları. Tek komutla GCRA ya da kayan pencere, belirteç kovası veya sızdıran kovalı adlandırılmış sınırlayıcılar. Lua gerekmez.

istek başına atomik komut
1
algoritma
4
Lua betiği
0
Adım 1 / 5
İzin verildi

42 numaralı kullanıcı için dakikada 10 istek. Yanıt izin verildiğini, sınırı ve kaç tane kaldığını söyler.

Örnek oturumplaying
# İzin verildi
hotkv> GCRA.LIMIT ratelimit:user:42 60000 10
1) (integer) 0
2) (integer) 10
3) (integer) 9
4) (integer) -1
5) (integer) 6000

Gerçek HotKV komutları ve örnek yanıtlarla animasyonlu bir anlatım. Herhangi bir adıma atlamak için üzerine tıklayın. Komutlar ve yanıtlar, HotKV'de yazdığınız ve gördüğünüz haliyle İngilizce kalır.

Sorun

Sınırı olmayan bir API, kötü davranan tek bir istemci kadar bir kesintiye yakındır. Denetimi uygulama kodunda yapmak bir okuma, bir hesaplama ve bir yazma demektir ve eşzamanlı istekler aralarındaki boşluklardan sızar. Birçok ekip sırf atomik yapmak için bir Lua betiği bakımı yapmak zorunda kalır.

HotKV bunu nasıl ele alır

GCRA.LIMIT tek adımda karar verir ve kaydeder; böylece eşzamanlı istemciler aynı durumda birlikte geçemez ve sınır, pencere sınırlarında sıfırlanmak yerine yumuşak biçimde dolar. Ada göre yönettiğiniz sınırlar için RATELIMIT.CREATE, neye izin verdiğine ve neyi reddettiğine dair istatistiklerle bir kayan pencere, belirteç kovası veya sızdıran kova sınırlayıcı kurar.

Adım adım

Ne olur, komut komut

  1. 01

    İzin verildi

    42 numaralı kullanıcı için dakikada 10 istek. Yanıt izin verildiğini, sınırı ve kaç tane kaldığını söyler.

    GCRA.LIMIT ratelimit:user:42 60000 10
  2. 02

    Bir bottan patlama

    Kazıyıcı patlama hakkını bitirir ve ardından ne kadar beklemesi gerektiği söylenir. Reddedilen bir istek hiçbir şeyi değiştirmez.

    GCRA.LIMIT ratelimit:bot:7 60000 10
  3. 03

    Bir plan için adlandırılmış sınırlayıcı

    Ücretsiz plan müşterileri kayan pencerede dakikada 100 istek alır.

    RATELIMIT.CREATE free_plan 100 60000 ALGO sliding_window
  4. 04

    Ağırlıklı istek

    Bir dışa aktarma uç noktası 20 birime mal olur; bu yüzden hakkın daha fazlasını kullanır.

    RATELIMIT.CHECK free_plan customer:881 COST 20
  5. 05

    Sınırlayıcının ne yaptığını görün

    Ayarlar, izlenen anahtarlar ve izin verilen ile reddedilen isteklerin toplamları.

    RATELIMIT.STATS free_plan
Nereye uyar

Gerçek dünya senaryoları

Herkese açık API'ler

Her API anahtarı plan başına bir sınır alır; iyi davranan istemciler için patlamalara, geri kalanlar için kesin bir Retry-After değerine izin verilir.

Giriş ve kayıt formları

Kimlik bilgisi doldurmayı yavaşlatmak için IP başına ve hesap başına denemeler sınırlanır.

Giden çağrılar

Bir ortak API'ye veya bir LLM sağlayıcısına yapılan çağrılar, filodaki her çalışan boyunca kotalarının altında tutulur.

Yerleşik

Neler elde edersiniz

Tek komutta GCRA

Patlamalı yumuşak dolum, atomik denetim ve güncelleme, reddedilince yeniden deneme süresi.

GCRA.LIMITGCRA.RESET

Adlandırılmış sınırlayıcılar

Kayan pencere, belirteç kovası veya sızdıran kova; bir kez oluşturulur ve anahtar başına denetlenir.

RATELIMIT.CREATERATELIMIT.CHECK

Ağırlıklı istekler

Pahalı çağrılar birkaç istek sayılabilir. GCRA.LIMIT bir sayı, RATELIMIT.CHECK bir COST alır.

COST

İstatistikler

Sınırlayıcı başına izin verilen ve reddedilen toplamlar.

RATELIMIT.STATS

Sık sorulan sorular

Hız sınırlama için Lua betiğine ihtiyacım var mı?

Hayır. Hem GCRA.LIMIT hem RATELIMIT.CHECK tüm denetimi tek bir atomik komut olarak yapar.

Hangisini kullanmalıyım?

GCRA.LIMIT kurulum gerektirmez ve her planda çalışır. RATELIMIT.* adlandırılmış sınırlayıcılar algoritma seçimi ve istatistik ekler ve Performance ile Scale planlarının parçasıdır.

Reddedilen bir istek neye mal olur?

Hiçbir şeye. Reddedilen bir GCRA çağrısı sınırlayıcıyı değiştirmeden bırakır; bu yüzden yeniden deneyen bir istemci daha fazla cezalandırılmaz.

İlgili kullanım senaryoları

Kendi iş yükünüzde deneyin

HotKV, Redis protokolünü konuşur; bu yüzden mevcut bir istemciyi ona yönlendirip aynı komutları çalıştırabilirsiniz.