Was ist Mini CDN ?
Mini-CDN ist ein von Gruppe 8 im Modul Verteilte Systeme entwickeltes vereinfachtes Content Delivery Network (CDN).
Das System besteht aus einem Origin-Server, einem Router und mehreren Edge-Servern.
Der Origin-Server speichert die Originaldateien. Edge-Server cachen Inhalte regional, um Downloads näher am Benutzer bereitzustellen. Der Router übernimmt die Weiterleitung von Anfragen und entscheidet anhand der Region, welche Edge-Instanz verwendet wird.
Benutzer können über die CLI Dateien herunterladen. Administratoren können Dateien hochladen, die Infrastruktur verwalten sowie Statistiken und Laufzeitinformationen des Systems abrufen.
Im Projekt bezeichnet der Begriff Server jeweils einen eigenständigen HTTP-Port.
Die Anwendung basiert auf einer Client-Server-Architektur und ist als Multi-Maven-Projekt umgesetzt.
Voraussetzungen unter Linux / macOS
java -version # Java 21
mvn -version
cp .env.example .envCLI Befehle @ Mini-CDN
Für einen vollständigen Build inklusive Prüfungen
mvn clean verify
Falls nur die Artefakte gebaut werden sollen
mvn clean package
Nur die CLI bauen
mvn -pl cli -am package -DskipTests
Code Formatierung & Analyse
Spotless Formartierung
mvn spotless:apply
Spotbugs Analyse
mvn spotbugs:check
Start der Anwendung
java -jar cli/target/cli-1.0-SNAPSHOT-exec.jar system initLogin in der CLI
Login als bestehender Benutzer:
system login --name admin
IMPORTANT
Einige Benutzerbefehle wie
user stats… setzen einen Login voraus.
Prüfen der laufenden Dienste
lsof -i:8080 -i:8081 -i:8082
Health-Endpoint des Origin prüfen:
curl http://localhost:8080/api/origin/health
Health-Endpoint des Routers prüfen:
curl http://localhost:8082/api/cdn/health
Beispielbefehle der CLI
Admin: Datei hochladen
admin file upload --region EU --path docs/a.pdf --file ./a.pdfOptional mit expliziter Router-URL:
admin file upload --router http://localhost:8082 --region EU --path docs/a.pdf --file ./a.pdf
Admin: Dateien anzeigen
Dateiliste über den Router:
admin file listMetadaten zu einer Datei anzeigen:
admin file show --path docs/a.pdfDatei über den Router herunterladen:
admin file download --region EU --path docs/a.pdf --out ./a.pdfDatei löschen:
admin file delete --region EU --path docs/a.pdfAdmin: Statistiken anzeigen
admin stats showMit explizitem Host:
admin stats show --host http://localhost:8082JSON-Ausgabe:
admin stats show --jsonAdmin: Verwaltete Edge-Instanzen anzeigen
admin edge managedAdmin: Neue Edge-Instanz starten
admin edge start --region EU --port 8085 --origin http://localhost:8080 --auto-register=true --wait-readyadmin edge start —region EU —port 8085 —origin http://localhost:8080 —auto-register=true —wait-ready
Admin: Origin-Konfiguration
Aktuelle Origin-Konfiguration anzeigen:
admin config origin show
Origin-Konfiguration ändern:
admin config origin set --max-upload-bytes 1048576 admin config origin set --log-level INFOExpliziten Origin angeben:
admin config origin show --origin http://localhost:8080Admin: Origin-Spare-Verwaltung
Registrierte aktive/spare Origins anzeigen:
admin config origin spare showOptional mit Health-Check:
admin config origin spare show --check-healthSpare Origin hinzufügen:
admin config origin spare add --url http://localhost:8084Weitere nützliche Befehle:
admin config origin spare remove --url http://localhost:8084 admin config origin spare promote --url http://localhost:8084 admin config origin spare failover-checkAdmin: Edge-Konfiguration
Aktuelle Edge-Konfiguration anzeigen:
admin config edge showEdge-Konfiguration ändern:
admin config edge set --default-ttl-ms 120000 --max-entries 200Explizite Edge-URL angeben:
admin config edge show --edge http://localhost:8081Optional können auch weitere Parameter gesetzt werden:
admin config edge set --region EU --replacement-strategy LFUAdmin: Verwaltete Edge-Instanzen
Neue Edge-Instanz starten:
admin edge start --region EU --port 8088 --origin http://localhost:8080 --wait-readyVerwaltete Edge-Instanzen anzeigen:
admin edge managedSpezifische Edge stoppen:
admin edge stop edge-94371 --forceAlle Edges einer Region stoppen:
admin edge stop-region --region EU --forceAdmin: Benutzerverwaltung
Neuen Benutzer anlegen:
admin user add --name alice --role 1Rollen:
- 0 = USER
- 1 = ADMIN
Benutzer auflisten:
admin user listBenutzer löschen:
admin user delete --id 3Admin: Health-Checks mit Ping
Router prüfen:
admin ping -H http://localhost:8082 -p api/cdn/healthOrigin prüfen:
admin ping -H http://localhost:8080 -p api/origin/healthUser: Datei herunterladen
Datei über den Router herunterladen:
user file download --region EU --path pdfTest.pdf --out ./manual3.pdf --host http://localhost:8082
User: Dateistatistiken
Statistiken für eine bestimmte Datei anzeigen:
user stats file --file-id 1Dateistatistikliste anzeigen:
user stats list user stats list --limit 20Gesamtstatistik des aktuell eingeloggten Benutzers anzeigen:
user stats overall
user stats overall --window-sec 7200client seitiger schutz - server seitiger schutu nicht vorhanden