🏛️ 1. Die Microservice-Architektur im Überblick
In diesem Master-Abschlussprojekt entwickelst du einen hochgradig nebenläufigen URL Shortener & Realtime Analytics Microservice. Bei zehntausenden Aufrufen pro Sekunde darf die Weiterleitung nicht durch langsame Datenbank-Schreibzugriffe blockieren – Klick-Events werden asynchron über gepufferte Go-Channels an einen Goroutine-Worker-Pool delegiert!
│
▼
[1. Resolve Handler] ──(Schneller sync.RWMutex Read)──> Liefert Redirect sofort in <1ms!
│
├─► [Asynchrones ClickEvent] ──> [ Buffered Event Queue: chan ClickEvent ]
│
┌───────────────┼───────────────┐
▼ ▼ ▼
[Worker Goroutine 1] [Worker Goroutine 2] [Worker Goroutine 3]
│ │ │
└───────────────┬───────────────┘
▼
[Analytics Aggregation & Storage]
🚀 1. Non-Blocking I/O
Sub-Millisekunden Redirects durch Entkopplung von Klick-Verarbeitung und HTTP-Response.
🛡️ 2. Thread-Safe Storage
Parallele Lesezugriffe mit sync.RWMutex und atomare Zähler mit sync/atomic.
⚡ 3. Worker-Pool & WaitGroup
Kontrollierte Parallelität ohne Thread-Exhaustion und deterministischer Graceful Shutdown.
📡 2. REST-API Endpunkte
| Methode | Endpoint | Payload / Query | Beschreibung |
|---|---|---|---|
POST |
/api/shorten |
{"url": "https://..."} |
Kürzt eine URL und liefert den short_code |
GET |
/r/{short_code} |
- | Löst Kurz-URL auf & reiht Klick-Event asynchron ein |
GET |
/api/stats/{short_code} |
- | Liefert Klick-Statistiken und Unique IPs als JSON |
GET |
/api/metrics |
- | Liefert System-Metriken (Total URLs, Processed Events) |