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
