Le framework est une implémentation des concepts d'Erlang pour le développement en Go, basé sur un modèle d'acteurs avec transparence réseau et composants prêts à l'emploi.
Fonctionnalités principales dans cette version
- mTLS — nouvelle interface gen.CertAuthManager pour l'authentification mutuelle avec gestion des pools de CA
- Traversée NAT — options RouteHost et RoutePort pour les nœuds derrière un NAT ou des équilibreurs de charge
- Contrôle du temps de démarrage — InitTimeout limite le temps d'initialisation des processus (localement et à distance)
- Délai d'arrêt — arrêt contrôlé du nœud avec journalisation des processus bloqués
- étiquettes pprof — chaque goroutine d'acteur est marquée par son PID pour le débogage via pprof
Nouveaux acteurs (Bibliothèque supplémentaire)
- Leader — élections distribuées de leader avec consensus de type Raft. Failover automatique, protection contre le split-brain via un quorum majoritaire
- Métriques — exportateur de métriques Prometheus avec collecte automatique de la télémétrie du nœud et du réseau
Nouveaux méta-processus
- SSE (Server-Sent Events) — streaming unidirectionnel serveur-client via HTTP avec soutien complet de la spécification SSE
Performance
- Localement : 21M+ messages/seconde
- À travers le réseau : ~5M messages/seconde
- Pub/Sub Distribué : 2.9M messages/seconde livraison à 1,000,000 d'abonnés sur 10 nœuds (10 messages réseau au lieu de 1M)
Corrections
- Bug critique : les signaux de fin (Link/Monitor exits) ont été incorrectement rejetés en raison d'une validation incorrecte de l'incarnation dans la couche réseau
Documentation
Entièrement réécrit et inclus dans le dépôt. Nouveaux articles :
- Structure du projet — organisation des projets avec des niveaux d'isolation des messages
- Construire un cluster — guide étape par étape sur les systèmes distribués
- Versioning des messages — évolution des contrats de messages dans les clusters
- Débogage — balises de compilation, pprof, débogage des processus bloqués
Liens
- Exemples : https://github.com/ergo-services/examples
- Benchmarks : https://github.com/ergo-services/benchmarks
- Dépôt : https://github.com/ergo-services/ergo
- Site : https://ergo.services
Source : linux.org.ru
