Repolode
ergo-services

ergo-services/ergo

Framework de modelo de atores para Go, inspirado em Erlang/OTP, para criar sistemas distribuídos supervisionados e transparentes à rede.

Estrelas
4,681
Forks
191
Issues abertas
0
Último commit
há 13 dias

O que é?

Ergo é um framework para Go que organiza um programa em atores (processos) isolados, que se comunicam apenas por mensagens. Cada ator processa uma mensagem por vez, então não é necessário usar mutexes para proteger estado compartilhado. Os atores são organizados em árvores de supervisão, que reiniciam os filhos com falha de acordo com estratégias configuráveis. Além disso, um ator pode ser acessado da mesma forma, esteja no nó local ou em outro nó do cluster.

O framework inclui supervisores, pools de workers, roteadores e metaprocessos que encapsulam operações bloqueantes de I/O por TCP, UDP, portas e web, para que elas não interrompam o processamento normal de mensagens dos atores. Os recursos de cluster incluem descoberta de serviços por meio de registradores integrados ou externos, eventos distribuídos de publicação/assinatura, criação remota de processos e interoperabilidade com nós Erlang e Elixir pelo protocolo de distribuição do Erlang. O projeto não tem dependências externas e usa a licença MIT.

O aplicativo complementar Observer oferece uma interface web para inspecionar processos, redes, eventos e logs nos nós em execução, além de disponibilizar um endpoint MCP para que assistentes de IA consultem um cluster. Uma CLI chamada ergo gera a estrutura inicial de projetos para aplicações, atores e tipos de mensagem.

Recursos principais

  • 01Atores isolados que processam mensagens sequencialmente, com quatro filas de prioridade por caixa de entrada.
  • 02Árvores de supervisão com as estratégias One For One, All For One, Rest For One e Simple One For One.
  • 03A mesma API de mensagens para atores locais e remotos, com serialização binária EDF.
  • 04Descoberta de serviços por registradores integrados ou externos, como etcd.
  • 05Eventos distribuídos de publicação/assinatura e criação remota de processos.
  • 06Interoperabilidade com nós Erlang e Elixir pelo protocolo de distribuição do Erlang.
  • 07Interface web Observer e rastreamento distribuído compatível com OpenTelemetry.

Casos de uso

  • Criar backends em tempo real em que cada conexão de cliente é um ator endereçável.
  • Gerenciar grandes quantidades de dispositivos IoT, com um ator por dispositivo.
  • Coordenar sistemas de IA multiagente que precisam de isolamento contra falhas e supervisão.
  • Executar serviços Go em um cluster heterogêneo junto a nós Erlang ou Elixir.

Início rápido

  1. 1

    Importe o framework e inicie um nó no seu código Go, como mostrado no exemplo do README

  2. 2

    Crie um actor no nó e envie mensagens a ele

Tópicos

Perguntas frequentes

O que é ergo?
Framework de modelo de atores para Go, inspirado em Erlang/OTP, para criar sistemas distribuídos supervisionados e transparentes à rede. Ergo é um framework para Go que organiza um programa em atores (processos) isolados, que se comunicam apenas por mensagens. Cada ator processa uma mensagem por vez, então não é necessário usar mutexes para proteger estado compartilhado. Os atores são organizados em árvores de supervisão, que reiniciam os filhos com falha de acordo com estratégias configuráveis. Além disso, um ator pode ser acessado da mesma forma, esteja no nó local ou em outro nó do cluster.
ergo é gratuito? Qual é a licença?
ergo é open source sob a licença MIT. Confira os termos da licença antes de usá-lo em produtos comerciais.
ergo ainda é mantido?
Manutenção ativa. O último commit de ergo foi em 9 de out. de 2026.
Para que posso usar ergo?
Criar backends em tempo real em que cada conexão de cliente é um ator endereçável. Gerenciar grandes quantidades de dispositivos IoT, com um ator por dispositivo. Coordenar sistemas de IA multiagente que precisam de isolamento contra falhas e supervisão. Executar serviços Go em um cluster heterogêneo junto a nós Erlang ou Elixir.
Como instalar ergo?
Importe o framework e inicie um nó no seu código Go, como mostrado no exemplo do README Crie um actor no nó e envie mensagens a ele
Onde consigo ergo?
O código-fonte e as instruções de instalação estão no GitHub: https://github.com/ergo-services/ergo

Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.

Projetos relacionados