Sortie du framework de création d'applications réseau ErgoFramework 2.2

La prochaine version d'ErgoFramework 2.2 a eu lieu, implémentant la pile réseau complète Erlang et sa bibliothèque OTP dans le langage Go. Le framework fournit au développeur des outils flexibles du monde d'Erlang pour créer des solutions distribuées dans le langage Go à l'aide de modèles de conception généraux prêts à l'emploi gen.Application, gen.Supervisor et gen.Server, ainsi que des modèles spécialisés - gen. Stage (pub/sub distribué), gen. Saga (transactions distribuées, une implémentation du modèle de conception SAGA) et gen.Raft (une implémentation du protocole Raft).

De plus, le framework fournit une fonctionnalité proxy avec cryptage de bout en bout, qui n'est pas disponible dans Erlang/OTP et Elixir. Étant donné que le langage Go n'a pas d'analogue direct du processus Erlang, le framework utilise des goroutines comme base pour gen.Server avec un wrapper « de récupération » pour gérer les situations d'exception. Le code du projet est distribué sous licence MIT.

La pile réseau d'ErgoFramework implémente entièrement la spécification DIST du protocole Erlang. Cela signifie que les applications écrites sur la base d'ErgoFramework fonctionnent nativement avec toutes les applications écrites dans les langages de programmation Erlang ou Elixir (un exemple d'interaction avec un nœud Erlang). Il convient également de noter que le modèle de conception gen.Stage est implémenté selon la spécification Elixir GenStage et est entièrement compatible avec celle-ci (exemple d'implémentation).

Dans la nouvelle version :

  • Nouveaux modèles ajoutés
    • gen.Web est un modèle de conception Web API Gateway (également connu sous le nom de Backend For Frontend). Exemple.
    • gen.TCP est un modèle qui vous permet d'implémenter un pool d'accepteurs de connexion TCP avec un minimum d'effort d'écriture de code. Exemple.
    • gen.UDP - similaire au modèle gen.TCP, uniquement pour le protocole UDP. Exemple.
  • Une nouvelle fonctionnalité Événements a été proposée avec la mise en œuvre d'un simple bus d'événements à l'intérieur d'un nœud, qui permet de créer des mécanismes d'échange d'événements (pub/sub) entre processus locaux. Exemple.
  • Ajout de la prise en charge de l'enregistrement de type, qui permet la sérialisation/désérialisation automatique des messages dans un type de données Golang natif. Cela signifie que vous n'avez plus besoin d'utiliser etf.TermIntoStruct pour chaque message reçu. Les types enregistrés seront automatiquement transformés en type spécifié, ce qui accélère considérablement les performances de l'échange de messages entre les nœuds distribués.

Source: opennet.ru

Ajouter un commentaire