Maintenance des fichiers proto dans des environnements de microservices distribués
Dans une architecture de microservices, la maintenance des fichiers proto dans plusieurs référentiels peut présenter des défis. Cet article propose une solution pour garder les fichiers proto synchronisés et assurer la compatibilité entre les services.
Solution :
-
Référentiel de proto centralisé : Magasin fichiers proto et leur génération de Makefiles dans un seul référentiel Git. Chaque définition doit résider dans son propre répertoire pour faciliter l'importation.
-
Gestion des versions : Marquez le référentiel avec une version, en particulier pour les modifications potentiellement révolutionnaires. Cela vous permet de faire référence à une version stable spécifique.
-
Importation basée sur un module : Dans les microservices, importez les définitions de proto en utilisant leur chemin de module (par exemple, "github.com/me/myproto/ protodef2"). Cela permet au microservice de récupérer automatiquement la version appropriée à partir du référentiel Git.
-
Modules Go : Utilisez les modules Go pour gérer les dépendances et garantir la compatibilité. Lorsqu'un microservice passe des tests (par exemple, go test), il vérifie que le hachage du fichier proto correspond à celui du référentiel centralisé. Si une incompatibilité se produit, les développeurs seront invités à mettre à jour la génération de code.
Considérations supplémentaires :
-
Compatibilité descendante : Évitez autant que possible de rompre la compatibilité ascendante. La suppression de champ est acceptable tant que les indices de champ restants restent inchangés.
-
Génération de code : Assurez-vous que la génération de code est déclenchée en fonction des modifications du fichier proto et que tous les microservices sont mis à jour avec la même version. .
-
Monorepo vs. Dépôts multiples : Selon la structure du projet, vous pouvez envisager un monorepo ou plusieurs dépôts pour la maintenance du proto.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!