Die neueste Version von ErgoFramework 2.2 ist erschienen, die den vollstÀndigen Netzwerk-Stack von Erlang und dessen OTP-Bibliothek in Go implementiert. Das Framework bietet Entwicklern ein flexibles Toolkit aus der Welt von Erlang, um verteilte Lösungen in Go mit Hilfe von generischen Designmustern wie gen.Application, gen.Supervisor und gen.Server sowie spezialisierten Mustern wie gen.Stage (verteilte pub/sub), gen.Saga (verteilte Transaktionen, Implementierung des SAGA-Designmusters) und gen.Raft (Implementierung des Raft-Protokolls) zu erstellen.
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 Analog zu Prozessen in Erlang gibt, werden im Framework Goroutinen als Grundlage fĂŒr gen.Server verwendet, ergĂ€nzt durch das ârecoverâ-Wrapping, um Ausnahmen zu behandeln. Der Code des Projekts wird unter der MIT-Lizenz bereitgestellt.
Der Netzwerk-Stack im ErgoFramework implementiert vollstĂ€ndig die DIST-Protokollspezifikation von Erlang. Das bedeutet, dass Anwendungen, die auf Basis von ErgoFramework erstellt wurden, nativ mit allen Anwendungen, die in den Programmiersprachen Erlang oder Elixir geschrieben sind, funktionieren (Beispiel fĂŒr die Interaktion mit einem Erlang-Knoten). Es ist auch erwĂ€hnenswert, dass das Designmuster gen.Stage gemÀà der Elixir GenStage-Spezifikation implementiert ist und vollstĂ€ndig damit kompatibel ist (Implementierungsbeispiel).
In der neuen Version:
- Neue Vorlagen hinzugefĂŒgt
- gen.Web â ein Designmuster fĂŒr Web API Gateway (auch bekannt als Backend For Frontend). Beispiel.
- gen.TCP â ein Muster, das es ermöglicht, einen Pool von TCP-VerbindungsempfĂ€ngern mit minimalem Aufwand zu implementieren. Beispiel.
- gen.UDP â Ă€hnelt dem Muster gen.TCP, jedoch fĂŒr das UDP-Protokoll. Beispiel.
- Eine neue FunktionalitÀt Events wurde vorgeschlagen, mit der einfaches Event-Bus innerhalb des Knotens implementiert werden kann. Dies ermöglicht den Austausch von Ereignissen (pub/sub) zwischen lokalen Prozessen. Beispiel.
- Die UnterstĂŒtzung fĂŒr die Typregistrierung wurde hinzugefĂŒgt, die es ermöglicht, Nachrichten automatisch in den nativen Datentyp von Golang zu serialisieren/deserialisieren. Das bedeutet, dass etf.TermIntoStruct fĂŒr jede empfangene Nachricht nicht mehr verwendet werden muss. Registrierte Typen werden automatisch in den angegebenen Typ transformiert, was die Leistung des Nachrichtenaustauschs zwischen verteilten Knoten erheblich steigert.
Quelle: opennet.ru
