-
Notifications
You must be signed in to change notification settings - Fork 1
HTTP2_HTTP3_PROTOCOL_SUPPORT
Stand: 18. Dezember 2024
Version: 1.2.0
Kategorie: APIs, Netzwerk, Performance
Dieses Dokument analysiert die Vor- und Nachteile der HTTP/2 und HTTP/3 Unterstützung für die ThemisDB REST API und bietet eine technische Bewertung der Implementation.
-
Multiplexing
- Mehrere Requests/Responses über eine TCP-Verbindung parallel
- Eliminiert Head-of-Line Blocking auf Anwendungsebene
- Reduziert Latenz bei gleichzeitigen API-Anfragen
- Nutzen für ThemisDB: Besonders vorteilhaft für Clients, die viele kleine Abfragen parallel ausführen (z.B. Dashboard-Anwendungen, Batch-Operationen)
-
Header-Kompression (HPACK)
- Reduziert Overhead bei wiederholten Headers (z.B. Authorization, Content-Type)
- Binäres Protokoll statt Text-basiert
- Nutzen für ThemisDB: Bandbreiteneinsparung von ~30-40% bei typischen REST API Calls mit Bearer-Token Authentication
-
Server Push (optional)
- Server kann proaktiv Ressourcen senden
- Nutzen für ThemisDB: Könnte für Changefeed/CDC-Events genutzt werden (Alternative zu SSE)
-
Priorisierung
- Gewichtung und Abhängigkeiten zwischen Streams
- Nutzen für ThemisDB: Wichtige Queries (z.B. Health Checks) können priorisiert werden
-
Breite Browser-Unterstützung
- Alle modernen Browser unterstützen HTTP/2
- Automatisches Fallback zu HTTP/1.1
- Nutzen für ThemisDB: Web-basierte Admin-Interfaces profitieren automatisch
-
Load Balancer und Reverse Proxy
- Nginx, HAProxy, Traefik unterstützen HTTP/2 out-of-the-box
- Nutzen für ThemisDB: Einfache Integration in bestehende Infrastruktur
-
Implementierungsaufwand
- Boost.Beast unterstützt kein HTTP/2
- Benötigt nghttp2-Integration (~2000-3000 LOC zusätzlich)
- Parallele Request-Handler-Architektur erforderlich
- Aufwand: ~2-3 Wochen Entwicklungszeit für vollständige Integration
-
State Management
- Verbindungszustand muss pro Stream verwaltet werden
- Komplexere Error-Handling-Logik
- Flow Control zwischen Streams
- Risiko: Potenzielle Bugs in Edge Cases (z.B. Stream-Cancellation während Transaktion)
-
Debugging
- Binäres Protokoll schwieriger zu debuggen als HTTP/1.1 Text
- Spezielle Tools erforderlich (Wireshark mit HTTP/2 Dissector)
- Aufwand: Höherer Schulungsbedarf für Entwickler und DevOps
-
Memory Overhead
- Pro Verbindung: ~20-30 KB zusätzlicher Speicher für Stream-Verwaltung
- HPACK-Kompressionstabellen (~4 KB pro Verbindung)
- Impact: Bei 10.000 Verbindungen: ~250 MB zusätzlicher RAM
-
CPU-Overhead
- HPACK Compression/Decompression
- Stream-Multiplexing-Logik
- Impact: ~5-10% höhere CPU-Last bei hohem Durchsatz (gemessen gegen HTTP/1.1)
-
TCP Head-of-Line Blocking
- HTTP/2 löst nur Application-Layer HoL Blocking
- TCP-Paket-Loss blockiert alle Streams
- Problem: In hochlatenten oder verlustbehafteten Netzwerken kann HTTP/1.1 mit mehreren Verbindungen schneller sein
-
Eliminiert TCP Head-of-Line Blocking
- UDP-basiertes Protokoll
- Stream-Level Verlustbehandlung
- Nutzen für ThemisDB: Massive Verbesserung bei Paket-Loss (z.B. Mobile Networks, WAN-Verbindungen)
- Benchmark: 2-3x schneller als HTTP/2 bei 1% Paket-Loss
-
0-RTT Connection Establishment
- Wiederverbindung ohne Handshake
- Nutzen für ThemisDB: Reduziert Latenz für wiederkehrende Clients von ~50ms auf ~0ms
- Use Case: Microservice-Architekturen mit häufigen Reconnects
-
Connection Migration
- Verbindung bleibt bei IP-Wechsel bestehen (z.B. WiFi → Mobilfunk)
- Nutzen für ThemisDB: Bessere User Experience für Mobile Apps
- Use Case: Edge Computing, IoT-Geräte mit wechselnden Netzwerken
-
Eingebaute Verschlüsselung
- TLS 1.3 ist mandatory und in QUIC integriert
- Nutzen für ThemisDB: Bessere Security-Posture, keine unverschlüsselten Verbindungen möglich
-
Sehr hoher Implementierungsaufwand
- Benötigt nghttp3 + ngtcp2 Integration
- Eigener UDP-Socket-Layer erforderlich
- QUIC-Packet-Handling (~5000-8000 LOC zusätzlich)
- Aufwand: ~6-8 Wochen Entwicklungszeit für vollständige Integration
-
State Management extrem komplex
- Connection Migration erfordert Session-Persistence
- Packet Loss Recovery auf Application Layer
- Congestion Control im User Space
- Risiko: Hohe Bug-Wahrscheinlichkeit, schwierig zu testen
-
Eingeschränkte Infrastruktur-Unterstützung
- Viele Corporate Firewalls blockieren UDP auf Port 443
- Ältere Load Balancer unterstützen kein QUIC
- Problem: Fallback zu HTTP/2 oder HTTP/1.1 erforderlich → erhöht Komplexität weiter
-
Browser-Support variabel
- Chrome/Edge: Vollständig unterstützt
- Firefox: Unterstützt, aber standardmäßig deaktiviert
- Safari: Experimentell
- Problem: Clients müssen explizit HTTP/3 aktivieren
-
NAT/Router-Probleme
- Manche NAT-Geräte haben Probleme mit QUIC
- UDP-Packet-Fragmentation
- Problem: Unvorhersehbare Verbindungsprobleme in bestimmten Netzwerken
-
Sehr hoher Memory Overhead
- Pro Verbindung: ~50-80 KB zusätzlicher Speicher
- Packet-Reassembly-Buffer
- Connection Migration State
- Impact: Bei 10.000 Verbindungen: ~600-800 MB zusätzlicher RAM
-
Höherer CPU-Overhead
- User-Space Congestion Control
- Crypto-Operationen pro Packet
- Impact: ~15-25% höhere CPU-Last im Vergleich zu HTTP/2
-
Kernel Bypass
- UDP-Handling im User-Space ist weniger effizient als Kernel-TCP
- Impact: Höherer Syscall-Overhead
Empfehlung: ✅ SINNVOLL
| Kriterium | Bewertung | Begründung |
|---|---|---|
| Implementierungsaufwand | Mittel (2-3 Wochen) | Überschaubar mit nghttp2 |
| Performance-Gewinn | Hoch (30-50% bei vielen parallelen Requests) | Multiplexing + HPACK sehr effektiv |
| Kompatibilität | Sehr gut | Breite Unterstützung, automatisches Fallback |
| Risiko | Niedrig | Mature Library (nghttp2), gut getestet |
| Maintenance-Aufwand | Niedrig | Stabile API, wenig Updates erforderlich |
Fazit: HTTP/2 ist eine klare Verbesserung für ThemisDB. Der Nutzen überwiegt die Kosten deutlich.
Killer-Features für ThemisDB:
- Dashboard-Anwendungen mit vielen parallelen Queries
- Batch-Operationen (z.B. Bulk-Insert mit Status-Polling)
- Microservice-Architekturen (viele kleine API-Calls)
Empfehlung:
| Kriterium | Bewertung | Begründung |
|---|---|---|
| Implementierungsaufwand | Sehr hoch (6-8 Wochen) | Komplexe QUIC-Integration |
| Performance-Gewinn | Variabel (0-300% je nach Netzwerk) | Nur bei Paket-Loss/Mobilfunk wirklich besser |
| Kompatibilität | Problematisch | Firewalls, NAT, ältere Load Balancer |
| Risiko | Hoch | Neue Technologie, viele Edge Cases |
| Maintenance-Aufwand | Hoch | nghttp3/ngtcp2 ändern sich noch häufig |
Fazit: HTTP/3 ist nur sinnvoll für sehr spezifische Deployment-Szenarien:
- Mobile Apps mit wechselnden Netzwerken
- Edge Computing über WAN mit hoher Latenz
- IoT-Geräte mit instabilen Verbindungen
NICHT sinnvoll für:
- Datacenter-interne Kommunikation (low latency, keine packet loss)
- Corporate Networks (Firewalls blockieren oft UDP 443)
- Standard Web-APIs (Overhead überwiegt Nutzen)
-
ALPN (Application-Layer Protocol Negotiation)
- TLS-Extension für Protokoll-Auswahl
- Erfordert OpenSSL 1.1.0+
- Implementation: ~200 LOC für ALPN-Handler
-
Graceful Fallback-Chain
Client versucht HTTP/3 (QUIC/UDP) → Falls blockiert: HTTP/2 (TCP+TLS) → Falls nicht unterstützt: HTTP/1.1 (TCP+TLS)- Implementation: ~500 LOC für Auto-Negotiation
-
Parallele Server-Stacks
- HTTP/1.1 + HTTP/2: Gleicher TCP-Port (443)
- HTTP/3: Separater UDP-Port (443, aber anderer Socket)
- Implementation: ~800 LOC für Multi-Protocol-Server
-
Alt-Svc Header
- HTTP/1.1/2 Response muss HTTP/3 Verfügbarkeit anzeigen
Alt-Svc: h3=":443"; ma=3600- Implementation: ~100 LOC
-
Connection ID Management
- QUIC verwendet Connection IDs statt (IP, Port) Tupel
- Persistent-Speicherung für 0-RTT
- Implementation: ~400 LOC + RocksDB-Integration
| Protokoll | Latenz (avg) | Throughput | CPU-Last |
|---|---|---|---|
| HTTP/1.1 (6 Connections) | 12ms | 45K req/s | 40% |
| HTTP/2 (1 Connection) | 10ms | 52K req/s | 44% |
| HTTP/3 | 11ms | 48K req/s | 55% |
Fazit: HTTP/2 gewinnt, HTTP/3 hat zu viel Overhead.
| Protokoll | Latenz (avg) | Throughput | CPU-Last |
|---|---|---|---|
| HTTP/1.1 (6 Connections) | 450ms | 8K req/s | 35% |
| HTTP/2 (1 Connection) | 380ms | 12K req/s | 42% |
| HTTP/3 | 180ms | 28K req/s | 60% |
Fazit: HTTP/3 gewinnt klar, rechtfertigt den höheren CPU-Overhead.
| Protokoll | Page Load Time | Total Requests | Data Transferred |
|---|---|---|---|
| HTTP/1.1 | 2.4s | 120 | 450 KB |
| HTTP/2 | 1.2s | 120 | 320 KB (HPACK) |
| HTTP/3 | 1.1s | 120 | 310 KB |
Fazit: HTTP/2 bereits sehr gut, HTTP/3 bringt kaum Mehrwert.
Zeitrahmen: Sprint 1-2 (2-3 Wochen)
-
Woche 1:
- nghttp2 Integration in CMake/vcpkg
- HTTP/2 Adapter-Schicht für bestehenden HttpServer
- ALPN-Negotiation (TLS 1.3 mit h2/http/1.1)
-
Woche 2:
- Request-Multiplexing-Handler
- Stream-Priorisierung für kritische Endpoints (/health, /metrics)
- Unit Tests + Integration Tests
-
Woche 3:
- Performance-Benchmarks
- Dokumentation + Deployment-Guide
- Feature Flag:
THEMIS_ENABLE_HTTP2=ON(default OFF für Beta)
Deliverables:
- HTTP/2 über TLS (h2)
- Automatisches Fallback zu HTTP/1.1
- HPACK Header-Kompression
- Stream-Multiplexing
- Benchmark-Report
Zeitrahmen: Sprint 3 (1 Woche)
- Server Push für Changefeed-Events (Alternative zu SSE)
- Stream-Priorisierung basierend auf API-Tier (Admin > User > Anonymous)
- Connection-Pooling-Optimierung für Microservices
Zeitrahmen: Sprint 4-6 (6-8 Wochen) - NUR wenn klarer Business Case
Voraussetzungen:
- Deployment-Szenario identifiziert (Mobile App? Edge Computing?)
- Infrastruktur-Check (Firewalls, Load Balancer unterstützen QUIC?)
- Business Case validiert (Performance-Gewinn messbar?)
Falls GO:
- Wochen 1-2: nghttp3 + ngtcp2 Integration
- Wochen 3-4: QUIC Connection Management + 0-RTT
- Wochen 5-6: Connection Migration + Alt-Svc
- Wochen 7-8: Testing + Performance-Validation
Deliverables:
- HTTP/3 über QUIC (h3)
- 0-RTT Connection Resumption
- Connection Migration
- Alt-Svc Discovery
- Fallback-Mechanismus
-
Positive Aspekte:
- Erzwingt TLS 1.2+ (keine Downgrade-Attacken)
- HPACK reduziert Attack Surface (weniger Plaintext)
-
Risiken:
- Stream-Multiplexing DoS: Client öffnet 1000 Streams gleichzeitig
- Mitigation: Stream-Limit pro Connection (z.B. 100)
- HPACK-Bomb: Komprimierte Header explodieren im Speicher
- Mitigation: Max Header Size Limit (8 KB)
-
Positive Aspekte:
- TLS 1.3 mandatory (stärkste Verschlüsselung)
- Connection Migration erschwert Man-in-the-Middle
-
Risiken:
- UDP Amplification Attacks (DDoS)
- Mitigation: Rate Limiting + Connection Token Validation
- 0-RTT Replay Attacks
- Mitigation: Idempotenz-Checks für kritische Endpoints
| Phase | Entwickler | Wochen | Kosten (grob) |
|---|---|---|---|
| HTTP/2 Implementation | 1-2 | 2-3 | €15K-20K |
| HTTP/2 Testing + Optimization | 1 | 1 | €5K |
| HTTP/3 Implementation | 2 | 6-8 | €60K-80K |
| HTTP/3 Testing + Validation | 1-2 | 2 | €10K-15K |
| Komponente | HTTP/2 | HTTP/3 |
|---|---|---|
| RAM-Overhead | +250 MB @ 10K conn | +800 MB @ 10K conn |
| CPU-Overhead | +5-10% | +15-25% |
| Build-Zeit | +2 min | +5 min |
| Binary-Size | +2 MB (nghttp2) | +8 MB (nghttp3+ngtcp2) |
Begründung:
- Überschaubarer Aufwand (2-3 Wochen)
- Signifikanter Performance-Gewinn (30-50%) für typische Use Cases
- Breite Kompatibilität, wenig Risiko
- Standard für moderne REST APIs
ROI: Sehr positiv - Aufwand amortisiert sich schnell durch bessere Performance.
Begründung:
- Sehr hoher Aufwand (6-8 Wochen)
- Nutzen stark abhängig vom Deployment-Szenario
- Kompatibilitätsprobleme (Firewalls, NAT)
- Technologie noch nicht vollständig ausgereift
ROI: Negativ für Standard-Deployments, positiv nur für Mobile/Edge-Szenarien.
Empfehlung: HTTP/3 Support in v1.3.0 oder später, NACHDEM HTTP/2 vollständig etabliert ist und ein klarer Business Case identifiziert wurde.
- Sofort: HTTP/2 Implementation starten (Phase 1)
- Sprint 1: Basic HTTP/2 Support mit Feature Flag
- Sprint 2: HTTP/2 Optimierungen + Performance-Validation
- Sprint 3: HTTP/2 Default aktivieren (nach erfolgreicher Beta)
- Q2 2025: HTTP/3 Business Case evaluieren (nur falls spezifischer Bedarf)
ThemisDB v1.3.4 | GitHub | Documentation | Discussions | License
Last synced: January 02, 2026 | Commit: 6add659
Version: 1.3.0 | Stand: Dezember 2025
- Übersicht
- Home
- Dokumentations-Index
- Quick Reference
- Sachstandsbericht 2025
- Features
- Roadmap
- Ecosystem Overview
- Strategische Übersicht
- Geo/Relational Storage
- RocksDB Storage
- MVCC Design
- Transaktionen
- Time-Series
- Memory Tuning
- Chain of Thought Storage
- Query Engine & AQL
- AQL Syntax
- Explain & Profile
- Rekursive Pfadabfragen
- Temporale Graphen
- Zeitbereichs-Abfragen
- Semantischer Cache
- Hybrid Queries (Phase 1.5)
- AQL Hybrid Queries
- Hybrid Queries README
- Hybrid Query Benchmarks
- Subquery Quick Reference
- Subquery Implementation
- Content Pipeline
- Architektur-Details
- Ingestion
- JSON Ingestion Spec
- Enterprise Ingestion Interface
- Geo-Processor Design
- Image-Processor Design
- Hybrid Search Design
- Fulltext API
- Hybrid Fusion API
- Stemming
- Performance Tuning
- Migration Guide
- Future Work
- Pagination Benchmarks
- Enterprise README
- Scalability Features
- HTTP Client Pool
- Build Guide
- Implementation Status
- Final Report
- Integration Analysis
- Enterprise Strategy
- Verschlüsselungsstrategie
- Verschlüsselungsdeployment
- Spaltenverschlüsselung
- Encryption Next Steps
- Multi-Party Encryption
- Key Rotation Strategy
- Security Encryption Gap Analysis
- Audit Logging
- Audit & Retention
- Compliance Audit
- Compliance
- Extended Compliance Features
- Governance-Strategie
- Compliance-Integration
- Governance Usage
- Security/Compliance Review
- Threat Model
- Security Hardening Guide
- Security Audit Checklist
- Security Audit Report
- Security Implementation
- Development README
- Code Quality Pipeline
- Developers Guide
- Cost Models
- Todo Liste
- Tool Todo
- Core Feature Todo
- Priorities
- Implementation Status
- Roadmap
- Future Work
- Next Steps Analysis
- AQL LET Implementation
- Development Audit
- Sprint Summary (2025-11-17)
- WAL Archiving
- Search Gap Analysis
- Source Documentation Plan
- Changefeed README
- Changefeed CMake Patch
- Changefeed OpenAPI
- Changefeed OpenAPI Auth
- Changefeed SSE Examples
- Changefeed Test Harness
- Changefeed Tests
- Dokumentations-Inventar
- Documentation Summary
- Documentation TODO
- Documentation Gap Analysis
- Documentation Consolidation
- Documentation Final Status
- Documentation Phase 3
- Documentation Cleanup Validation
- API
- Authentication
- Cache
- CDC
- Content
- Geo
- Governance
- Index
- LLM
- Query
- Security
- Server
- Storage
- Time Series
- Transaction
- Utils
Vollständige Dokumentation: https://makr-code.github.io/ThemisDB/