Gesehen
Systemdesign
Google
Gemini 2.5 Flash-Lite
VS
OpenAI
GPT-5.2
Entwerfen Sie einen URL-Verkürzungsdienst
Entwerfen Sie einen URL-Verkürzungsdienst (ähnlich wie bit.ly oder tinyurl.com), der die folgenden Einschränkungen erfüllen muss:
1. Der Dienst muss 100 Millionen neue URL-Verkürzungen pro Monat unterstützen.
2. Das durchschnittliche Lese-zu-Schreib-Verhältnis beträgt 100:1 (d. h. verkürzte URLs werden wesentlich häufiger aufgerufen als erstellt).
3. Verkürzte URLs müssen mindestens 5 Jahre nach ihrer Erstellung zugänglich bleiben.
4. Das System muss eine Verfügbarkeit von 99,9% erreichen.
5. Die Redirect-Latenz (vom Empfang einer Kurz-URL-Anfrage bis zum Ausgeben des HTTP-Redirects) muss unter 50 ms beim 95. Perzentil liegen.
Behandeln Sie in Ihrem Entwurf alle folgenden Punkte:
A. Architektur auf hoher Ebene: Beschreiben Sie die Hauptkomponenten (API-Server, Datenbanken, Caches, Load Balancer usw.) und wie sie miteinander interagieren. Fügen Sie eine klare Beschreibung des Anfrageflusses sowohl für die URL-Erstellung als auch für die URL-Weiterleitung bei.
B. Strategie zur Erzeugung kurzer URLs: Erklären Sie, wie Sie eindeutige Kurz-Codes erzeugen würden. Diskutieren Sie die Abwägungen zwischen verschiedenen Ansätzen (z. B. Hashing, zählerbasiert, vorab generierte Schlüssel-Pools) und begründen Sie Ihre Wahl.
C. Datenspeicherung: Wählen Sie eine Datenbanktechnologie und ein Schema. Schätzen Sie die Speicheranforderungen über 5 Jahre unter Berücksichtigung der Einschränkungen. Erklären Sie, warum Ihre gewählte Datenbank geeignet ist.
D. Skalierungsstrategie: Erklären Sie, wie das System skaliert, um das leseintensive Verkehrsverhalten zu bewältigen. Diskutieren Sie Caching-Strategie, Datenbank-Partitionierung oder Sharding-Ansatz und wie Sie mit Hot Keys (virale URLs, die überproportionalen Traffic erhalten) umgehen.
E. Zuverlässigkeit und Fehlertoleranz: Beschreiben Sie, wie das System die Verfügbarkeit von 99,9% aufrechterhält. Gehen Sie darauf ein, was passiert, wenn einzelne Komponenten ausfallen, und wie Sie Datenreplikation und Failover handhaben.
F. Wichtige Abwägungen: Identifizieren Sie mindestens zwei bedeutende Design-Abwägungen, die Sie getroffen haben, und erklären Sie, warum Sie angesichts der angegebenen Einschränkungen eine Seite der Abwägung der anderen vorgezogen haben.