Dans Golang, les microservices (ou architecture de microservices) sont un style d'architecture logicielle (technologie) qui préconise de diviser une seule application en un ensemble de petits services. Les services se coordonnent et coopèrent les uns avec les autres pour offrir aux utilisateurs la valeur ultime. Chaque service s'exécute selon son propre processus indépendant et les services communiquent entre eux à l'aide d'un mécanisme de communication léger (généralement une API RESTful basée sur HTTP. Chaque service est construit autour d'une activité spécifique et peut être déployé indépendamment dans un environnement de production, comme celui d'une production). environnement, etc
L'environnement d'exploitation de ce tutoriel : système Windows 7, GO version 1.18, ordinateur Dell G3.
Que sont les microservices
L'architecture des microservices est un style d'architecture logicielle, une variante du style d'architecture SOA (Service-Oriented Architecture), qui préconise de diviser une seule application en un groupe. Les petits services se coordonnent et coopèrent les uns avec les autres. pour offrir aux utilisateurs une valeur ultime. Chaque service s'exécute selon son propre processus indépendant et communique entre eux à l'aide d'un mécanisme de communication léger (généralement une API RESTful basée sur HTTP). Chaque service est construit autour d'entreprises spécifiques et peut être déployé indépendamment dans des environnements de production, des environnements de type production, etc. De plus, un mécanisme de gestion de service unifié et centralisé doit être évité autant que possible. Pour un service spécifique, des langages et des outils appropriés doivent être sélectionnés pour le construire en fonction du contexte.
Les microservices (ou architecture de microservices) sont une approche architecturale cloud native dans laquelle une seule application est composée de nombreux composants ou services plus petits, faiblement couplés et déployables indépendamment. Ces services
ont leurs propres piles, y compris des bases de données et des modèles de données
communiquent entre eux via une combinaison d'API REST, de flux d'événements et de courtiers de messages ;
Ils sont organisés par capacités métier ; , séparant les services La ligne de est souvent appelée un contexte délimité.
Bien qu'une grande partie du débat sur les microservices tourne autour des définitions et des caractéristiques architecturales, leur valeur peut être comprise plus généralement à travers un avantage commercial et organisationnel assez simple :
Le code peut être mis à jour plus facilement.
Les équipes peuvent utiliser différentes piles pour différents composants.
Les composants peuvent évoluer indépendamment les uns des autres, réduisant ainsi le gaspillage et le coût liés à la mise à l'échelle de l'ensemble de l'application, car une seule fonctionnalité peut être confrontée à une charge excessive.
Pourquoi utilisons-nous des microservices ?
Cette architecture nous aide à décrire l'ensemble de l'application en parties et petits modules, la rendant plus facile à comprendre, à développer et à tester ; elle nous aide à traiter chaque service comme un service indépendant qui indique clairement son objectif. De plus, cela permet de maintenir la cohérence de l'architecture du projet (il y a peu de différence entre l'architecture conçue initialement et l'architecture réellement développée). Elle peut également déployer et étendre ses services en créant différentes équipes indépendantes, afin que chaque équipe puisse se développer en parallèle. La refactorisation du code est plus facile dans cette architecture. Il prend également en charge les processus de livraison et de déploiement continus (CI/CD).
Pourquoi utiliser go pour créer des microservices ?
Avant d'aborder cette question. Tout d’abord, permettez-moi de parler des avantages de Golang. Bien que le Golang soit une nouvelle langue, il présente de nombreux avantages par rapport aux autres langues. Les programmes écrits en Golang sont plus robustes. Ils sont capables de supporter la lourde charge que les programmes créent à l'aide de services en cours d'exécution. Golang est plus adapté aux systèmes multiprocesseurs et aux applications Web. De plus, il s'intègre facilement à GitHub pour gérer les packages de code décentralisés. L'utilité de l'architecture des microservices se reflète principalement lorsque le programme doit être évolutif. S’il existe un langage totalement conforme aux standards, c’est bien le Golang. La raison en est qu'il hérite de la famille C des langages de programmation et que les composants écrits en Golang sont plus faciles à combiner avec des composants écrits dans d'autres langages de la même famille.
Bien que Go vienne de la famille C, il est plus efficace que C/C++. Il a une syntaxe plus simple, un peu comme Python. Sa syntaxe est stable et n'a pas beaucoup changé depuis sa première version publique, ce qui signifie qu'elle est rétrocompatible. Cela donne au golang un avantage par rapport aux autres langues. De plus, les performances de Golang sont bien supérieures à celles de Python et Java. Cerise sur le gâteau, il est aussi simple que du C/C++ tout en étant facile à lire et à comprendre, ce qui en fait un excellent choix pour développer des applications de microservices.
Cadre d'architecture de microservices dans Golang
Ci-dessous, nous discutons des cadres qui peuvent être utilisés pour l'architecture de microservices. Il existe les frameworks suivants :
Go Micro
Go Micro est le framework RPC le plus populaire que j'ai rencontré jusqu'à présent. Il s'agit d'un framework RPC enfichable. Go Micro nous offre les fonctionnalités suivantes :
Découverte de services : les programmes s'enregistrent automatiquement dans le système de découverte de services
Équilibrage de charge : il fournit un équilibrage de charge côté client, qui permet d'équilibrer les demandes entre les instances de service
Communication synchrone : fournit une couche de transport requête/réponse
Communication asynchrone : possède des fonctions de publication et d'abonnement intégrées
Encodage des messages : vous pouvez utiliser le type de contenu dans l'en-tête pour encoder et décoder
Client RPC Côté extrémité/serveur : utilisez les fonctions ci-dessus et fournissez les interfaces nécessaires pour créer des microservices
L'architecture Go Micro se compose de trois couches. Le premier niveau d'abstraction est la couche de service. La deuxième couche est la couche de modèle client-serveur. Le serveur est constitué de blocs d'écriture de services, tandis que le client nous fournit une interface dont le seul but est de faire des requêtes aux services écrits dans le modèle du serveur.
La troisième couche comporte les types de plug-ins suivants :
Broker : Fournit une interface pour le courtier de messages (message broker) dans la communication asynchrone
Codec : Utilisé pour crypter ou déchiffrer les messages
Registre : Fournit une fonction de recherche de services
Sélecteur : L'équilibrage de charge est construit sur le registre
Transport : Le transport est une interface de communication pour les requêtes/réponses synchrones entre les services
Il fournit également une fonction appelée Sidecar. Sidecar permet d'intégrer des services écrits dans d'autres langages que Go. Il nous fournit également l'encodage/décodage gRPC, l'enregistrement des services et la gestion des requêtes HTTP
GO Kit
Go Kit est une boîte à outils de programmation pour créer des microservices. Contrairement à Go Micro, il s'agit d'une bibliothèque qui peut être importée sous forme de package binaire. Les règles du Go Kit sont simples. Comme suit :
Aucune variable globale
Composition déclarative
Dépendances explicites
Interface en tant que contrats (contrat d'interface)
Conception pilotée par domaine (DDD)
Go Kit Le Les packages de codes suivants sont fournis :
Authentification Authentification : BasicAuth et JWT
Protocole de transport : HTTP, gRPC, etc.
Logging Logging : interface de journalisation structurée dans le service
Metrics : CloudWatch, STATSD, GRAPHITE ET AUTRES
TRACing Suivi distribué: Service de découverte de Zipkin et Opentracing
service Discover: Consul, etcd, Eureka et autres
Circuits Breakes Flux Flow: Hystrix's Implementation in GO Language
Le L'architecture du service Go Kit est la suivante
Gizmo
Gizmo est une boîte à outils de microservices du New York Times. Il fournit des packages qui rassemblent le démon serveur et le démon pubsub. Il expose les packages suivants :
Server : fournit deux implémentations de serveur : SimpleServer (HTTP) et RPCServer (gRPC)
Server/kit : package de code expérimental basé sur Go Kit
Config Configuration : contient la configuration fonctions à partir de fichiers JSON, de blobs JSON dans Consul k/v ou de variables d'environnement
Pubsub : Fournit une interface commune pour publier et consommer les données de la file d'attente
Pubsub/pubsubtest : Contient les éditeurs et les abonnements Implémentation testée de l'utilisateur interface
Web : fonctions externes pour analyser les types de requêtes et de charges utiles
Le package Pubsub fournit des interfaces pour gérer les files d'attente suivantes :
pubsub/aws : pour Amazon SNS /SQS
pubsub/ gcp : pour Google Pubsub
pubsub/kafka : pour les sujets Kafka
pubsub/http : utilisateur HTTP push
Donc, à mon avis, Gizmo présente Between Go Micro et Go Kit. Ce n'est pas une boîte noire complète comme le Go Micro. En même temps, ce n'est pas aussi primitif que Go Kit. Il fournit des composants de construction de niveau supérieur tels que des packages de configuration et pubsub
Kite
Kite est un framework pour développer des microservices dans Go. Il expose les packages de code côté client et serveur RPC. Le service créé sera automatiquement enregistré auprès du système de découverte de services Kontrol. Kontrol est écrit en Kite et est lui-même un service Kite. Cela signifie que les microservices Kite fonctionnent bien dans leur propre environnement. Si vous devez connecter vos microservices Kite à un autre système de découverte de services, une personnalisation est requise. C'est l'une des raisons importantes pour lesquelles j'ai choisi Kite dans la liste et décidé de ne pas introduire ce framework
[Recommandations associées : Tutoriel vidéo Go, Enseignement de la programmation]
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!