Lançamento do framework para criação de aplicações de rede ErgoFramework 2.2

O próximo lançamento do ErgoFramework 2.2 ocorreu, implementando a pilha de rede Erlang completa e sua biblioteca OTP na linguagem Go. A estrutura fornece ao desenvolvedor ferramentas flexíveis do mundo Erlang para criar soluções distribuídas na linguagem Go usando padrões de design de uso geral gen.Application, gen.Supervisor e gen.Server, bem como especializados - gen. Stage (pub/sub distribuído), gen.Saga (transações distribuídas, uma implementação do padrão de design SAGA) e gen.Raft (uma implementação do protocolo Raft).

Além disso, a estrutura fornece funcionalidade de proxy com criptografia ponta a ponta, que não está disponível em Erlang/OTP e Elixir. Como a linguagem Go não possui um análogo direto do processo Erlang, o framework usa goroutines como base para gen.Server com um wrapper de “recuperação” para lidar com situações de exceção. O código do projeto é distribuído sob a licença do MIT.

A pilha de rede no ErgoFramework implementa totalmente a especificação DIST do protocolo Erlang. Isso significa que os aplicativos escritos com base no ErgoFramework funcionam nativamente com quaisquer aplicativos escritos nas linguagens de programação Erlang ou Elixir (um exemplo de interação com um nó Erlang). Também é importante notar que o padrão de design gen.Stage é implementado de acordo com a especificação Elixir GenStage e é totalmente compatível com ela (exemplo de implementação).

Na nova versão:

  • Novos modelos adicionados
    • gen.Web é um padrão de design do Web API Gateway (também conhecido como Backend For Frontend). Exemplo.
    • gen.TCP é um modelo que permite implementar um conjunto de aceitadores de conexão TCP com esforço mínimo na escrita de código. Exemplo.
    • gen.UDP - semelhante ao modelo gen.TCP, apenas para o protocolo UDP. Exemplo.
  • Uma nova funcionalidade de Eventos foi proposta com a implementação de um barramento de eventos simples dentro de um nó, que permite criar mecanismos de troca de eventos (pub/sub) entre processos locais. Exemplo.
  • Adicionado suporte para registro de tipo, que permite serialização/desserialização automática de mensagens em um tipo de dados Golang nativo. Isso significa que você não precisa mais usar etf.TermIntoStruct para cada mensagem recebida. Os tipos registrados serão transformados automaticamente no tipo especificado, o que acelera significativamente o desempenho da troca de mensagens entre nós distribuídos.

Fonte: opennet.ru

Adicionar um comentário