O framework é uma implementação dos conceitos Erlang para desenvolvimento em Go, construído sobre o modelo de ator com transparência de rede e componentes prontos.
Principais recursos nesta versão
- mTLS — nova interface gen.CertAuthManager para autenticação mútua com gerenciamento de pools de CA
- NAT traversal — opções RouteHost e RoutePort para nós atrás de NAT ou balanceadores de carga
- Controle de tempo de inicialização — InitTimeout limita o tempo de inicialização de processos (localmente e remotamente)
- Tempo limite de desligamento — desligamento controlado do nó com registro de processos pendentes
- labels pprof — cada goroutine do ator é marcada com PID para depuração através do pprof
Novos atores (Extra Library)
- Líder — eleições de líderes distribuídas com consenso estilo Raft. Failover automático, proteção contra split-brain através do quórum da maioria
- Métricas — exportador de métricas Prometheus com coleta automática de telemetria do nó e da rede
Novos meta-processos
- SSE (Server-Sent Events) — streaming unidirecional servidor-cliente via HTTP com suporte completo à especificação SSE
Desempenho
- Localmente: 21M+ mensagens/s
- Na rede: ~5M mensagens/s
- Pub/Sub Distribuído: 2.9M mensagens/s entrega a 1.000.000 de assinantes em 10 nós (10 mensagens de rede em vez de 1M)
Correções
- Bug crítico: sinais de término (exits Link/Monitor) foram incorretamente rejeitados devido à validação incorreta de incarnation na camada de rede
Documentação
Totalmente reescrito e incluído no repositório. Novos artigos:
- Estrutura do Projeto — organização de projetos com níveis de isolamento de mensagens
- Construindo um Cluster — guia passo a passo para sistemas distribuídos
- Versionamento de Mensagens — evolução dos contratos de mensagens em clusters
- Depuração — tags de compilação, pprof, depuração de processos pendentes
Links
- Exemplos: https://github.com/ergo-services/examples
- Benchmarks: https://github.com/ergo-services/benchmarks
- Repositório: https://github.com/ergo-services/ergo
- Site: https://ergo.services
Fonte: linux.org.ru
