Dopo un anno di sviluppo, è stata rilasciata la versione 1.2 del framework Ergo, che implementa l'intero stack di rete Erlang e la sua libreria OTP in linguaggio Go. Il framework fornisce agli sviluppatori strumenti flessibili dal mondo di Erlang per creare soluzioni distribuite in Go utilizzando modelli di design pronti come Application, Supervisor e GenServer. Poiché in Go non esiste un analogo diretto del processo Erlang, il framework utilizza goroutine come base per GenServer con un wrapper recover per gestire le eccezioni. Il codice del progetto è distribuito sotto licenza MIT.
Nel nuovo rilascio:
- È stata implementata la supporto per TLS 1.3 con la possibilità di generare automaticamente certificati autofirmati (se è necessario crittografare le connessioni, ma non è necessaria l'autenticazione, poiché la connessione utilizza i cookie per fornire accesso al nodo).
- È stata aggiunta la routing statica, per evitare di dover contattare EPMD per determinare la porta del nodo. Questo risolve problemi di sicurezza e, insieme alla crittografia, consente di avviare un cluster Erlang su reti pubbliche.
- È stato aggiunto un nuovo template GenStage (dal mondo di Elixir), che consente di creare soluzioni Pub/Sub senza utilizzare un Message Bus. Una delle caratteristiche principali di questo template è il 'controllo del backpressure'. Il 'Produttore' consegnerà esattamente il numero di messaggi richiesto dal 'Consumatore'. Un esempio di implementazione può essere visto qui.
Nella sezione delle discussioni si parla dell'implementazione del pattern di design SAGAS, che realizza la funzionalità delle transazioni distribuite.
Fonte: opennet.ru
