Rilascio del framework per la creazione di applicazioni di rete ErgoFramework 2.2

Ha avuto luogo il successivo rilascio di ErgoFramework 2.2, che implementa lo stack di rete Erlang completo e la sua libreria OTP nel linguaggio Go. Il framework fornisce allo sviluppatore strumenti flessibili dal mondo di Erlang per la creazione di soluzioni distribuite nel linguaggio Go utilizzando modelli di progettazione generici già pronti gen.Application, gen.Supervisor e gen.Server, nonché quelli specializzati - gen. Stage (pub/sub distribuito), gen.Saga (transazioni distribuite, un'implementazione del modello di progettazione SAGA) e gen.Raft (un'implementazione del protocollo Raft).

Inoltre, il framework fornisce funzionalità proxy con crittografia end-to-end, che non è disponibile in Erlang/OTP ed Elixir. Poiché il linguaggio Go non ha un analogo diretto del processo Erlang, il framework utilizza le goroutine come base per gen.Server con un wrapper di “recupero” per gestire le situazioni di eccezione. Il codice del progetto è distribuito sotto la licenza MIT.

Lo stack di rete in ErgoFramework implementa completamente la specifica DIST del protocollo Erlang. Ciò significa che le applicazioni scritte sulla base di ErgoFramework funzionano in modo nativo con qualsiasi applicazione scritta nei linguaggi di programmazione Erlang o Elixir (un esempio di interazione con un nodo Erlang). Vale anche la pena notare che il modello di progettazione gen.Stage è implementato secondo la specifica Elixir GenStage ed è completamente compatibile con essa (esempio di implementazione).

Nella nuova versione:

  • Nuovi modelli aggiunti
    • gen.Web è un modello di progettazione Web API Gateway (noto anche come Backend For Frontend). Esempio.
    • gen.TCP è un modello che consente di implementare un pool di accettatori di connessione TCP con il minimo sforzo nella scrittura del codice. Esempio.
    • gen.UDP - simile al modello gen.TCP, solo per il protocollo UDP. Esempio.
  • È stata proposta una nuova funzionalità Eventi con l'implementazione di un semplice bus di eventi all'interno di un nodo, che permette di creare meccanismi di scambio di eventi (pub/sub) tra processi locali. Esempio.
  • Aggiunto supporto per la registrazione del tipo, che consente la serializzazione/deserializzazione automatica dei messaggi in un tipo di dati Golang nativo. Ciò significa che non è più necessario utilizzare etf.TermIntoStruct per ogni messaggio ricevuto. I tipi registrati verranno trasformati automaticamente nel tipo specificato, il che accelera notevolmente le prestazioni dello scambio di messaggi tra i nodi distribuiti.

Fonte: opennet.ru

Aggiungi un commento