The framework is an implementation of Erlang concepts for development in Go, built on the actor model with network transparency and ready-made components.
Key features in this version
- mTLS β a new interface gen.CertAuthManager for mutual authentication with CA pool management
- NAT traversal β RouteHost and RoutePort options for nodes behind NAT or load balancers
- Startup time control β InitTimeout limits the initialization time of processes (locally and remotely)
- Shutdown timeout β controlled node shutdown with logging of stuck processes
- pprof labels β each actor goroutine is labeled with PID for debugging via pprof
New actors (Extra Library)
- Leader β distributed leader election with Raft-style consensus. Automatic failover, split-brain protection through majority quorum
- Metrics β Prometheus metrics exporter with automatic collection of node and network telemetry
New meta-processes
- SSE (Server-Sent Events) β one-way server-client streaming over HTTP with full SSE specification support
Performance
- Locally: 21M+ messages/sec
- Over the network: ~5M messages/sec
- Distributed Pub/Sub: 2.9M messages/sec delivered to 1,000,000 subscribers across 10 nodes (10 network messages instead of 1M)
Fixes
- Critical bug: termination signals (Link/Monitor exits) were incorrectly rejected due to invalid incarnation validation in the network layer
Documentation
Completely rewritten and included in the repository. New articles:
- Project Structure β organizing projects with message isolation levels
- Building a Cluster β step-by-step guide to distributed systems
- Message Versioning β the evolution of message contracts in clusters
- Debugging β build tags, pprof, debugging stuck processes
Links
- Examples: https://github.com/ergo-services/examples
- Benchmarks: https://github.com/ergo-services/benchmarks
- Repository: https://github.com/ergo-services/ergo
- Website: https://ergo.services
Source: linux.org.ru
