Eureka est un produit Open Source Netflix qui fournit l'enregistrement et la découverte des services, et il fournit une implémentation complète du registre des services et de la découverte de services. C'est également l'un des composants les plus importants et les plus principaux du système SpringCloud.
Introduction de fond
Centre de services
Le centre de service est également appelé le centre d'enregistrement, qui gère diverses fonctions de service, notamment l'enregistrement de service, la découverte, le disjoncteur, la charge, la rétrogradation, etc., tels que diverses fonctions de l'arrière-plan de l'administration de Dubbo.
Quels changements se produiront avec la relation d'appel du centre de service? Dessinez quelques diagrammes simples pour vous aider à comprendre
Projet A appelle le projet B
Appelez normalement le projet A pour demander le projet B
Après avoir un centre de service, aucun service ne peut être supprimé et utilisé directement, et il doit être appelé via le centre de service.
Projet A appelle Project B, Project B appelle le projet C
À l'heure actuelle, les étapes à appeler seront de deux étapes: la première étape est que Project A First Demande Project B Server à partir du centre de service, puis le projet B demandent le service du projet C à partir du centre de service.
Les projets ci-dessus ne sont que de simples appels entre deux ou trois, mais s'il y a plus de 20 projets et 30 projets, les projets distribués de notre entreprise ont atteint plus de 20 d'ici la fin de 2015. Dessinez une image pour décrire la relation entre des dizaines de projets et toutes sont des lignes. Toute modification de l'un des projets impliquera plusieurs projets de redémarrage, ce qui est très gênant et sujet aux erreurs. Pour obtenir des services via le centre de service, vous n'avez pas besoin de prêter attention à l'adresse IP du projet que vous appelez. Il se compose de plusieurs serveurs. Chaque fois que vous allez au centre de service pour obtenir les services disponibles à appeler.
Étant donné que tous les types de services ont été enregistrés dans le centre de service, il existe de nombreuses fonctions avancées à faire. Par exemple, plusieurs services fournissent le même service pour équilibrer la charge; Surveillez le taux de réussite de l'appel du serveur pour effectuer la rupture de circuit, supprimez les points de défaut dans la liste des services; Surveillez le temps d'appel de service pour définir différents poids pour différents serveurs, etc.
Avant de parler d'Eureka, je bavarderai sur Netflix
Netflix
L'introduction suivante vient de Baidu Encyclopedia:
Netflix est une entreprise américaine qui fournit des médias de streaming en ligne sur place aux États-Unis et au Canada, et les services de location en ligne DVD et Blu-ray et Blu-ray Disc. Fondée en 1997, la société a son siège social à Los Gaitu, en Californie, et a commencé les services d'abonnement en 1999. En 2009, la société pourrait fournir jusqu'à 100 000 films DVD et comptait 10 millions d'abonnés. Le 25 février 2007, Netflix a annoncé qu'il avait vendu son DVD 1 milliardième. Un son rapport indique qu'en 2011, les ventes de films en ligne Netflix représentaient 45% du total des ventes de films en ligne des utilisateurs américains.
La première fois que j'ai vu ce mot, c'était au début de divers drames ou films américains. Les drames américains représentatifs filmés par Netflix incluent "House of Cards", "Drug Lords" et "Stranger Things". Plus tard, lorsque j'étudiais Springcloud, j'ai découvert les entreprises de Netflix et je me suis demandé s'ils étaient la même entreprise. Après avoir vérifié le suffixe par e-mail sur GitHub, j'ai déterminé qu'il s'agissait en effet de la même entreprise. En fait, les microservices de SpringCloud sont basés sur les produits open source de Netflix.
Les composants du cadre open source de Netflix ont été prouvés dans l'environnement de microservice distribué à grande échelle de Netflix depuis des années et sont progressivement acceptés par la communauté comme composants standard pour la construction de cadres microservices. Les produits open source de Spring Cloud sont principalement basés sur l'emballage supplémentaire des composants open source Netflix, ce qui facilite les développeurs de printemps pour construire un cadre de microservice de base. Pour certaines entreprises qui ont l'intention de construire un système de cadre de microservice, d'utiliser pleinement ou de se référer aux composants de microservice open source de Netflix (ou un nuage de printemps) et à effectuer la personnalisation de l'entreprise nécessaire sur cette base est sans aucun doute un raccourci vers l'architecture de microservice.
Eureka
Selon l'introduction officielle:
Eureka est un service basé sur REST (Repreignational State Transfer) qui est principalement utilisé dans le cloud AWS pour localiser les services à des fins d'équilibrage de charge et de basculement des serveurs de niveau intermédiaire.
Eureka est un service basé sur REST, principalement utilisé dans le cloud AWS, et localise des services pour charger l'équilibrage et le basculement des serveurs de niveau intermédiaire.
Spring Cloud résume le module Eureka développé par Netflix pour permettre l'enregistrement et la découverte des services. Eureka adopte l'architecture de conception CS. Eureka Server est le serveur avec fonction d'enregistrement de service, c'est le centre d'enregistrement de service. D'autres microservices du système utilisent le client d'Eureka pour se connecter au serveur Eureka et maintenir une connexion de battements cardiaques. De cette façon, le personnel de maintenance du système peut surveiller si chaque microservice dans le système s'exécute normalement via le serveur Eureka. Certains autres modules de Spring Cloud (comme Zuul) peuvent utiliser le serveur Eureka pour découvrir d'autres microservices dans le système et exécuter la logique pertinente.
Eureka se compose de deux composants: le serveur Eureka et le client Eureka. Le serveur Eureka est utilisé comme serveur d'enregistrement de service. Le client Eureka est un client Java utilisé pour simplifier l'interaction avec le serveur, agir comme un équilibreur de chargement de sondage et fournir une prise en charge de basculement du service. Netflix utilise un autre client dans son environnement de production, qui fournit un équilibrage de charge pondéré en fonction du trafic, de l'utilisation des ressources et de l'état d'erreur.
Utilisez une image pour comprendre ce qui suit:
La figure ci-dessus décrit brièvement l'architecture de base d'Eureka, composée de 3 rôles:
1. Serveur Eureka
2. Proviseur de service
3. Service consommateur
Pratication de cas
Serveur Eureka
Spring Cloud m'a aidé à mettre en œuvre le centre d'enregistrement des services et nous n'avons besoin que de quelques étapes simples pour la terminer.
1. Ajouter des dépendances dans POM
<Dependances> <Dependance> <GroupId> org.springframework.cloud </proupId> <ArtifActid> Spring-Cloud-starter </ artifactid> </pedigency> <dependency> <prouprid> org.springframework.cloud </prouvendid> <ptetifactid> Spring-Cloud>-starter-eurek <GroupId> org.springFramework.boot </prôdId> <ArtefactId> Spring-Boot-starter-test </ artifactid> <ccope> test </cope> </dependency> </Dependances>
2. Ajouter une annotation @EnableEurekaServer au code de démarrage
@ SpringbootApplication @ activyEurekaserverPublic class SpringCoulleArkApplication {public static void main (String [] args) {springApplication.run (SpringCloudeurekApplication.class, args); }}3. Fichier de configuration
Par défaut, le registre des services tentera également de s'inscrire en tant que client, nous devons donc désactiver son comportement d'enregistrement du client et ajouter la configuration suivante dans application.properties :
Spring.Application.Name = Spring-Cloud-eurekaserver.port = 8000eureka.client.register-with-eureka = falseureka.client.fetch-registry = falseureka.client.servicerl.defaultzone = http: // localhost: $ {server.port} / eureka /eureka.client.register-with-eureka : indique s'il faut vous inscrire sur le serveur Eureka, la valeur par défaut est vraie.eureka.client.fetch-registry : indique s'il faut obtenir des informations d'enregistrement sur le serveur Eureka, la valeur par défaut est vraie.eureka.client.serviceUrl.defaultZone : définit l'adresse pour interagir avec le serveur Eureka. Les services de requête et les services d'enregistrement doivent s'appuyer sur cette adresse. La valeur par défaut est http: // localhost: 8761 / eureka; Plusieurs adresses peuvent être utilisées et séparées.Après avoir commencé le projet, visitez: http: // localhost: 8000 / et vous pouvez voir la page ci-dessous, où aucun service n'a été trouvé
Grappe
Un tel service critique en tant que centre d'enregistrement, s'il s'agit d'un seul point, il sera dévastateur de rencontrer un échec. Dans un système distribué, le centre d'enregistrement des services est la partie de base la plus importante et doit être dans un état où les services peuvent être fournis à tout moment. Pour maintenir sa disponibilité, l'utilisation de clusters est une bonne solution. Eureka implémente le déploiement hautement disponible en nous inscrivant, nous n'avons donc qu'à configurer Eureke Server pour configurer d'autres services disponibles pour obtenir un déploiement très disponible.
Centre d'enregistrement à double nœud
Pour la première fois, nous essayons de construire un centre d'enregistrement à double nœud.
1. Créer des applications-peer1.properties comme configuration du centre de service Peer1 et Point ServiceUrl vers PEER2
Spring.Application.name = Spring-Cloud-eurekaserver.port = 8000Eureka.instance.hostname = peer1eureka.client.serviceUrl.defaultZone = http: // peer2: 8001 / eureka /
2. Créer des applications-peer2.properties comme configuration du centre de service Peer2 et point serviceurl to peer1
Spring.Application.Name = Spring-Cloud-eurekaserver.port = 8001eureka.instance.hostname = peer2eureka.client.serviceUrl.defaultZone = http: // peer1: 8000 / eureka /
3. Conversion de l'hôte
Ajouter la configuration suivante au fichier hosts
127.0.0.1 Peer1 127.0.0.1 Peer2
4. Démarrage du package
Exécuter les commandes suivantes
#Package MVN Clean Package # Démarrer Eurekajava avec Peer1 et Peeer2 Informations de configuration respectivement -jar Spring-Cloud-eureka-0.0.1-Snapshot.jar --Spring.profiles.active = peer1java -jar Spring-Cloud-eureka-0.0.1-Snapshot.jar -Pring.Profiles.profiles.
Après avoir commencé un par un, le navigateur entre: http://localhost:8000/ le rendu est le suivant:
Selon le chiffre, on peut voir que les répliques DS du centre d'enregistrement de Peer1 ont les informations de configuration pertinentes de Peer2 et apparaissent dans les re-replias disponibles. Nous arrêtons manuellement Peer2 à observer, et constatons que Peer2 se déplacera vers la colonne non disponible-Replicas, indiquant que Peer2 n'est pas disponible.
La configuration de ce double nœud est terminée.
Utilisation du cluster Eureka
En production, nous pouvons avoir besoin de trois centres d'enregistrement ou plus pour assurer la stabilité du service. Les principes de configuration sont en fait les mêmes et nous indiquons respectivement le centre d'enregistrement vers d'autres centres d'enregistrement. Ici, nous ne présenterons que la configuration des trois clusters. En fait, il est similaire au centre d'enregistrement à double nœud. Chaque centre d'enregistrement peut indiquer respectivement les deux autres nœuds et utiliser Application.yml pour le configurer.
Les détails de configuration applicables.yml sont les suivants:
- Spring: Application: Nom: Spring-Cloud-eureka Profiles: Peer1Server: Port: 8000Eureka: Instance: Hostname: Peer1 Client: ServiceUrl: DefaultZone: http: // peer2: 8001 / eureka /, http: // peer3: 8002 / eureka / --- Spring: Application: Name: Spring-Cloud-eureK PEER2SERVER: PORT: 8001EUREKA: Instance: Nom d'hôte: Peer2 Client: ServiceUrl: DefaultZone: http: // peer1: 8000 / eureka /, http: // peer3: 8002 / eureka / --- Client: ServiceUrl: DefaultZone: http: // peer1: 8000 / eureka /, http: // peer2: 8001 / eureka /
Démarrez le centre d'enregistrement Eureka avec les paramètres de configuration de Peer1, Peer2 et Peer3 respectivement.
Java -jar Spring-Cloud-eureka-0.0.1-Snapshot.jar --spring.profiles.active = peer1java -jar Spring-Cloud-eureka-0.0.1-Snapshot.jar --pring.profiles.active = peer2java -jar-Cloud-eureka-0.0.1-snaps --Pring.profiles.active = peer3
Après avoir commencé un par un, le navigateur entre: http://localhost:8000/ le rendu est le suivant:
Vous pouvez voir les informations pertinentes sur Peer2 et Peer3 dans Peer1. Jusqu'à présent, le cluster Eureka a été achevé
Exemple de code
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.