Lanzamento do framework para a creación de aplicacións de rede ErgoFramework 2.2

Tivo lugar a seguinte versión de ErgoFramework 2.2, implementando a pila de rede Erlang completa e a súa biblioteca OTP no idioma Go. O marco proporciona ao desenvolvedor ferramentas flexibles do mundo de Erlang para crear solucións distribuídas na linguaxe Go utilizando patróns de deseño de propósito xeral preparados gen.Application, gen.Supervisor e gen.Server, así como outros especializados - gen. Stage (pub/sub distribuído), Gen. Saga (transaccións distribuídas, unha implementación do patrón de deseño SAGA) e gen.Raft (unha implementación do protocolo Raft).

Ademais, o marco ofrece unha funcionalidade de proxy con cifrado de extremo a extremo, que non está dispoñible en Erlang/OTP e Elixir. Dado que a linguaxe Go non ten un análogo directo do proceso Erlang, o marco usa goroutines como base para gen.Server cun envoltorio de "recuperación" para xestionar situacións de excepción. O código do proxecto distribúese baixo a licenza MIT.

A pila de rede en ErgoFramework implementa totalmente a especificación DIST do protocolo Erlang. Isto significa que as aplicacións escritas en base a ErgoFramework funcionan de forma nativa con calquera aplicación escrita nas linguaxes de programación Erlang ou Elixir (un exemplo de interacción cun nodo Erlang). Tamén vale a pena sinalar que o patrón de deseño gen.Stage está implementado segundo a especificación Elixir GenStage e é totalmente compatible con ela (exemplo de implementación).

Na nova versión:

  • Engadíronse novos modelos
    • gen.Web é un patrón de deseño de pasarela de API web (tamén coñecido como Backend For Frontend). Exemplo.
    • gen.TCP é un modelo que che permite implementar un conxunto de aceptadores de conexión TCP cun mínimo esforzo na escritura de código. Exemplo.
    • gen.UDP - similar ao modelo gen.TCP, só para o protocolo UDP. Exemplo.
  • Propúxose unha nova funcionalidade de Eventos coa implementación dun simple bus de eventos dentro dun nodo, que permite crear mecanismos para o intercambio de eventos (pub/sub) entre procesos locais. Exemplo.
  • Engadido soporte para o rexistro de tipos, que permite a serialización/deserialización automática de mensaxes nun tipo de datos Golang nativo. Isto significa que xa non necesitas usar etf.TermIntoStruct para cada mensaxe recibida. Os tipos rexistrados transformaranse ao tipo especificado automaticamente, o que acelera significativamente o rendemento do intercambio de mensaxes entre nós distribuídos.

Fonte: opennet.ru

Engadir un comentario