Centre d'enregistrement Eureka-SpringCloud (4)

Qu'est-ce qu'Eureka?

  Eureka est comme Didi Chuxing, responsable de la gestion et de l'enregistrement des informations sur les prestataires de services.

  L'appelant n'a pas besoin de trouver le service par lui-même, mais indique à Eureka ses besoins, puis Eureka vous indiquera le service qui répond à vos besoins.

  Dans le même temps, le fournisseur de services et Eureka seront surveillés via un mécanisme de «battement de cœur». Lorsqu'un fournisseur de services a un problème, Eureka le supprimera automatiquement de la liste des services.

  Cela permet l'enregistrement automatique, la découverte et la surveillance de l'état des services.

 

L'infrastructure d'Eureka

  Trois rôles principaux dans l'architecture Eureka:

  Centre d'enregistrement des services:

    L'application serveur d'Eureka fournit des fonctions d'enregistrement et de découverte de services.

  Prestataire de services:

    Le service doit être utilisé, il peut s'agir d'une application SpringBoot ou il peut être implémenté par toute autre technologie, tant qu'il fournit des services de type Rest.

  Consommateurs de services:

    L'application grand public obtient la liste des services auprès du centre d'enregistrement, afin de connaître les informations de chaque partie de service, et savoir où appeler la partie de service.

 

Serveur Eureka hautement disponible

  EurekaServer est un registre de services. EurekaServer peut être un cluster, formant un centre Eureka hautement disponible.

  Plusieurs EurekaServers enregistreront les services entre eux. Lorsque le fournisseur de services s'inscrit auprès d'un nœud du cluster EurekaServer, le nœud synchronisera les informations de service avec chaque nœud du cluster pour réaliser la synchronisation des données.

  Par conséquent, peu importe que le client accède à un nœud du cluster EurekaServer, les informations complètes de la liste de services peuvent être obtenues.  

  Le soi-disant centre d'enregistrement à haute disponibilité enregistre en fait EurekaServer lui-même en tant que service, afin que plusieurs EurekaServer puissent se découvrir et former un cluster.

 

Prestataire de services

  Les fournisseurs de services doivent enregistrer les services auprès d'EurekaServer et terminer le renouvellement des services et d'autres tâches.

  Lorsque le fournisseur de services démarre, il vérifie si le paramètre eureka.client.register-with-eureka = true est correct. En fait, la valeur par défaut est true. 

  Si la valeur est vraie, il lancera une demande Rest à EurekaServer et transportera ses propres informations de métadonnées. EurekaServer stockera ces informations dans une structure de carte à double couche.

    La clé de la première couche Map est l'ID du service, généralement dans la propriété configuration: spring.application.name.

    La clé de la carte de la deuxième couche est l'ID d'instance de service, généralement host + serviceld + port Par exemple: localhost: service-provider: 8081

    La valeur est un objet d'instance d'un service, c'est-à-dire qu'un service peut démarrer plusieurs instances différentes en même temps pour former un cluster.

  Une fois le service d'enregistrement terminé, le fournisseur de services maintiendra une pulsation (enverra régulièrement une demande de repos à EurekaServer), indiquera à EurekaServer que le service existe toujours, ce comportement est appelé renouvellement de service (renouvellement).

  Deux paramètres importants peuvent modifier le comportement du renouvellement de service:

eureka: 
  instance: 
    location -expiration-durée-en-secondes: 90 # intervalle d'échec du service, la valeur par défaut est 30 secondes 
    location -renewal-interval-en-secondes: 30 # temps de renouvellement du service, la valeur par défaut est 90 secondes

  En d'autres termes, par défaut, toutes les 30 secondes, le service envoie une demande de repos au Registre pour prouver qu'il est toujours en vie.

  S'il n'est pas envoyé pendant plus de 90 secondes, EurekaServer pensera que le service est en panne et sera supprimé de la liste des services.

  Ne modifiez pas ces deux valeurs dans l'environnement de production, juste par défaut. 

  Dans l'environnement de développement, cette valeur est trop longue. Souvent, nous désactivons un service. Eureka pense toujours que le service est toujours en vie, il peut donc être ajusté en conséquence.

 

Au service des consommateurs

  Lorsque le consommateur de services démarre, il détecte la valeur du paramètre eureka.client.fetch-registry = true. S'il est vrai, il extrait la liste des services EurekaServer pour la sauvegarde en lecture seule, puis la met en cache localement.

  De plus, les données seront récupérées et mises à jour toutes les trente secondes, qui peuvent être modifiées par les paramètres suivants.

eureka: 
  client: 
    registre -fetch-interval-seconds: 5

  Dans un environnement de production, il n'est pas nécessaire de modifier cette valeur.

  Dans l'environnement de développement, afin d'obtenir rapidement le statut du service, vous pouvez le réduire.

 

Rejet d'échec

  Lorsque le service s'arrête normalement, il envoie une demande de repos pour le service hors ligne à EurekaServer, indiquant au centre d'inscription du service: «Je me déconnecte».

  Après avoir reçu la demande, le centre de services définit le service sur l'état hors ligne.

  Parfois, le fournisseur de services ne se déconnecte pas normalement et le service peut ne pas fonctionner correctement en raison d'un dépassement de mémoire ou d'une défaillance du réseau.

  EurekaServer doit supprimer ces services de la liste des services.

  Par conséquent, EurekaServer démarre un service de minuterie pour supprimer tous les services ayant échoué toutes les 60 secondes.

  Il peut être modifié par le paramètre eureka.server.eviction-interval-timer-in-ms, l'unité est en millisecondes.

  Ne modifiez pas l'environnement de production.

  Cependant, cette vitesse sera très gênante pour le développement.Après le redémarrage du service, Eureka réagira en 60 secondes, de sorte qu'il pourra être ajusté de manière appropriée pendant la phase de développement.

 

Auto-protection

  Lorsque vous arrêtez un service, vous verrez un avertissement dans le panneau Eureka.

  C'est ce qui déclenche le mécanisme d'autoprotection d'Eureka. Lorsqu'un service ne parvient pas à renouveler son rythme cardiaque à temps, Eureka compte si la proportion d'instances de service qui ont échoué au cours des 15 dernières minutes dépasse 85%.

  Dans un environnement de production, en raison de retards réseau et d'autres raisons, la proportion d'instances de pulsation défaillantes est susceptible de dépasser la norme, mais il n'est pas approprié d'exclure le service pour le moment.

  Étant donné que le service n'est peut-être pas arrêté, Eureka protégera les informations d'enregistrement de l'instance actuelle et ne les supprimera pas.

  Il est très efficace dans l'environnement de production, garantissant que la plupart des services sont toujours disponibles, mais il causera des problèmes de développement.

  Par conséquent, le mode d'autoprotection sera désactivé pendant la phase de développement.

eureka: 
  serveur: 
    activer -auto-préservation: faux # Désactiver le mode d'autoprotection (la valeur par défaut est activée ) 
    expulsion -interval-timer-in-ms: 1000 # Temps d'intervalle pour rechercher les services défaillants (par défaut 60 * 1000 ms)

 

Je suppose que tu aimes

Origine www.cnblogs.com/guancangtingbai/p/12690859.html
conseillé
Classement