Blog

URL-Shortener-Systemdesign: Wie Link-Shortener unter der Haube funktionieren

March 26, 2026

URL-Shortener-Systemdesign: Wie Link-Shortener unter der Haube funktionieren

„Entwerfen Sie einen URL-Shortener" ist eine der beliebtesten Systemdesign-Interviewfragen — und das aus gutem Grund. Sie berührt Hashing, Datenbanken, Caching, Load Balancing und verteilte Systeme, alles in einem trügerisch einfachen Produkt.

In diesem Leitfaden gehen wir durch, wie URL-Shortener tatsächlich funktionieren, die wichtigsten Designentscheidungen und die damit verbundenen Kompromisse bei der Skalierung.

Der grundlegende Ablauf

Ein URL-Shortener macht zwei Dinge:

  1. 1Verkürzen: Nehmen Sie eine lange URL und generieren Sie einen kurzen Code
  2. 2Weiterleitung: Wenn jemand die kurze URL besucht, leiten Sie ihn zum Original weiter

Hier ist der allgemeine Ablauf:

Benutzer erstellt kurzen Link:
  Lange URL → Kurzen Code generieren → Zuordnung speichern → Kurze URL zurückgeben

Benutzer klickt auf kurzen Link:
  Kurze URL → Code nachschlagen → Lange URL finden → 301-Weiterleitung

Generieren von kurzen Codes

Die Kernherausforderung besteht darin, eindeutige, kurze Codes zu generieren. Es gibt mehrere Ansätze:

Ansatz 1: Base62-Kodierung

Konvertieren Sie eine auto-inkrementelle ID in einen Base62-String mit Zeichen [a-zA-Z0-9]:

  • ID 11
  • ID 6210
  • ID 238.328ZZZ

Ein 7-stelliger Base62-Code unterstützt 62^7 = 3,5 Billionen eindeutige URLs.

Vorteile: Einfach, vorhersagbare Länge, keine Kollisionen Nachteile: Sequenzielle IDs sind vorhersagbar (Benutzer können andere kurze URLs erraten)

Ansatz 2: Hashing

Wenden Sie eine Hash-Funktion (MD5, SHA-256) auf die lange URL an und nehmen Sie die ersten N Zeichen:

SHA256("https://example.com/very/long/url") → "a3f2b8c1..." Kurzer Code: "a3f2b8c"

Vorteile: Gleiche Eingabe erzeugt immer die gleiche Ausgabe (Deduplizierung) Nachteile: Hash-Kollisionen erfordern Behandlung; feste Hash-Länge kann Platz verschwenden

Ansatz 3: Zufallsgenerierung

Generieren Sie eine zufällige alphanumerische Zeichenfolge und überprüfen Sie auf Eindeutigkeit:

Vorteile: Einfach, unvorhersehbar Nachteile: Erfordert Kollisionsprüfung bei jeder Erstellung; wird langsamer, wenn sich die Datenbank füllt

Welcher Ansatz sollte verwendet werden?

Die meisten Produktionssysteme verwenden Base62-Kodierung mit einem verteilten ID-Generator. Es ist einfach, kollisionsfrei und performant. Bei Linkly verwenden wir einen ähnlichen Ansatz — Sie können mehr über wie URL-Shortener funktionieren für einen weniger technischen Überblick lesen.

Datenbankdesign

Die Kerntabelle ist unkompliziert:

urls ├── id (Primärschlüssel, auto-increment) ├── short_code (eindeutiger Index) ├── long_url (das Ziel) ├── created_at (Zeitstempel) ├── user_id (wer es erstellt hat) └── click_count (denormalisierter Zähler)

SQL vs. NoSQL

SQL (PostgreSQL, MySQL): ACID-Compliance, starke Konsistenz, gut für mittlere Skalierung. Die meisten URL-Shortener beginnen hier.

NoSQL (DynamoDB, Cassandra): Bessere horizontale Skalierung für Milliarden von URLs. Eventuelle Konsistenz ist für diesen Use-Case akzeptabel.

Hybrid: SQL für URL-Zuordnungen (benötigen starke Konsistenz für Weiterleitungen), NoSQL oder eine Zeitreihendatenbank für Click-Analysen (hohes Schreibvolumen, eventuelle Konsistenz ist in Ordnung).

Behandlung von Weiterleitungen

Wenn ein Benutzer auf einen kurzen Link klickt, muss das System:

  1. 1Den kurzen Code aus der URL parsen
  2. 2Die entsprechende lange URL nachschlagen
  3. 3Eine HTTP-Weiterleitungsantwort zurückgeben

301 vs. 302 Weiterleitungen

  • 301 (Permanent): Der Browser speichert die Weiterleitung zwischen. Weniger Serveranfragen, aber Sie verlieren die Sicht auf wiederholte Klicks.
  • 302 (Temporär): Der Browser fragt jedes Mal den Server ab. Mehr Anfragen, aber besseres Click-Tracking.

