Middleware, die Funktionen zur Verkehrssteuerung bereitstellt.
RateIssuer
bietet eine Abstraktion für die Zuweisung von Schlüsselwerten zur Identifizierung von Besuchern. RemoteIpIssuer
ist eine Implementierung davon, die Besucher anhand ihrer IP-Adresse identifiziert. Der Schlüssel muss nicht unbedingt ein String sein – jeder Typ, der die Einschränkungen Hash + Eq + Send + Sync + 'static
erfüllt, kann als Schlüssel verwendet werden.
RateGuard
bietet eine Abstraktion für den Verkehrssteuerungsalgorithmus. Standardmäßig sind zwei Implementierungen verfügbar: Festes Fenster (FixedGuard
) und Gleitendes Fenster (SlidingGuard
).
RateStore
stellt Operationen zum Speichern und Abrufen von Daten bereit. MokaStore
ist eine integrierte, speicherbasierte Cache-Implementierung auf Basis von moka
. Sie können auch Ihre eigene Implementierung definieren.
RateLimiter
ist eine Struktur, die Handler
implementiert und intern ein skipper
-Feld enthält, mit dem Anfragen übersprungen werden können, die nicht zwischengespeichert werden müssen. Standardmäßig wird none_skipper
verwendet, der keine Anfragen überspringt.
QuotaGetter
bietet eine Abstraktion für die Kontingentbeschaffung. Basierend auf dem Key
des Besuchers kann ein Kontingentobjekt abgerufen werden, was bedeutet, dass wir Benutzerkontingente und ähnliche Informationen in einer Datenbank konfigurieren und dynamisch ändern oder abrufen können.
Beispielcode