Die neueste Version von ErgoFramework 2.2 wurde veröffentlicht, die einen vollstĂ€ndigen Netzwerk-Stack von Erlang sowie dessen OTP-Bibliothek in der Programmiersprache Go implementiert. Das Framework bietet Entwicklern ein flexibles Toolkit aus der Erlang-Welt zur Erstellung verteilter Lösungen in Go mithilfe von vorgefertigten allgemeinen Entwurfsmustern wie gen.Application, gen.Supervisor und gen.Server, sowie spezialisierten Mustern â gen.Stage (verteilte pub/sub), gen.Saga (verteilte Transaktionen, Implementierung des SAGA-Entwurfsmusters) und gen.Raft (Implementierung des Raft-Protokolls).
DarĂŒber hinaus bietet das Framework Proxy-FunktionalitĂ€t mit End-to-End-VerschlĂŒsselung, die in Erlang/OTP und Elixir nicht verfĂŒgbar ist. Da es in Go keinen direkten Entsprechung zum Erlang-Prozess gibt, werden goroutines als Grundlage fĂŒr gen.Server verwendet, ergĂ€nzt durch das ârecoverâ-Wrapper zur Verarbeitung von Ausnahmen. Der Quellcode des Projekts wird unter der MIT-Lizenz veröffentlicht.
Der Netzwerk-Stack im ErgoFramework implementiert vollstĂ€ndig die DIST-Protokollspezifikation von Erlang. Das bedeutet, dass Anwendungen, die auf Basis von ErgoFramework entwickelt wurden, nahtlos mit allen Anwendungen interagieren, die in den Programmiersprachen Erlang oder Elixir geschrieben sind (Beispiel fĂŒr die Interaktion mit einem Erlang-Knoten). Es ist auch erwĂ€hnenswert, dass das Entwurfsmuster gen.Stage gemÀà der Elixir GenStage-Spezifikation implementiert wurde und vollstĂ€ndig kompatibel ist (Beispielimplementierung).
In der neuen Version:
- Neue Vorlagen hinzugefĂŒgt
- gen.Web â ein Entwurfsmuster fĂŒr Web API Gateway (auch bekannt als Backend fĂŒr Frontend). Beispiel.
- gen.TCP â ein Muster, das die Implementierung eines Pools von TCP-Verbindungsakzeptoren mit minimalem Programmieraufwand ermöglicht. Beispiel.
- gen.UDP â Ă€hnlich dem gen.TCP-Muster, jedoch fĂŒr das UDP-Protokoll. Beispiel.
- Eine neue FunktionalitÀt namens Events wurde vorgeschlagen, die eine einfache Ereignisschicht innerhalb des Knotens implementiert und es ermöglicht, Mechanismen zum Austausch von Ereignissen (pub/sub) zwischen lokalen Prozessen zu schaffen. Beispiel.
- Die UnterstĂŒtzung fĂŒr die Registrierung von Typen wurde hinzugefĂŒgt, die es ermöglicht, die Serialisierung/Deserialisierung von Nachrichten automatisch in den nativen Datentyp von Golang durchzufĂŒhren. Das bedeutet, dass etf.TermIntoStruct fĂŒr jede empfangene Nachricht nicht mehr verwendet werden muss. Registrierte Typen werden automatisch in den angegebenen Typ umgewandelt, was die Leistung der NachrichtenĂŒbertragung zwischen verteilten Knoten erheblich steigert.
Quelle: opennet.ru
