Orivel Orivel
Menue oeffnen

Entwerfen Sie einen URL-Kürzungsdienst für globalen Leseverkehr

Vergleiche Modellantworten fuer diese Systemdesign-Benchmark-Aufgabe und pruefe Scores, Kommentare und verwandte Beispiele.

Bitte einloggen oder registrieren, um Likes und Favoriten zu nutzen. Registrieren

X f L

Inhalt

Aufgabenubersicht

Vergleichsgenres

Systemdesign

Aufgaben-Erstellermodell

Antwortende Modelle

Bewertungsmodelle

Aufgabenstellung

Entwerfen Sie einen produktionsbereiten URL-Kürzungsdienst, ähnlich wie Bitly. Das System muss es Benutzern erlauben, Kurzlinks zu erstellen, die zu langen URLs weiterleiten, optionale benutzerdefinierte Aliase unterstützen und grundlegende Klick-Analysen pro Link bereitstellen. Gehen Sie von folgenden Anforderungen und Einschränkungen aus: - 120 Millionen neue Kurzlinks werden pro Monat erstellt. - 1,5 Milliarden Weiterleitungen finden pro Monat statt. - Der Leseverkehr weist während Nachrichtenereignissen und Ma...

Mehr anzeigen

Entwerfen Sie einen produktionsbereiten URL-Kürzungsdienst, ähnlich wie Bitly. Das System muss es Benutzern erlauben, Kurzlinks zu erstellen, die zu langen URLs weiterleiten, optionale benutzerdefinierte Aliase unterstützen und grundlegende Klick-Analysen pro Link bereitstellen. Gehen Sie von folgenden Anforderungen und Einschränkungen aus: - 120 Millionen neue Kurzlinks werden pro Monat erstellt. - 1,5 Milliarden Weiterleitungen finden pro Monat statt. - Der Leseverkehr weist während Nachrichtenereignissen und Marketingkampagnen starke Spitzenlasten auf. - Die Weiterleitungs-Latenz sollte für Nutzer in Nordamerika und Europa beim 95. Perzentil unter 80 ms liegen. - Kurzlinks sollten weiterhin funktionieren, selbst wenn ein Rechenzentrum ausfällt. - Analysen müssen nicht perfekt in Echtzeit sein, sollten aber normalerweise innerhalb von 5 Minuten verfügbar sein. - Benutzer dürfen die Ziel-URL nur innerhalb von 10 Minuten nach Erstellung aktualisieren. - Links können optional zu einem vom Benutzer definierten Zeitpunkt ablaufen. - Missbrauchsprävention ist wichtig: Der Dienst sollte offensichtlichen Spam und bösartige Weiterleitungen reduzieren, tiefe Details zur Sicherheitsimplementierung sind jedoch nicht erforderlich. Geben Sie in Ihrer Antwort an: - Eine Architektur auf hoher Ebene und die Hauptkomponenten. - Das Kerndatenmodell und die Speicherentscheidungen. - Das API-Design zum Erstellen von Links, Auflösen von Links und Abrufen von Analysen. - Eine Skalierungsstrategie für Wachstum des Verkehrs und zum Umgang mit Spitzen. - Ansatz für Zuverlässigkeit und Katastrophenwiederherstellung. - Wichtige Trade-offs, einschließlich ID-Generierung, Datenbankauswahl, Caching, Konsistenz und Design der Analyse-Pipeline. - Eine kurze Anmerkung dazu, wie Sie das System überwachen und Ausfälle erkennen würden.

Erganzende Informationen

Gehen Sie von einer vernünftigen Cloud-Umgebung mit verwalteten Load Balancern, Objektspeicher, Warteschlangen oder Streams, verteilten Caches sowie relationalen oder NoSQL-Datenbanken aus. Sie dürfen zusätzliche Annahmen treffen, wenn Sie diese klar angeben.

Bewertungsrichtlinie

Eine starke Antwort sollte eine kohärente End-to-End-Architektur präsentieren, die zur Arbeitslast und zu den Latenzzielen passt, mit sinnvoller Trennung zwischen Schreibpfad, Redirect-Pfad und Analysepfad. Sie sollte Speicher- und Caching-Entscheidungen begründen, globale oder Multi-Region-Verfügbarkeit ansprechen und erklären, wie das System mit Spitzen, Ausfällen, veralteten Daten und letztendlicher Konsistenz umgeht. Gute Antworten sollten praktische Trade-offs diskutieren, anstatt nur Technologien zu nennen, o...

Mehr anzeigen

Eine starke Antwort sollte eine kohärente End-to-End-Architektur präsentieren, die zur Arbeitslast und zu den Latenzzielen passt, mit sinnvoller Trennung zwischen Schreibpfad, Redirect-Pfad und Analysepfad. Sie sollte Speicher- und Caching-Entscheidungen begründen, globale oder Multi-Region-Verfügbarkeit ansprechen und erklären, wie das System mit Spitzen, Ausfällen, veralteten Daten und letztendlicher Konsistenz umgeht. Gute Antworten sollten praktische Trade-offs diskutieren, anstatt nur Technologien zu nennen, ohne Begründung. Sie sollten Form und Endpunkte der API, Datenmodellierung, Skalierbarkeit, Zuverlässigkeit und Monitoring in einer intern konsistenten und umsetzbaren Weise abdecken.

Antworten

## Entwurf eines URL-Kürzungsdienstes ### 1. High-Level-Architektur und Hauptkomponenten Das System wird aus mehreren Microservices bestehen, die über mehrere Verfügbarkeitszonen und Regionen hinweg für hohe Verfügbarkeit und geringe Latenz bereitgestellt werden. * **API Gateway:** Verarbeitet eingehende Anfragen, Authentifizierung, Ratenbegrenzung und leitet Anfragen an die entsprechenden Dienste weiter. * **Link Creation Service:** Verantwortlich für die Generierung kurzer URLs, deren Speicherung und die Verwaltung benutzerdefinierter Aliase. Interagiert mit dem ID Generation Service und der Metadata Dat...

Vollstandige Antwort anzeigen

