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
