🏆 Master-Abschlussprojekt

Master 16: High-Concurrency URL Shortener & Analytics API

Das ultimative Meisterstück: Vereine Goroutines, Channel-Workerpools, sync.RWMutex, net/http REST-Routing und Middleware zu einem produktionsreifen Cloud-Microservice.

📂 Dateien dieses Master-Projekts:
📄 aufgabe.go (Startercode) 🧪 test_aufgabe.go (Tests) 💡 musterloesung.go (Lösung) 📖 README.md

🏛️ 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!

[Client HTTP Request: GET /r/{code}]
        │
        ▼
[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)

🎯 Aufgaben & Checkliste in aufgabe.go

💻 In Web-IDE öffnen → ← Zurück zu Go 15 🏆 Go-Kurs abschließen →