Il framework è un'implementazione dei concetti di Erlang per lo sviluppo in Go, basato sul modello degli attori con trasparenza di rete e componenti pronte all'uso.
Funzionalità principali in questa versione
- mTLS — nuova interfaccia gen.CertAuthManager per l'autenticazione reciproca con gestione dei pool CA
- Traversamento NAT — opzioni RouteHost e RoutePort per nodi dietro NAT o bilanciatori di carico
- Controllo del tempo di avvio — InitTimeout limita il tempo di inizializzazione dei processi (in locale e da remoto)
- Tempo di timeout dello spegnimento — chiusura controllata del nodo con registrazione dei processi in attesa
- Etichette pprof — ogni goroutine dell'attore è contrassegnata con PID per il debug tramite pprof
Nuovi attori (Extra Library)
- Leader — elezioni distribuite del leader con consenso in stile Raft. Failover automatico, protezione dallo split-brain tramite quorum di maggioranza
- Metrics — esportatore di metriche Prometheus con raccolta automatica della telemetria del nodo e della rete
Nuovi meta-processi
- SSE (Eventi inviati dal server) — streaming unidirezionale server-client tramite HTTP con supporto completo per la specifica SSE
Prestazioni
- Localmente: 21M+ messaggi/sec
- In rete: ~5M messaggi/sec
- Pub/Sub distribuito: 2.9M messaggi/sec consegna a 1.000.000 abbonati su 10 nodi (10 messaggi di rete invece di 1M)
Correzioni
- Errore critico: i segnali di terminazione (Link/Monitor exits) venivano scartati in modo errato a causa di una validazione errata dell'incarnazione nel layer di rete
Documentazione
Completamente riscritto e incluso nel repository. Nuovi articoli:
- Struttura del progetto — organizzazione dei progetti con livelli di isolamento dei messaggi
- Costruire un cluster — guida passo passo ai sistemi distribuiti
- Versioning dei messaggi — evoluzione dei contratti di messaggi nei cluster
- Debugging — tag di build, pprof, debug di processi bloccati
Link
- Esempi: https://github.com/ergo-services/examples
- Benchmark: https://github.com/ergo-services/benchmarks
- Repository: https://github.com/ergo-services/ergo
- Sito: https://ergo.services
Fonte: linux.org.ru
