Das Framework stellt eine Implementierung der Erlang-Konzepte fĂŒr die Entwicklung in Go dar, basierend auf dem Actor-Modell mit Netzwerktransparenz und fertigen Komponenten.
Hauptfunktionen in dieser Version
- mTLS â neue Schnittstelle gen.CertAuthManager fĂŒr gegenseitige Authentifizierung mit CA-Pool-Management
- NAT-Ăberquerung â Optionen RouteHost und RoutePort fĂŒr Knoten hinter NAT oder Lastenausgleichern
- Kontrolle der Startzeit â InitTimeout begrenzt die Initialisierungszeit von Prozessen (lokal und remote)
- Shutdown-Timeout â kontrolliertes Beenden des Knotens mit Protokollierung hĂ€ngender Prozesse
- pprof-Labels â jede Actor-Goroutine wird mit PID fĂŒr das Debugging ĂŒber pprof markiert
Neue Actoren (Extra-Bibliothek)
- AnfĂŒhrer â verteilte AnfĂŒhrerwahlen mit Konsens im Raft-Stil. Automatischer Failover, Schutz vor Split-Brain durch Quorum der Mehrheit
- und des Lastagenten â Prometheus-Metrik-Exporter mit automatischer Erfassung von Telemetriedaten des Knotens und des Netzwerks
Neue Meta-Prozesse
- SSE (Server-Sent Events) â unidirektionales Streaming von Server zu Client ĂŒber HTTP mit vollstĂ€ndiger UnterstĂŒtzung der SSE-Spezifikation
Leistung
- Lokal: 21M+ Nachrichten/Sek.
- Ăber das Netzwerk: ~5M Nachrichten/Sek.
- Verteiltes Pub/Sub: 2.9M Nachrichten/Sek. Zustellung an 1.000.000 Abonnenten auf 10 Knoten (10 Netzwerk-Nachrichten statt 1M)
Fehlerbehebungen
- Kritischer Fehler: Abschluss-Signale (Link/Monitor-Exits) wurden falsch abgelehnt aufgrund fehlerhafter Validierung der Inkarnation im Netzwerk-Layer
Dokumentation
VollstÀndig neu geschrieben und im Repository enthalten. Neue Artikel:
- Projektstruktur â Organisation von Projekten mit Isolationsstufen fĂŒr Nachrichten
- Einen Cluster aufbauen â Schritt-fĂŒr-Schritt-Anleitung fĂŒr verteilte Systeme
- Nachrichtenversionierung â Evolution von NachrichtenvertrĂ€gen in Clustern
- Debugging â Build-Tags, pprof, Debugging hĂ€ngender Prozesse
Links
- Beispiele: https://github.com/ergo-services/examples
- Benchmarks: https://github.com/ergo-services/benchmarks
- Repository: https://github.com/ergo-services/ergo
- Website: https://ergo.services
Quelle: linux.org.ru