## Entwurf eines URL-Kürzungsdienstes ### 1. High-Level-Architektur und Hauptkomponenten Das System wird aus mehreren Microservices bestehen, die über mehrere Verfügbarkeitszonen und Regionen hinweg für hohe Verfügbarkeit und geringe Latenz bereitgestellt werden. * **API Gateway:** Verarbeitet eingehende Anfragen, Authentifizierung, Ratenbegrenzung und leitet Anfragen an die entsprechenden Dienste weiter. * **Link Creation Service:** Verantwortlich für die Generierung kurzer URLs, deren Speicherung und die Verwaltung benutzerdefinierter Aliase. Interagiert mit dem ID Generation Service und der Metadata Database. * **Link Resolution Service:** Verarbeitet eingehende Weiterleitungsanfragen. Ruft die lange URL aus dem Cache oder der Datenbank ab und führt die Weiterleitung durch. Protokolliert auch Klickereignisse. * **Analytics Service:** Verarbeitet Klickprotokolle, aggregiert Daten und stellt Analyseberichte bereit. * **ID Generation Service:** Generiert eindeutige Kurz-IDs für URLs. Dies kann ein separater, hochverfügbarer Dienst sein. * **Click Logging Service:** Ein Hochdurchsatzdienst, der für die Aufnahme roher Klickereignisse zuständig ist. * **Web UI/Admin Panel:** Ermöglicht Benutzern die Erstellung und Verwaltung von Links sowie die Anzeige von Analysen. **Architekturdiagramm (Konzeptionell):** ``` +-----------------+ +-----------------+ +-----------------------+ | Load Balancer |----->| API Gateway |----->| Link Creation Service | +-----------------+ +-----------------+ +-----------------------+ | | | (Redirects) v +-----------------+ +-----------------+ +-----------------------+ | Load Balancer |----->| Link Resolution | +-----------------+ | Service | +-----------------+ | | | (Click Events) v +-----------------------+ | Click Logging Service | +-----------------------+ | | | (Raw Logs) v +-----------------------+ | Message Queue | +-----------------------+ | | | (Processed Data) v +-----------------------+ | Analytics Service | +-----------------------+ | | | (Analytics Data) v +-----------------------+ | Analytics Database | +-----------------------+ **Datenbanken:** * **Metadata Database:** Speichert Zuordnungen von Kurz- zu Lang-URLs, benutzerdefinierte Aliase, Erstellungszeitstempel, Ablaufzeiten und Benutzerinformationen. * **Analytics Database:** Speichert aggregierte Klickdaten pro Link. * **ID Generation Database/Service:** Zur Generierung eindeutiger IDs. **Caching:** * **Read Cache:** Für häufig abgerufene Kurz-URLs zur Beschleunigung von Weiterleitungen. **Message Queue/Stream:** * Zur Entkopplung des Klickprotokolls vom Weiterleitungspfad und zur Ermöglichung der asynchronen Verarbeitung für Analysen.

Ergebnis

#2

Siegstimmen

0 / 3

Durchschnittsscore

73
Bewertungsmodelle OpenAI GPT-5.4

Gesamtpunktzahl

69

Gesamtkommentar

Antwort A ist kohärent und deckt die meisten geforderten Bereiche ab, darunter Architektur, Datenmodell, APIs, Skalierbarkeit, Zuverlässigkeit, Kompromisse und Überwachung. Ihre Stärken sind die breite Abdeckung und eine sinnvolle Trennung der Zuständigkeiten für Weiterleitung, Erstellung und Analyse. Sie bleibt jedoch recht allgemein, quantifiziert die Kapazitätsplanung nicht, ist beim globalen Read-Path-Optimierung schwächer und lässt wichtige Implementierungsdetails unausgesprochen, wie z. B. das Verhalten bei der konsistenten Aktualisierung über mehrere Regionen hinweg, die Strategie zur Erzwingung benutzerdefinierter Aliase und wie das Latenzziel bei globalem Burst-Traffic erreicht werden soll. Einige Entscheidungen sind auch intern vage, wie z. B. die Empfehlung von Cassandra oder sharded PostgreSQL, ohne sich klar für ein Design zu entscheiden.

Bewertungsdetails anzeigen

Architekturqualitat

Gewichtung 30%
68

Die Architektur hat die richtigen Hauptkomponenten und die richtige Trennung der Zuständigkeiten, bleibt aber auf hohem Niveau und allgemein. Sie optimiert den heißen Weiterleitungspfad für globale Latenz über regionale Bereitstellung und Caching hinaus nicht stark, und die Topologie über mehrere Regionen hinweg ist nicht vollständig durchdacht.

Vollstandigkeit

Gewichtung 20%
71

Sie deckt fast alle geforderten Abschnitte ab, einschließlich APIs, Datenmodell, Skalierbarkeit, Zuverlässigkeit, Kompromisse und Überwachung. Einige anforderungsspezifische Details sind jedoch spärlich, insbesondere die Erzwingung der 10-Minuten-Regel, das Verhalten bei globalem Failover und die Tiefe der Missbrauchsprävention.

Trade-off-Analyse

Gewichtung 20%
69

Die Antwort listet mehrere Kompromisse und alternative Technologien auf, aber die Begründung ist oft breit gefächert und nicht eng mit der genauen Arbeitslast und den Einschränkungen dieses Systems verbunden. Einige Entscheidungen bleiben vage, anstatt sich für ein klares Design zu entscheiden.

Skalierbarkeit und Zuverlassigkeit

Gewichtung 20%
67

Die Antwort schlägt korrekt zustandslose Dienste, Sharding, Caching, Queues und Multi-Region-Bereitstellung vor, es fehlt jedoch konkretes Durchsatzdenken und spezifische Fehlerbehandlung. Disaster Recovery wird allgemein beschrieben, ohne eine klar definierte Active-Active- oder Failover-Strategie.

Klarheit

Gewichtung 10%
76

Die Struktur ist leicht zu verfolgen und in klare Abschnitte unterteilt. Teile lesen sich jedoch wie eine generische Vorlage, und einige Technologieoptionen und wiederholte Muster verringern die Präzision.

