Utgivelse av rammeverket for å lage nettverksapplikasjoner ErgoFramework 2.2

Den neste utgivelsen av ErgoFramework 2.2 fant sted, og implementerte den komplette Erlang-nettverksstakken og dets OTP-bibliotek på Go-språket. Rammeverket gir utvikleren fleksible verktøy fra Erlangs verden for å lage distribuerte løsninger i Go-språket ved å bruke ferdige generelle designmønstre gen.Application, gen.Supervisor og gen.Server, samt spesialiserte - gen. Stage (distribuert pub/sub), gen. Saga (distribuerte transaksjoner, en implementering av SAGA-designmønsteret) og gen.Raft (en implementering av Raft-protokollen).

I tillegg gir rammeverket proxy-funksjonalitet med ende-til-ende-kryptering, som ikke er tilgjengelig i Erlang/OTP og Elixir. Siden Go-språket ikke har en direkte analog til Erlang-prosessen, bruker rammeverket goroutiner som grunnlag for gen.Server med en "gjenopprettings"-innpakning for å håndtere unntakssituasjoner. Prosjektkoden er distribuert under MIT-lisensen.

Nettverksstakken i ErgoFramework implementerer fullt ut DIST-spesifikasjonen til Erlang-protokollen. Dette betyr at applikasjoner skrevet på grunnlag av ErgoFramework fungerer naturlig med alle applikasjoner skrevet på programmeringsspråkene Erlang eller Elixir (et eksempel på interaksjon med en Erlang-node). Det er også verdt å merke seg at gen.Stage-designmønsteret er implementert i henhold til Elixir GenStage-spesifikasjonen og er fullt kompatibelt med det (implementeringseksempel).

I den nye utgivelsen:

  • Nye maler lagt til
    • gen.Web er et Web API Gateway (også kjent som Backend For Frontend) designmønster. Eksempel.
    • gen.TCP er en mal som lar deg implementere en pool av TCP-tilkoblingsakseptorer med minimal innsats for å skrive kode. Eksempel.
    • gen.UDP - lik gen.TCP-malen, bare for UDP-protokollen. Eksempel.
  • En ny hendelsesfunksjonalitet er foreslått med implementering av en enkel hendelsesbuss inne i en node, som lar deg lage mekanismer for utveksling av hendelser (pub/sub) mellom lokale prosesser. Eksempel.
  • Lagt til støtte for typeregistrering, som tillater automatisk serialisering/deserialisering av meldinger til en innfødt Golang-datatype. Dette betyr at du ikke lenger trenger å bruke etf.TermIntoStruct for hver melding som mottas. Registrerte typer vil bli transformert til den angitte typen automatisk, noe som øker ytelsen til meldingsutveksling mellom distribuerte noder betydelig.

Kilde: opennet.ru

Legg til en kommentar