Framework-ul este o implementare a conceptelor Erlang pentru dezvoltarea în Go, construit pe modelul actorilor cu transparență de rețea și componente gata făcute.
Funcționalitățile de bază în această versiune
- mTLS — noul interface gen.CertAuthManager pentru autentificare mutuală cu gestionarea pool-urilor CA
- Traversarea NAT — opțiunile RouteHost și RoutePort pentru noduri din spatele NAT-ului sau a balansorilor de sarcină
- Controlul timpului de pornire — InitTimeout limitează timpul de inițializare a proceselor (local și de la distanță)
- Shutdown timeout — încheierea controlată a nodului cu logarea proceselor suspendate
- etichete pprof — fiecare goroutine a actorului este marcată cu PID pentru depanare prin pprof
Actori noi (Extra Library)
- Lider — alegeri distribuite ale liderului cu consenț în stil Raft. Failover automat, protecție împotriva split-brain prin cvorum de majoritate
- Metrics — exporter de metrici Prometheus cu colectare automată de telemetrie a nodului și a rețelei
Procese meta noi
- SSE (Server-Sent Events) — streaming unidirecțional server-client pe HTTP cu suport complet pentru specificația SSE
Performanță
- Local: 21M+ mesaje/sec
- Pe rețea: ~5M mesaje/sec
- Pub/Sub distribuit: 2.9M mesaje/sec livrarea a 1.000.000 abonați pe 10 noduri (10 mesaje de rețea în loc de 1M)
Corecții
- Bug critic: semnalele de încheiere (Link/Monitor exits) au fost respinse incorect din cauza validării incorecte a incarnation în stratul de rețea
Documentație
Complet rescris și inclus în depozit. Articole noi de:
- Structura Proiectului — organizarea proiectelor cu niveluri de izolare a mesajelor
- Construirea unui Cluster — ghid pas cu pas pentru sisteme distribuite
- Versionarea Mesajelor — evoluția contractelor de mesaje în clustere
- Depanare — build tags, pprof, depanarea proceselor suspendate
Linkuri
- Exemple: https://github.com/ergo-services/examples
- Benchmark-uri: https://github.com/ergo-services/benchmarks
- Repozitariu: https://github.com/ergo-services/ergo
- Site: https://ergo.services
Sursa: linux.org.ru