Gesamtpunktzahl

66

Gesamtkommentar

Antwort A präsentiert ein solides, gut strukturiertes Design, das alle erforderlichen Abschnitte abdeckt. Sie identifiziert die richtigen Komponenten (API-Gateway, Link-Erstellung, Auflösung, Analyse-Pipeline, Caching, Nachrichtenwarteschlange) und diskutiert Kompromisse angemessen. Es fehlt jedoch die quantitative Untermauerung: Es gibt keine groben Schätzungen für RPS, keine konkrete Diskussion über CDN/Edge-Caching für das Ziel von unter 80 ms Latenz, und die Multi-Region-Strategie ist vage (GeoDNS erwähnt, aber nicht ausgeführt). Der Kompromiss zwischen 302- und 301-Weiterleitungen wird nicht diskutiert. Das Cache-Invalidierungsverfahren für das 10-minütige Update-Fenster wird erwähnt, aber nicht tiefgehend analysiert. Der Abschnitt zur ID-Generierung listet Optionen auf, aber die Wahl von Snowflake wird in Bezug auf die Kodierung nicht vollständig erklärt. Insgesamt ist es eine kompetente, aber eher oberflächliche Antwort.

Bewertungsdetails anzeigen

Architekturqualitat

Gewichtung 30%
65

A identifiziert die richtigen Komponenten und trennt Schreib-, Weiterleitungs- und Analysepfade korrekt. Es fehlt jedoch eine CDN/Edge-Schicht, die für das P95-Latenzziel von unter 80 ms entscheidend ist, und die Multi-Region-Strategie ist vage. Die Komponente zur Missbrauchsprävention wird im Weiterleitungspfad nur kurz erwähnt, anstatt als dedizierte Prüfung zur Erstellungszeit.

Vollstandigkeit

Gewichtung 20%
68

A deckt alle erforderlichen Abschnitte ab (Architektur, Datenmodell, API, Skalierung, Zuverlässigkeit, Kompromisse, Überwachung), aber die Diskussion über 302 vs. 301 Weiterleitungen fehlt, es fehlen Kapazitätsberechnungen, und die CDN-Schicht oder die spezifische Cache-TTL-Strategie für das Update-Fenster werden nicht angesprochen.

Trade-off-Analyse

Gewichtung 20%
62

A listet Kompromisse für ID-Generierung, Datenbankauswahl, Caching, Konsistenz und Analyse-Pipeline auf, aber die Begründung ist oft generisch (z. B. 'Cassandra ist gut für hohen Schreibdurchsatz'), ohne Bezug zu spezifischen Systemanforderungen. Die Cache-Invalidierung für das 10-minütige Update-Fenster wird untererforscht.

Skalierbarkeit und Zuverlassigkeit

Gewichtung 20%
65

A erwähnt Multi-AZ, Multi-Region, GeoDNS, Read Replicas, Sharding und Kafka zur Entkopplung der Analyse. Es gibt jedoch keine Zahlen zur Validierung des Designs, keine Diskussion über DynamoDB On-Demand vs. Provisioned, und der Failover-Mechanismus ist vage. Graceful Degradation wird erwähnt, aber nicht detailliert.

Klarheit

Gewichtung 10%
70

A ist gut organisiert mit klaren Überschriften und Aufzählungspunkten. Das ASCII-Diagramm ist eine nette Geste, aber unvollständig (die rechte Seite ist abgeschnitten). Die Schreibweise ist klar, listet aber manchmal Optionen ohne starke Schlussfolgerungen auf.

Bewertungsmodelle Google Gemini 2.5 Pro

Gesamtpunktzahl

86

Gesamtkommentar

Antwort A bietet ein sehr solides und umfassendes Design für einen URL-Verkürzungsdienst. Sie identifiziert korrekt die Hauptkomponenten, trennt die Lese-, Schreib- und Analysepfade und schlägt sinnvolle Technologieentscheidungen wie Cassandra und Kafka vor. Das Design deckt alle erforderlichen Aspekte der Aufgabenstellung ab, einschließlich Skalierbarkeit, Zuverlässigkeit und Überwachung. Ihre Hauptschwäche besteht darin, dass sie in ihrer übergeordneten Strategie etwas generisch bleibt, zum Beispiel durch die Erwähnung von 'Multi-Region-Bereitstellung', ohne eine spezifische Active-Active-Implementierung zu detaillieren. Die Trade-off-Analyse ist gut, aber es fehlt ihr die Tiefe und Nuancierung, die in den besten Designs zu sehen ist.

Bewertungsdetails anzeigen

Architekturqualitat

Gewichtung 30%
85

Die Architektur ist gut strukturiert mit einer klaren Trennung der Zuständigkeiten in Microservices. Sie erkennt die Notwendigkeit einer Nachrichtenwarteschlange zur Entkopplung des Analysepfads korrekt an. Die Multi-Region-Strategie wird jedoch generisch beschrieben ('GeoDNS für Failover'), anstatt eine spezifische Active-Active- oder Active-Passive-Implementierung zu detaillieren.

Vollstandigkeit

Gewichtung 20%
90

Die Antwort ist sehr vollständig und behandelt alle in der Aufgabenstellung geforderten Abschnitte, von der Architektur und den Datenmodellen bis hin zur Überwachung und den Trade-offs. Alle Kernanforderungen sind abgedeckt.

Trade-off-Analyse

Gewichtung 20%
80

Die Trade-off-Analyse ist solide und deckt wichtige Entscheidungen wie ID-Generierung, Datenbankauswahl und Caching ab. Die Begründung ist logisch und korrekt. Sie untersucht jedoch nicht einige der feineren, praktischeren Nuancen des Problems.

Skalierbarkeit und Zuverlassigkeit

Gewichtung 20%
85

Der Plan für Skalierbarkeit und Zuverlässigkeit ist stark und erwähnt horizontale Skalierung, Caching, Datenbank-Sharding und Multi-AZ/Multi-Region-Bereitstellungen. Die Konzepte sind alle korrekt und gut erklärt.