Die meisten URL-Shortener verwenden 302-Weiterleitungen für genaues Click-Tracking, bieten dann 301 als Option für SEO-Use-Cases an. Lesen Sie unseren Leitfaden zu 301-Weiterleitungen für mehr zu diesem Unterschied.

Caching

Weiterleitungen müssen schnell sein — jede Millisekunde Latenz beeinträchtigt die Benutzererfahrung. Caching ist entscheidend:

In-Memory-Cache (Redis/Memcached)

Speichern Sie die Zuordnung short_code → long_url im Speicher:

GET /abc123 → Redis auf "abc123" überprüfen → Cache-Treffer? Weiterleitung sofort zurückgeben → Cache-Fehler? Datenbank abfragen, Ergebnis zwischenspeichern, Weiterleitung zurückgeben

Eine kleine Redis-Instanz kann Millionen von URL-Zuordnungen zwischenspeichern. Da der größte Teil des Verkehrs zu einer relativ kleinen Anzahl beliebter Links geht, sind Cache-Trefferquoten über 90% üblich.

CDN-Caching

Für 301-Weiterleitungen können CDN-Edge-Knoten die Weiterleitungsantwort zwischenspeichern und sie vom nächstgelegenen Ort zum Benutzer bereitstellen, ohne dass Ihr Origin-Server überhaupt angesprochen wird.

Analytik und Click-Tracking

Das Aufzeichnen von Click-Daten ist ein schreibintensiver Vorgang, der die Weiterleitung nicht verlangsamen sollte:

Asynchrone Verarbeitung

  1. 1Benutzer klickt auf kurzen Link
  2. 2System gibt sofort die Weiterleitung zurück
  3. 3Click-Ereignis wird in eine Message Queue gepusht (Kafka, RabbitMQ, SQS)
  4. 4Ein Background-Worker verarbeitet das Ereignis: parst User Agent, geolokalisiert IP, speichert Analysen

Dies entkoppelt den schnellen Weiterleitungspfad von der langsameren Analytics-Pipeline.

Zu erfassende Daten

  • Zeitstempel
  • IP-Adresse (für Geolokalisierung)
  • User Agent (für Gerät-/Browser-Erkennung)
  • Referrer-Header
  • Land, Stadt (aus IP-Geolokalisierung)

Überlegungen zur Skalierung

Read-Heavy Workload

URL-Shortener sind extrem lese-intensiv. Ein typisches Verhältnis könnte 100:1 Lesevorgänge zu Schreibvorgängen sein. Das bedeutet:

  • Optimieren Sie den Weiterleitungspfad vor allem anderen
  • Verwenden Sie Caching aggressiv
  • Read-Replicas für die Datenbank

Verteilte ID-Generierung

Wenn Sie auto-inkrementelle IDs über mehrere Server hinweg verwenden, müssen Sie Kollisionen vermeiden. Optionen:

  • Snowflake-IDs: Twitters Ansatz — betten Sie Zeitstempel, Machine-ID und Sequenznummer ein
  • UUID: Universell eindeutig, aber länger
  • ID-Bereiche: Weisen Sie jedem Server einen Bereich von IDs zu, die zugeordnet werden können

Geografische Verteilung

Stellen Sie Weiterleitungsserver in mehreren Regionen bereit. Ein Benutzer in Tokio sollte nicht hin und zurück zu einem Server in Virginia für eine Weiterleitung müssen.

Sicherheitsaspekte

URL-Shortener können für Phishing und Malware-Verteilung missbraucht werden. Produktionssysteme benötigen:

  • URL-Scanning — überprüfen Sie Ziele gegen Malware- und Phishing-Datenbanken
  • Rate Limiting — verhindern Sie die Massenerstellung böswilliger kurzer Links
  • Missbrauchsmeldung — ermöglichen Sie Benutzern, verdächtige Links zu melden
  • Vorschauseiten — zeigen Sie Benutzern optional an, wohin ein Link führt, bevor Sie weitergeleitet werden

Erfahren Sie mehr über Link-Sicherheit und Click-Fraud-Schutz.

Zusätzliche Features

Über grundlegende Verkürzung und Weiterleitung hinaus fügen Produktions-URL-Shortener Folgendes hinzu:

Fazit

Das Systemdesign von URL-Shortenern ist eine großartige Übung, da es einfach beginnt, aber mehrere Ebenen der Komplexität offenbart: Code-Generierung, Datenbankdesign, Caching, Analytics-Pipelines und Missbrauchsprävention. Das Verständnis dieser Grundlagen hilft, unabhängig davon, ob Sie sich auf Interviews vorbereiten oder Ihre eigenen Tools erstellen.

Möchten Sie einen Produktions-URL-Shortener verwenden, ohne einen zu erstellen? Erste Schritte mit Linkly — die gesamte oben beschriebene Architektur, einsatzbereit mit benutzerdefinierten Domains, Analytik und erweiterten Funktionen.

Verfolgen Sie 500 monatliche Klicks mit allen Funktionen eingeschlossen.

Keine Kreditkarte erforderlich