Il framework rappresenta un'implementazione dei concetti di Erlang per lo sviluppo su Go, basato sul modello degli attori con trasparenza di rete e componenti pronte all'uso.
Le principali funzionalità in questa versione
- mTLS — nuova interfaccia gen.CertAuthManager per l'autenticazione mutua con gestione dei pool CA
- NAT traversal — opzioni RouteHost e RoutePort per i nodi dietro NAT o bilanciatori di carico
- Controllo del tempo di avvio — InitTimeout limita il tempo di inizializzazione dei processi (localmente e remotamente)
- Timeout di arresto — arresto controllato del nodo con registrazione dei processi bloccati
- etichette pprof — ogni goroutine dell'attore è contrassegnata con il 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 (Server-Sent Events) — streaming unidirezionale server-client su HTTP con pieno supporto della 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
- Bug critico: i segnali di terminazione (uscite Link/Monitor) venivano erroneamente rifiutati a causa di una validazione incorretta dell'incarnation nel livello 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 dei messaggi nei cluster
- Debugging — tag di build, pprof, debug dei 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