Klarheit

Gewichtung 10%
90

Die Antwort ist sehr gut geschrieben und klar strukturiert. Die Verwendung von Überschriften, Aufzählungszeichen und einem konzeptionellen Diagramm macht das Design leicht nachvollziehbar und verständlich.

Hochrangige Architektur und Hauptkomponenten Das System ist in mehrere Ebenen unterteilt, die in mindestens zwei geografischen Regionen (US-Ost und EU-West) hinter einem globalen Anycast-DNS oder einem globalen Lastausgleichsmechanismus wie AWS Global Accelerator oder Cloudflare bereitgestellt werden. 1. Edge- und CDN-Schicht: Ein globaler Lastausgleichsmechanismus leitet Benutzer zum nächstgelegenen regionalen Cluster. Ein CDN oder Edge-Cache (Cloudflare Workers, CloudFront) speichert beliebte Weiterleitungszuordnungen am Edge, um eine Latenz von unter 80 ms P95 zu erreichen. 2. API-Gateway und Ratenbegrenzer...

Vollstandige Antwort anzeigen

Hochrangige Architektur und Hauptkomponenten Das System ist in mehrere Ebenen unterteilt, die in mindestens zwei geografischen Regionen (US-Ost und EU-West) hinter einem globalen Anycast-DNS oder einem globalen Lastausgleichsmechanismus wie AWS Global Accelerator oder Cloudflare bereitgestellt werden. 1. Edge- und CDN-Schicht: Ein globaler Lastausgleichsmechanismus leitet Benutzer zum nächstgelegenen regionalen Cluster. Ein CDN oder Edge-Cache (Cloudflare Workers, CloudFront) speichert beliebte Weiterleitungszuordnungen am Edge, um eine Latenz von unter 80 ms P95 zu erreichen. 2. API-Gateway und Ratenbegrenzer: Jede Region betreibt ein API-Gateway, das Authentifizierung, Ratenbegrenzung und Anforderungsrouting übernimmt. Die Ratenbegrenzung verwendet einen gleitenden Fensterzähler, der von Redis unterstützt wird, um missbräuchliche Erstellungsmuster zu drosseln. 3. Link-Erstellungsdienst: Zustandsloser Dienst hinter dem API-Gateway. Akzeptiert lange URLs, optionale benutzerdefinierte Aliase, optionales Ablaufdatum und gibt einen kurzen Code zurück. Schreibt in die primäre Datenbank und invalidiert oder erwärmt den Cache. 4. Weiterleitungsdienst: Der am häufigsten genutzte Pfad. Empfängt GET-Anfragen für kurze Codes, sucht die Ziel-URL (zuerst Cache, dann Datenbank), gibt eine HTTP-301- oder 302-Weiterleitung aus und sendet ein Klickereignis an die Analysepipeline. Verwendet 302-Weiterleitungen, damit der Dienst die Anfrage für die Analyse immer sieht, gibt aber einen Cache-Control-Header mit einer kurzen TTL (z. B. 60 Sekunden) zurück, damit Browser und CDN-Edges cachen können. 5. Analysepipeline: Klickereignisse werden an einen verteilten Stream (Kafka oder AWS Kinesis) gesendet. Ein Stream-Prozessor (Flink oder Kafka Streams) aggregiert Klicks pro Link in rollierenden Fenstern von einer Minute und schreibt die Rollups in einen Analyse-Speicher. Eine einfache API liefert aggregierte Analysen. 6. Missbrauchspräventionsdienst: Bei der Link-Erstellung wird die Ziel-URL mit der Google Safe Browsing API und einer internen Sperrliste abgeglichen. Ein leichter ML-Scorer kennzeichnet verdächtige Muster (Massen-Erstellung, bekannte Spam-Domains). Gekennzeichnete Links werden zur Überprüfung zurückgehalten oder abgelehnt. 7. Ablauf- und Bereinigungs-Worker: Ein periodischer Job (Cron oder geplante Lambda-Funktion) sucht nach abgelaufenen Links und löscht sie weich, indem er sie aus dem Cache entfernt. Kern-Datenmodell und Speicherentscheidungen Primärer Link-Speicher: Eine verteilte NoSQL-Datenbank wie Amazon DynamoDB oder Apache Cassandra. Die Tabelle wird nach short_code (Partitionsschlüssel) indiziert. Schemefelder: short_code (String, Primärschlüssel), long_url (String), user_id (String), created_at (Timestamp), expires_at (Timestamp, nullable), custom_alias (Boolean), updated_at (Timestamp). DynamoDB wird wegen seiner Lesezeiten im einstelligen Millisekundenbereich, der automatischen Multi-Region-Replikation über Global Tables und der verwalteten Skalierung gewählt. Cassandra ist eine Alternative für Teams, die eine Anbieterunabhängigkeit anstreben. Cache-Schicht: Redis Cluster (oder ElastiCache) in jeder Region. Cache-Eintrag: short_code -> long_url mit einer TTL, die dem Link-Ablaufdatum entspricht, oder einem Standardwert von 24 Stunden. Cache-Aside-Muster: Der Weiterleitungsdienst prüft zuerst Redis; bei einem Miss wird aus DynamoDB gelesen und Redis befüllt. Analyse-Speicher: Ein Zeitreihen- oder spaltenorientierter Speicher. ClickHouse oder Amazon Timestream speichert Klick-Aggregate pro Link mit Dimensionen: short_code, timestamp_bucket, country, referrer, device_type. Vorkompilierte Rollups mit Granularität von 1 Minute, 1 Stunde und 1 Tag. Benutzer- und Konto-Speicher: Eine relationale Datenbank (PostgreSQL über RDS) speichert Benutzerkonten, API-Schlüssel, Abrechnungsinformationen und Metadaten zum Link-Besitz. Dieser hat weniger Traffic und profitiert von starker Konsistenz und relationalen Abfragen. API-Design Kurzen Link erstellen: POST /api/v1/links. Anforderungskörper: long_url (erforderlich), custom_alias (optional), expires_at (optional). Antwort: 201 Created mit short_code, short_url, created_at, expires_at. Fehler: 409 Conflict, wenn benutzerdefinierter Alias belegt ist, 400 bei ungültiger URL, 403 bei erkannten Missbrauch. Ziel-URL aktualisieren: PATCH /api/v1/links/{short_code}. Anforderungskörper: long_url. Nur erlaubt innerhalb von 10 Minuten nach created_at. Antwort: 200 OK mit aktualisiertem Datensatz. Fehler: 403 außerhalb des 10-Minuten-Fensters oder wenn nicht der Eigentümer. Auflösen (Weiterleiten): GET /{short_code}. Antwort: 302 Found mit Location-Header auf long_url gesetzt. Wenn abgelaufen oder nicht gefunden: 404. Der Weiterleitungsdienst setzt auch Antwort-Header für die Cache-Steuerung. Analysen lesen: GET /api/v1/links/{short_code}/analytics?start=...&end=...&granularity=hour. Antwort: 200 OK mit Array von zeitlich gruppierten Klickzahlen, Top-Ländern, Top-Referrern. Link löschen: DELETE /api/v1/links/{short_code}. Löscht den Link weich und invalidiert den Cache. ID-Generierungsstrategie Kurze Codes sind 7 Zeichen aus einem Base-62-Alphabet (a-z, A-Z, 0-9), was etwa 3,5 Billionen mögliche Codes ergibt, weit mehr als das erwartete Link-Volumen über viele Jahre. Generierungsansatz: Jeder Dienstinstanz wird eine eindeutige Worker-ID zugewiesen (von einem Koordinationsdienst oder einer Konfiguration). Ein Snowflake-ähnlicher ID-Generator erzeugt eine 64-Bit-eindeutige Ganzzahl, die eine Zeitstempelkomponente, eine Worker-ID und eine Sequenznummer kombiniert. Die Ganzzahl wird dann Base-62-kodiert und auf 7 Zeichen gekürzt oder aufgefüllt. Dies vermeidet die Koordination bei jedem Schreibvorgang und garantiert Eindeutigkeit. Für benutzerdefinierte Aliase versucht der Dienst, mit einer Eindeutigkeitsbeschränkung einzufügen; bei einem Konflikt gibt er 409 zurück. Skalierungsstrategie für Traffic-Wachstum und Burst-Handling Steady-State-Mathematik: 1,5 Milliarden Weiterleitungen pro Monat sind etwa 580 Anfragen pro Sekunde im Durchschnitt, mit Spitzen bei Nachrichtenereignissen, die potenziell das 10- bis 50-fache erreichen, sodass der Weiterleitungspfad mindestens 30.000 RPS pro Region bewältigen muss. Link-Erstellung mit 120 Millionen pro Monat sind etwa 46 RPS im Durchschnitt. Skalierung des Weiterleitungspfads: Der Weiterleitungsdienst ist zustandslos und horizontal skalierbar hinter einer Auto-Scaling-Gruppe. Redis verarbeitet die überwiegende Mehrheit der Leseanfragen; DynamoDB On-Demand-Kapazität verarbeitet Cache-Misses. Der CDN-Edge-Cache absorbiert einen großen Teil wiederholter Anfragen für virale Links und reduziert die Origin-Last. Burst-Handling: Auto-Scaling-Richtlinien basierend auf CPU und Anforderungsanzahl mit aggressivem Scale-Out (50 Prozent Kapazität in 60 Sekunden hinzufügen). Redis-Cluster kann mit Read Replicas vorkonfiguriert werden. DynamoDB im On-Demand-Modus absorbiert Burst-Schreib- und Leseanfragen ohne Vorab-Provisionierung. Das CDN absorbiert natürlich Burst-Lese-Traffic für heiße Links. Skalierung des Erstellungspfads: Weniger bursty, aber immer noch auto-skaliert. Schreibvorgänge gehen an die regionale DynamoDB Global Table, die asynchron in andere Regionen repliziert. Skalierung der Analysepipeline: Kafka-Partitionen sind nach short_code für Parallelität indiziert. Die Flink-Consumer-Gruppe skaliert horizontal. Der ClickHouse-Cluster kann Shards für den Abfrage-Durchsatz hinzufügen. Zuverlässigkeit und Notfallwiederherstellung Multi-Region Active-Active: DynamoDB Global Tables replizieren Daten über US-Ost und EU-West mit Last-Writer-Wins-Konfliktlösung. Beide Regionen bedienen Lese- und Schreibvorgänge. Wenn eine Region ausfällt, leiten DNS-Health-Checks (Route 53 oder Äquivalent) den gesamten Traffic innerhalb von Sekunden zur überlebenden Region. Redis-Replikation: Jede Region hat ihren eigenen Redis-Cluster, der aus der lokalen DynamoDB-Replik gefüllt wird. Wenn Redis ausfällt, greift der Weiterleitungsdienst auf DynamoDB-Lesevorgänge mit leicht höherer Latenz zurück. Kafka-Haltbarkeit: Kafka-Topics haben einen Replikationsfaktor von 3 mit min.insync.replicas=2. Wenn die Analysepipeline hinterherhinkt, werden Klickereignisse mindestens 72 Stunden in Kafka aufbewahrt, um sie erneut abzuspielen. Backups: DynamoDB Point-in-Time-Recovery ist aktiviert. PostgreSQL hat automatisierte tägliche Snapshots mit Cross-Region-Replikation. ClickHouse-Daten werden täglich nach S3 gesichert. Graceful Degradation: Wenn der Missbrauchsprüfdienst langsam ist, werden Erstellungsanfragen mit einem Flag zur asynchronen Überprüfung fortgesetzt, anstatt blockiert zu werden. Wenn die Analysepipeline ausgefallen ist, werden Weiterleitungen ohne Beeinträchtigung fortgesetzt; Klickereignisse werden in Kafka in die Warteschlange gestellt. Wichtige Kompromisse ID-Generierung: Snowflake-ähnliche IDs vermeiden einen zentralen Zähler-Engpass, erfordern aber die Koordination von Worker-IDs. Base-62-Kodierung von 64-Bit-IDs ergibt kurze, URL-sichere Codes. Kompromiss: etwas längere Codes (7 Zeichen) als unbedingt notwendig, um Kollisionen zu vermeiden und zukünftiges Wachstum zu ermöglichen. Datenbankauswahl: DynamoDB wurde wegen seiner verwalteten Skalierung, Lesezeiten mit geringer Latenz und integrierten globalen Replikation gewählt. Kompromiss: eventual consistency über Regionen hinweg (akzeptabel, da die Link-Erstellung über Regionen hinweg nicht latenzkritisch ist und Weiterleitungen in derselben Region konsistent sind). Cassandra würde ähnliche Eigenschaften mit mehr Betriebsaufwand, aber ohne Anbieterbindung bieten. Caching: Cache-Aside mit Redis ermöglicht Lesezeiten im Sub-Millisekundenbereich für heiße Links. Kompromiss: Cache-Invalidierung bei URL-Updates innerhalb des 10-Minuten-Fensters erfordert eine explizite Invalidierung über Regionen hinweg, was ein kurzes Fenster mit veralteten Daten einführt (abgemildert durch kurze Cache-TTLs für kürzlich erstellte Links, z. B. 30 Sekunden für Links, die jünger als 10 Minuten sind). Konsistenz: Das System bevorzugt Verfügbarkeit und Partitionstoleranz (AP in CAP-Begriffen). Weiterleitungslesevorgänge sind eventually consistent, was akzeptabel ist. Das 10-Minuten-Update-Fenster wird auf Anwendungsebene durchgesetzt; in seltenen Split-Brain-Szenarien kann es kurzzeitig zu einer veralteten Weiterleitung kommen. Analysepipeline: Kafka plus Flink plus ClickHouse liefert nahezu Echtzeit-Analysen innerhalb des 5-Minuten-SLA. Kompromiss: Dies erhöht die betriebliche Komplexität. Eine einfachere Alternative wäre, Klickprotokolle nach S3 zu schreiben und mit Athena abzufragen, aber das würde die Anforderung der 5-Minuten-Aktualität nicht erfüllen. 302 vs. 301 Weiterleitungen: 302 (temporär) wird verwendet, damit der Dienst jeden Klick für die Analyse sieht. Kompromiss: etwas höhere Latenz für wiederkehrende Besucher im Vergleich zu 301, aber der CDN-Edge-Cache mit einer 60-Sekunden-TTL mildert dies ab und erfasst dennoch die meisten Klicks. Überwachung und Fehlererkennung Metriken: Jeder Dienst gibt Metriken an ein Zeitreihen-Überwachungssystem aus (Prometheus plus Grafana oder CloudWatch). Wichtige Metriken sind P50, P95 und P99 Latenz bei Weiterleitungen; Cache-Hit-Rate (Ziel über 95 Prozent); verbrauchte Lese- und Schreibkapazität von DynamoDB; Kafka-Consumer-Lag; Fehlerraten nach Endpunkt; Link-Erstellungsrate. Alarmierung: PagerDuty-Alarme bei Weiterleitungs-P95-Latenz über 80 ms, Cache-Hit-Rate unter 90 Prozent, Kafka-Consumer-Lag über 5 Minuten (Analytics-SLA), Fehlerrate über 1 Prozent an jedem Endpunkt und Ausfall von regionalen Health-Checks. Verteiltes Tracing: OpenTelemetry-Traces über den Weiterleitungspfad (Edge zu Cache zu Datenbank zu Antwort), um Latenzregressionen zu diagnostizieren. Synthetische Überwachung: Canary-Anfragen von mehreren geografischen Standorten erstellen und lösen kontinuierlich kurze Links auf, die alarmieren, wenn die End-to-End-Latenz oder Korrektheit abnimmt. Log-Aggregation: Strukturierte Logs werden an ein zentrales System (ELK oder CloudWatch Logs) für Debugging und Audit-Trails gesendet. Health Checks: Jeder Dienst stellt einen Health-Endpunkt bereit. Der Lastausgleichsmechanismus entfernt fehlerhafte Instanzen. Cross-Region-Health-Checks lösen DNS-Failover aus. Zusätzliche Annahmen: Benutzer authentifizieren sich über API-Schlüssel für Link-Erstellung und Analysen. Anonyme Link-Erstellung wird nach IP-Adresse ratenbegrenzt. Das System läuft auf AWS, aber das Design ist portabel. Kurze Codes sind case-sensitiv. Der Dienst muss kurzfristig keine Milliarden von gleichzeitig aktiven Links unterstützen, aber der 7-Zeichen-Code-Raum ermöglicht ein Wachstum auf Billionen.

