Partage de technologie

Introduction au « Mécanisme de découverte de services » dans les microservices

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

  • Le mécanisme de découverte de services de microservices est une méthode de localisation dynamique d'instances de service pour la communication dans une architecture de microservices.

  • Il s'appuie principalement sur le centre d'enregistrement pour mettre en œuvre l'enregistrement des services, les requêtes et prendre en charge l'équilibrage de charge, améliorant ainsi l'évolutivité et la flexibilité du système.

1. Notions de base

La découverte de services fait référence au processus de découverte et d'identification automatique des services disponibles dans un système distribué.

Dans une architecture de microservices, étant donné que les services sont divisés en plusieurs petits services autonomes dispersés sur différents serveurs, un mécanisme de découverte de services est nécessaire pour garantir une communication efficace entre les services.

2. Principales étapes

  • Inscription aux services

    • Lorsqu'une instance de microservice démarre, elle enregistre ses informations d'emplacement réseau (telles que l'adresse IP et le numéro de port) et l'identification du service auprès du centre d'enregistrement des services.
    • Ce processus d'enregistrement est généralement automatique et ne nécessite aucune intervention humaine.
    • Le centre d'enregistrement est chargé de conserver les informations d'enregistrement de toutes les instances de service et de prendre en charge l'enregistrement et la désinscription dynamiques des instances de service.
  • Demande de service

    • Lorsqu'un microservice doit appeler un autre microservice, il interroge le registre de services pour connaître l'adresse réseau actuellement disponible du service requis.
    • Le centre d'enregistrement renvoie la liste d'adresses des instances de service et l'appelant peut sélectionner une instance de service pour la communication conformément à la politique d'équilibrage de charge.

3. Composants clés

  • Registre des services

    • Il s'agit du composant principal du mécanisme de découverte de services et est responsable de la gestion et du stockage des informations d'enregistrement de toutes les instances de service.
    • Il fournit une interface API permettant aux instances de service d'enregistrer et d'annuler des opérations, et permet également aux consommateurs de services d'interroger les informations d'enregistrement des instances de service.
  • Fournisseur de services

    • Il s'agit d'une instance de microservice qui fournit un service spécifique.
    • Il enregistrera ses propres informations de service dans le registre de services lors de son démarrage et désenregistrera ses propres informations de service à sa sortie.
  • Consommateur de services

    • Il s'agit d'une instance de microservice qui doit appeler d'autres services.
    • Il obtient l'adresse réseau du service requis en interrogeant le registre de services et établit une communication avec lui.

4. Comment mettre en œuvre le mécanisme de découverte de services

Le mécanisme de découverte de services peut être divisé en deux types : découverte de client et découverte de serveur selon la méthode de mise en œuvre :

  • mode découverte de clients

    • Le client est responsable d'interroger le centre d'enregistrement, d'obtenir une liste des services disponibles et d'interagir directement avec les instances de service conformément à la politique d'équilibrage de charge.
    • L'avantage est que le client peut formuler de manière flexible des stratégies d'équilibrage de charge, réduisant ainsi la dépendance vis-à-vis du centre d'enregistrement des services.
    • L'inconvénient est que le client doit implémenter une logique de découverte complexe, ce qui augmente la complexité du code et les coûts de maintenance.
  • Mode découverte du serveur

    • Le client envoie une requête au serveur (généralement une passerelle API ou un proxy de service), et le serveur est chargé d'interroger le centre d'enregistrement et de transmettre la requête à l'instance de service réelle.
    • L'avantage est que cela simplifie la mise en œuvre client et réduit la complexité du code et les coûts de maintenance.
    • L’inconvénient est que cela augmente la latence du système et les points de défaillance, car toutes les requêtes doivent être transmises via le serveur.

5. Avantages du mécanisme de découverte de services

  • Réduire le couplage entre les services

    • Les microservices n'ont pas besoin de connaître directement l'adresse réseau de chacun, ils ont uniquement besoin de communiquer via le centre d'enregistrement des services.
  • Améliorer l’évolutivité et la flexibilité du système

    • À mesure que les services changent de manière dynamique (par exemple, expansion, réduction, migration, etc.), le centre d'enregistrement des services peut mettre à jour les informations sur les instances de service en temps réel pour garantir que la communication entre les services n'est pas affectée.
  • Prend en charge l'équilibrage de charge et le basculement

    • Le client peut obtenir la liste d'adresses de plusieurs instances de service à partir du centre d'enregistrement de service et en sélectionner une pour la communication en fonction de la politique d'équilibrage de charge. Lorsqu'une instance de service n'est pas disponible, le registre de services peut automatiquement la marquer comme défectueuse et éviter de lui envoyer des requêtes.

6. Outils de découverte de services communs

  • Eurêka

    • Un outil de découverte de services développé par Netflix, utilisant le mode découverte client. Il est très léger et facile à intégrer et à utiliser.
  • Consul

    • Outil de centre de découverte et de configuration de services développé par HashiCorp. Il fournit une solution relativement complète comprenant une vérification de l'état du service et d'autres fonctions, et prend en charge les protocoles HTTP et DNS.
  • Gardien de zoo

    • Apache ZooKeeper est un service de coordination distribué open source qui peut également être utilisé pour la découverte de services. Il fournit des verrous distribués, des services de noms et d'autres fonctions, et prend en charge une variété de bibliothèques clientes.

Dans l'architecture des microservices, le mécanisme de découverte de services réalise les fonctions dynamiques d'enregistrement et de requête des instances de service via le centre d'enregistrement, réduisant ainsi le couplage entre les services et améliorant l'évolutivité et la flexibilité du système.