Lansarea cadrului pentru crearea aplicațiilor de rețea ErgoFramework 2.2

Următoarea lansare a ErgoFramework 2.2 a avut loc, implementând stiva completă de rețea Erlang și biblioteca sa OTP în limba Go. Cadrul oferă dezvoltatorului instrumente flexibile din lumea Erlang pentru crearea de soluții distribuite în limbajul Go, folosind modele de design de uz general gata făcute gen.Application, gen.Supervisor și gen.Server, precum și cele specializate - gen. Stage (pub/sub distribuit), gen. Saga (tranzacții distribuite, o implementare a modelului de design SAGA) și gen.Raft (o implementare a protocolului Raft).

În plus, cadrul oferă funcționalitate proxy cu criptare end-to-end, care nu este disponibilă în Erlang/OTP și Elixir. Deoarece limbajul Go nu are un analog direct al procesului Erlang, cadrul folosește goroutine ca bază pentru gen.Server cu un wrapper „recuperare” pentru a gestiona situațiile de excepție. Codul proiectului este distribuit sub licența MIT.

Stack-ul de rețea din ErgoFramework implementează pe deplin specificația DIST a protocolului Erlang. Aceasta înseamnă că aplicațiile scrise pe baza ErgoFramework funcționează nativ cu orice aplicație scrisă în limbajele de programare Erlang sau Elixir (un exemplu de interacțiune cu un nod Erlang). De asemenea, este de remarcat faptul că modelul de design gen.Stage este implementat conform specificației Elixir GenStage și este pe deplin compatibil cu acesta (exemplu de implementare).

În noua versiune:

  • S-au adăugat șabloane noi
    • gen.Web este un model de design Web API Gateway (cunoscut și ca Backend For Frontend). Exemplu.
    • gen.TCP este un șablon care vă permite să implementați un grup de acceptori de conexiune TCP cu efort minim în scrierea codului. Exemplu.
    • gen.UDP - similar cu șablonul gen.TCP, doar pentru protocolul UDP. Exemplu.
  • A fost propusă o nouă funcționalitate Evenimente cu implementarea unui bus de evenimente simplu în interiorul unui nod, care vă permite să creați mecanisme pentru schimbul de evenimente (pub/sub) între procesele locale. Exemplu.
  • S-a adăugat suport pentru înregistrarea tipului, care permite serializarea/deserializarea automată a mesajelor într-un tip de date nativ Golang. Aceasta înseamnă că nu mai trebuie să utilizați etf.TermIntoStruct pentru fiecare mesaj primit. Tipurile înregistrate vor fi transformate automat în tipul specificat, ceea ce accelerează semnificativ performanța schimbului de mesaje între nodurile distribuite.

Sursa: opennet.ru

Adauga un comentariu