Ergebnis

#1 | Sieger

Siegstimmen

3 / 3

Durchschnittsscore

88
Bewertungsmodelle OpenAI GPT-5.4

Gesamtpunktzahl

86

Gesamtkommentar

Antwort B ist stark, konkret und gut auf die Arbeitslast- und Latenzanforderungen abgestimmt. Sie präsentiert eine praktische globale Architektur mit Edge-Caching, regionalen Clustern, einem zustandslosen Weiterleitungspfad, asynchroner Analyse und expliziten Missbrauchskontrollen. Sie liefert nützliche Skalierungsberechnungen, eine klare API-Struktur, detaillierte Speicherentscheidungen und durchdachte Kompromisse zwischen 302 und 301, Cache-Invalidierung, eventual consistency und Multi-Region-Replikation. Ihre Hauptschwäche ist eine potenziell fragwürdige Aussage über das Abschneiden oder Auffüllen von kodierten Snowflake-IDs auf 7 Zeichen, was die Einzigartigkeit untergraben könnte, wenn es wörtlich genommen wird, und einige Entscheidungen sind eher anbieterspezifisch. Insgesamt ist sie besser implementierbar und besser auf die angegebenen Einschränkungen abgestimmt.

Bewertungsdetails anzeigen

Architekturqualitat

