Zurück zum Blog

Folgen und abonnieren

Aufbau skalierbarer Warteschlangen mit Fastly Compute

Brock Norvell

Sr. Serverless Solutions Architect, Fastly

Terri Allegretto

Senior Manager, Product Marketing, Entwicklerplattform

Austin Spires

Senior Director of Developer Marketing

Stellen Sie sich vor, Ihre E-Commerce-Website veranstaltet einen Flash Sale oder Ihre Ticketplattform führt einen Release von Plätzen für ein Stadionkonzert durch. Tausende von Nutzern überfluten gleichzeitig Ihre Endpunkte, was Ihre Origin-Server zu überlasten droht und zu einem schlechten Kundenerlebnis führt, das oft frustrierte Nutzer dazu bringt, auf 404-Fehler oder fehlerhafte Seiten zu starren.

Warteschlangen sind eine perfekte Lösung, um den Besucherstrom auf Ihrer Website zu kontrollieren, die Stabilität der Website zu erhalten und das Einkaufserlebnis zu optimieren. Bei Ticketverkäufen für Veranstaltungen mit hoher Nachfrage bieten Warteschlangen eine Möglichkeit, Kunden fair in einer Reihe anzuordnen und Überbuchungen zu vermeiden. Dieser Blogbeitrag bietet einen Überblick über ein interessantes Projekt, dessen Schwerpunkt auf der Entwicklung einer Warteschlangen-App auf Basis von Fastly Compute lag, und erläutert, wie Sie diese für Ihre eigenen Anwendungsfälle nutzen können.

Ziele für unser Warteschlangen-Projekt:

  • Warteschlangenmanagement: Die App sollte in der Lage sein, eine große Anzahl gleichzeitiger Nutzer effizient zu bewältigen und sie in eine virtuelle Warteschlange einzureihen, um eine Serverüberlastung zu vermeiden.

  • Echtzeit-Updates: Die Nutzer sollten ihre Position in der Warteschlange und die geschätzte Wartezeit sehen können, die sich automatisch aktualisieren sollte.

  • Konfigurierbare Einstellungen: Es sollte möglich sein, die Warteschlangeneinstellungen wie Aktualisierungsintervalle und automatische Zulassungsraten für Nutzer einfach anzupassen.

  • Betrugsbekämpfungsmaßnahmen: Integrierte Sicherheitsfunktionen verhindern Manipulationen der Warteschlange und gewährleisten einen fairen Zugang.

  • Unterstützung mehrerer Warteschlangen: Diese bieten die Möglichkeit, verschiedene Pfade oder Ereignisse mit separaten Warteschlangen zu verarbeiten.

Wie Fastly Compute skalierbare Warteschlangen ermöglicht

Die Warteschlangen-App nutzt Fastly Compute in Verbindung mit der Redis-Datenbank von Upstash. Upstash verfügt über eine API-Integration mit Fastly. Die Verwendung dieser Art von zustandsorientierter Datenbank mit atomaren Operationen stellt sicher, dass jede Operation, die in die Datenbank geschrieben wird, garantiert in der Reihenfolge ausgeführt wird, in der sie empfangen wurde. Hier ein kurzer Überblick:

  1. Wenn ein Nutzer einen geschützten Endpunkt erreicht, überprüft die App, ob für diesen Pfad eine Warteschlange aktiv ist. Falls aktiv, wird dem Nutzer eine eindeutige Kennung zugewiesen und er wird in die Warteschlange eingereiht.

  2. Die App verwendet Redis, um die Position, Länge und den Cursor (nächste zu bedienende Position) in der Warteschlange zu verfolgen.

  3. Die Nutzer erhalten ein Cookie mit ihren Warteschlangeninformationen, das regelmäßig aktualisiert wird, um ihren Platz zu behalten.

Die App kann Nutzer automatisch in einem festgelegten Tempo zulassen oder die manuelle Zulassung in Gruppen ermöglichen.

Abbildung 1: Ablauf des Nutzeranforderungsflusses in der Warteschlange (siehe untenstehende Schritte)

  1. Ein Nutzer stellt eine Anfrage an die Website (die von Fastly betrieben wird).

  2. Die Anforderung wird an den Fastly Compute-Service weitergeleitet. (Dies ist die Haupt-App-Logik, die auf der Edge ausgeführt wird. Sie enthält den Code, der entscheidet, ob der Nutzer in die Warteschlange gestellt oder zugelassen wird.)

  3. Die Compute-Logik überprüft, ob die Warteschlange AKTIV ist und ob der Nutzer ein gültiges Token (Cookie) besitzt.

  4. Falls kein gültiges Token existiert, interagiert Compute mit Upstash Redis, um die aktuelle Warteschlangenlänge zu ermitteln, weist dem Nutzer eine neue Position in der Warteschlange zu und stellt ein Token-Cookie aus.

  5. Falls der Nutzer noch nicht zugelassen ist, verwendet Compute eine im Fastly KV Store gespeicherte Seitenvorlage, um die Warteschlange sofort von der Edge bereitzustellen und sicherzustellen, dass der Ursprung nie aufgerufen wird.

  6. Wenn das Token gültig ist und der Nutzer die Spitze der Warteschlange erreicht hat (Token Live? = Yes), leitet Compute die Anfrage an den Origin weiter.

Möglichkeiten zur individuellen Gestaltung der Warteschlange:

  1. Passen Sie die Vorlage an Ihre Marke an: Personalisieren Sie die Warteschlangenseite mithilfe des KV Store von Fastly, um sie an Ihre Marke anzupassen.

  2. Geo-Targeting: Konfigurieren Sie länderspezifische Warteschlangen für lokalisierte Ereignisse.

  3. Mehrere Warteschlangen: Richten Sie verschiedene Warteschlangen für verschiedene Abschnitte Ihrer Website oder unterschiedliche Veranstaltungen ein.

  4. Zulassungsstrategien: Implementieren Sie nutzerdefinierte Programmlogik dafür, wie Nutzer aus der Warteschlange zugelassen werden.

Erstellen Ihrer Fastly Compute-Warteschlange

So erstellen Sie Ihre eigene Warteschlange mit Fastly Compute:

  1. Richten Sie einen Fastly Compute-Service ein

  2. Erstellen Sie eine Upstash Redis-Datenbank

  3. Konfigurieren Sie den KV Store von Fastly für Warteschlangeneinstellungen und Seitenvorlagen

  4. Implementieren Sie die Kernlogik mit JavaScript, Rust oder Go

  5. Testen Sie gründlich mit simuliertem Traffic

Schutz Ihrer Infrastruktur und Verbesserung des Nutzererlebnisses

Durch die Nutzung von Fastly Compute und einer schnellen, verteilten Datenbank können Sie robuste Lösungen zur Verwaltung von Szenarien mit hohem Traffic erstellen. Wir ermutigen Sie, dieses Muster zu erkunden und es an Ihre spezifischen Anwendungsfälle anzupassen.

Ob Sie Ticketverkäufe, Produkteinführungen oder andere Veranstaltungen mit hoher Nachfrage abwickeln, eine gut implementierte Warteschlange kann das Nutzererlebnis deutlich verbessern und Ihre Infrastruktur schützen. Viel Spaß beim Programmieren, und lassen Sie uns wissen, welche großartigen Dinge Sie mit Fastly Compute entwickeln!