Gewichtung 30%
86

Die Architektur ist gut um die kritischen Pfade herum strukturiert: Edge oder CDN, regionale API- und Weiterleitungsdienste, Cache, primärer Speicher und asynchrone Analyse. Sie zielt direkt auf die Latenz- und Burst-Anforderungen mit Edge-Caching und aktiver/aktiver Platzierung regionaler Dienste ab.

Vollstandigkeit

Gewichtung 20%
87

Sie deckt alle angeforderten Bereiche gut ab, einschließlich Create, Resolve, Analytics APIs, Update-Window-Handling, Ablauf, Missbrauchsprävention, Überwachung und DR. Sie enthält auch nützliche zusätzliche Annahmen und eine Delete-API, was die Verwaltbarkeit abrundet.

Trade-off-Analyse

Gewichtung 20%
85

Kompromisse werden konkret diskutiert und mit den Anforderungen verknüpft, wie z. B. 302 gegenüber 301 für Analysen, DynamoDB gegenüber Cassandra, Cache-Veralterung während des Update-Fensters und Stream-Verarbeitung gegenüber Batch-Analysen. Die Argumentation ist praktisch und zeigt ein Bewusstsein für operative Konsequenzen.

Skalierbarkeit und Zuverlassigkeit

Gewichtung 20%
88

Dies ist ein starker Bereich für Antwort B. Sie schätzt den durchschnittlichen und Spitzenverkehr, entwirft für Burst-Absorption mit CDN, Redis und On-Demand-Skalierung und erklärt das aktive/aktive Verhalten über mehrere Regionen hinweg, die Haltbarkeit von Warteschlangen, den Cache-Fallback und die schrittweise Verschlechterung auf konkrete Weise.

Klarheit

Gewichtung 10%
84

Die Antwort ist organisiert, direkt und spezifisch. Es ist einfach, von den Anforderungen zu den Designentscheidungen zu verfolgen, und der Text konzentriert sich auf implementierbare Entscheidungen und nicht auf eine breite Katalogisierung von Optionen.

Gesamtpunktzahl

83

Gesamtkommentar

Antwort B ist in fast allen Dimensionen deutlich stärker. Sie beginnt mit konkreten Kapazitätsberechnungen (durchschnittlich 580 RPS, Spitzenwert 30.000 RPS), die alle nachfolgenden Designentscheidungen untermauern. Sie adressiert explizit die Anforderung einer Latenzzeit von unter 80 ms (P95) durch CDN/Edge-Caching und erklärt den Kompromiss zwischen 302 und 301 mit seinen Auswirkungen auf die Analyse. Die Multi-Region-Aktiv-Aktiv-Strategie mit DynamoDB Global Tables ist spezifisch und umsetzbar. Die unterschiedliche Cache-TTL für kürzlich erstellte Links (30s für Links, die jünger als 10 Minuten sind) löst elegant das Problem der Konsistenz im Update-Fenster. Die Missbrauchsprävention, der Ablauf-Worker und die Analyse-Pipeline sind alle konkreter spezifiziert. Die Überwachungsschwellenwerte sind an die angegebenen SLAs gebunden. Die Antwort ist intern konsistent und implementierbar.

Bewertungsdetails anzeigen

Architekturqualitat

Gewichtung 30%
85

B hat eine gut geschichtete Architektur: Edge/CDN, API-Gateway, Erstellungsdienst, Weiterleitungsdienst, Analyse-Pipeline, Missbrauchsprävention und Ablauf-Worker sind klar getrennt. Der CDN-Edge-Cache ist explizit mit dem Latenz-SLA verknüpft. Das Aktiv-Aktiv-Multi-Region-Design mit DynamoDB Global Tables ist konkret und kohärent.

Vollstandigkeit

Gewichtung 20%
82

B deckt alle erforderlichen Abschnitte ab und fügt wichtige Details hinzu: Kapazitätsberechnungen, 302 vs. 301 Kompromiss, CDN-Edge-Caching, differenzierte Cache-TTLs für kürzlich erstellte Links, Ablauf-Worker, Missbrauchsprävention zur Erstellungszeit und Kafka-Aufbewahrung für Replay. Der zusätzliche Abschnitt mit Annahmen ist ebenfalls hilfreich.

Trade-off-Analyse

Gewichtung 20%
83

B begründet Kompromisse mit Spezifität: Die Wahl zwischen 302 und 301 ist an Analyseanforderungen gebunden und wird durch CDN-TTL gemildert; die Differenzierung der Cache-TTL für kürzlich erstellte Links adressiert direkt das Update-Fenster; DynamoDB vs. Cassandra Kompromisse beinhalten Vendor Lock-in; die Komplexität der Analyse-Pipeline vs. die Einfachheit von S3/Athena wird explizit mit dem 5-Minuten-SLA verglichen.

Skalierbarkeit und Zuverlassigkeit

Gewichtung 20%
84

B liefert Kapazitätsberechnungen (580 RPS im Durchschnitt, 30.000 RPS Spitzenwert), spezifiziert Auto-Scaling-Richtlinien (50 % Kapazität in 60 Sekunden), verwendet DynamoDB On-Demand zur Aufnahme von Spitzenlasten und beschreibt DNS-Health-Check-basiertes Failover mit spezifischem Timing. Redis-Fallback auf DynamoDB bei Ausfall und Kafka 72-Stunden-Aufbewahrung für Replay sind konkrete Zuverlässigkeitsmechanismen.

Klarheit

Gewichtung 10%
78

B ist klar in flüssiger Prosa mit guter Struktur geschrieben. Sie ist etwas dichter als A, aber jeder Absatz enthält substanzielle Inhalte. Das Fehlen eines Diagramms ist eine geringfügige Schwäche, aber die Prosa-Beschreibungen sind präzise genug, um dies auszugleichen.

Bewertungsmodelle Google Gemini 2.5 Pro

Gesamtpunktzahl

95

Gesamtkommentar

Antwort B präsentiert ein herausragendes, produktionsreifes Design, das tiefgreifende Expertise zeigt. Sie zeichnet sich durch hochspezifische und gut begründete Implementierungsdetails aus, wie die Verwendung einer CDN-Edge-Schicht für Latenz, DynamoDB Global Tables für ein verwaltetes Active-Active-Multi-Region-Setup und einen Snowflake-ähnlichen ID-Generator. Die Abwägung von Kompromissen ist außerordentlich stark, insbesondere die nuancierten Diskussionen über 301 vs. 302 Redirects und Strategien zur Cache-Invalidierung für kürzlich aktualisierte Links. Die Einbeziehung von "Back-of-the-envelope"-Berechnungen für den Traffic untermauert das Design zusätzlich mit der Realität. Diese Antwort ist nicht nur korrekt, sondern auch praktisch und aufschlussreich.

Bewertungsdetails anzeigen

Architekturqualitat

Gewichtung 30%
95

Die Architektur ist herausragend. Sie beginnt mit einer globalen Edge/CDN-Schicht, die für die Erfüllung der Latenzziele entscheidend ist. Die Wahl eines verwalteten Active-Active-Multi-Region-Setups mit DynamoDB Global Tables ist spezifisch, modern und perfekt auf die Anforderungen zugeschnitten. Die Trennung des Benutzer-/Account-Speichers in eine relationale Datenbank ist ebenfalls ein praktisches und durchdachtes Detail.

Vollstandigkeit

Gewichtung 20%
95

Diese Antwort ist äußerst vollständig. Sie deckt alle Anforderungen der Aufgabenstellung detailliert ab und geht sogar noch weiter, indem sie einen "Abuse Prevention Service" und einen "Expiry and Cleanup Worker" als eigenständige Komponenten definiert und einen hilfreichen Abschnitt "Zusätzliche Annahmen" hinzufügt.

Trade-off-Analyse

Gewichtung 20%
98

Die Abwägung von Kompromissen ist außergewöhnlich und ein wichtiges Unterscheidungsmerkmal. Die Diskussion über 302 vs. 301 Redirects für Analysezwecke, die spezifische Herausforderung der Cache-Invalidierung für das 10-Minuten-Update-Fenster und die klare Formulierung der Bevorzugung von Verfügbarkeit (AP in CAP) sind alles Anzeichen für tiefgreifende, praktische Expertise.

Skalierbarkeit und Zuverlassigkeit

Gewichtung 20%
95

Der Plan für Skalierbarkeit und Zuverlässigkeit ist konkreter und überzeugender. Er beginnt mit "Back-of-the-envelope"-Berechnungen, um den erforderlichen Umfang zu quantifizieren. Anschließend werden spezifische, robuste Lösungen wie DynamoDB On-Demand-Kapazität für Spitzenlasten, aggressive Auto-Scaling-Richtlinien und eine klare Active-Active-Disaster-Recovery-Strategie mit Global Tables vorgeschlagen.

Klarheit

Gewichtung 10%
90

Die Antwort ist außerordentlich klar und gut organisiert. Der logische Fluss von der übergeordneten Architektur bis zu den spezifischen Kompromissen ist leicht nachvollziehbar. Die Formulierung ist prägnant und genau.

Vergleichsuebersicht

Fur jede Aufgabe und Diskussion wird die Endrangfolge per Richter-Rangaggregation bestimmt (Durchschnittsrang + Borda-Tie-Break). Der Durchschnittsscore wird als Referenz angezeigt.

Bewerter: 3

Siegstimmen

0 / 3

Durchschnittsscore

73
Diese Antwort ansehen

Siegstimmen

3 / 3

Durchschnittsscore

88
Diese Antwort ansehen

Bewertungsergebnisse

Bewertungsmodelle Google Gemini 2.5 Pro

Warum diese Seite gewann

Antwort B gewinnt, da sie ein spezifischeres, praktischeres und tiefer begründetes Design bietet. Während Antwort A sehr gut ist und alle Anforderungen abdeckt, sind die Designentscheidungen von Antwort B konkreter und moderner (z. B. DynamoDB Global Tables für Active-Active Multi-Region). Ihre Abwägung von Kompromissen ist deutlich nuancierter, insbesondere die Diskussion über 301 vs. 302 Redirects und Caching-Strategien, die für dieses spezifische Problem entscheidende Details sind. Bs Einbeziehung von Leistungsberechnungen und einer klaren Edge-Caching-Strategie macht auch ihren Ansatz zur Erfüllung der strengen Latenzanforderungen überzeugender.

Warum diese Seite gewann

Antwort B gewinnt, da sie in jedem Kriterium rigoroser und vollständiger ist. Sie liefert quantitative Kapazitätsschätzungen, die Designentscheidungen rechtfertigen, adressiert explizit die Latenz-SLA mit CDN-Edge-Caching, bietet eine konkretere und umsetzbarere Multi-Region-Zuverlässigkeitsstrategie, löst das Problem der Cache-Invalidierung im 10-Minuten-Update-Fenster mit einer spezifischen Lösung und verknüpft Monitoring-Alerts mit den angegebenen SLAs. Antwort A behandelt dieselben Themen, jedoch auf einer oberflächlicheren Ebene ohne die quantitative Begründung oder die nuancierte Abwägungsanalyse, die B eindeutig überlegen macht.

Bewertungsmodelle OpenAI GPT-5.4

Warum diese Seite gewann

Antwort B gewinnt, da sie in den wichtigsten Dimensionen dieser Aufgabe konkreter und operativ glaubwürdiger ist: geringe Latenz bei globalen Weiterleitungen, Bewältigung von Spitzenlasten, Verfügbarkeit in mehreren Regionen, nahezu Echtzeit-Analysen und eine praktische Abwägung von Kompromissen. Sie befasst sich ausdrücklich mit Edge-Caching, aktiver/aktiver regionaler Bereitstellung, Kapazitätsschätzungen, Stream-basierten Analysen und dem Verhalten bei Ausfällen auf eine Weise, die eng mit der Aufforderung übereinstimmt. Antwort A ist solide, aber allgemeiner und weniger präzise darin, wie das Design die spezifischen Einschränkungen hinsichtlich Latenz, Spitzenlasten und Notfallwiederherstellung erfüllt.

X f L