Was ist Frühlingswolke Eureka
Spring Cloud Eureka ist eine Komponente in der Federwolke. Es ist sekundär eingekapselt, basierend auf Netflix Eureka, die hauptsächlich für den Abschluss der Service -Governance -Funktionen im MicroService -Framework verantwortlich ist. Spring Cloud fügt Eureka die Automatisierungskonfiguration im Startstil hinzu. Wir benötigen nur einfache Referenzabhängigkeiten und Anmerkungen, um den Spring Boot zu ermöglichen, um Microservice -Anwendungen einfach in das Eureka Service Governance -System zu integrieren.
Service Governance
Service Governance ist das zentralste und grundlegendste Modul im Microservice -Framework. Es wird hauptsächlich verwendet, um die automatisierte Registrierung und Entdeckung verschiedener Microservice -Instanzen zu realisieren.
Zu Beginn gab es möglicherweise nicht viele Microservice -Systemdienste, die möglicherweise erstellt werden, und wir können den Ruf des Dienstes durch eine statische Konfiguration abschließen. Beispielsweise gibt es zwei Dienste A und B., wenn Dienst A Service B anrufen muss, um einen Geschäftsbetrieb abzuschließen, um eine hohe Verfügbarkeit von Service B zu erreichen, unabhängig davon, ob wir ein komplexes Gleichgewicht auf dem Server einnehmen oder auf dem Client ausbalancieren. Wir müssen eine B -Instanzliste manuell verwalten. Mit der Entwicklung des Geschäfts werden die Systemfunktionen jedoch immer komplexer und die entsprechenden Microservices werden immer schwieriger.
Um dieses Problem zu lösen, wurde eine große Anzahl von Service -Governance -Frameworks und -Produkten generiert. Diese Frameworks drehen sich tatsächlich um die Mechanismen für Serviceregistrierung und Service -Erkennungsmechanismen, um die automatisierte Verwaltung von Microservice -Anwendungsinstanzen zu vervollständigen.
Serviceregistrierung
Im Service Governance Framework wird normalerweise ein Service -Registrierungszentrum gebaut. Jede Service -Instanzeinheit registriert seinen eigenen Service mit dem Registrierungszentrum und teilt dem Registrierungszentrum eine Reihe zusätzlicher Informationen wie den Instanz -Host -Standort, die Portnummer, die Versionsnummer, das Kommunikationsprotokoll usw. an, und das Registrierungszentrum organisiert die Serviceliste nach dem Servicenamen.
Service -Entdeckung
Da es im Rahmen des Service Governance -Frameworks operiert, werden Kommunikation und Anrufe zwischen Diensten nicht mehr implementiert, indem bestimmte Instanzadressen angegeben werden, sondern durch Einleiten von Anforderungsaufrufen des Dienstnamens. Wenn der Serviceanrufer die Benutzeroberfläche des Dienstanbieters anruft, kennt er daher den spezifischen Standort für Serviceinstanzen nicht. Daher ist es erforderlich, zunächst eine Abfrageanforderung in die Registrierung einzuleiten und eine Instanzliste zu erhalten, um Zugriff auf bestimmte Serviceinstanzen zu erhalten.
Baue Eureka Registration Center Service
Bauen Sie ein einzelnes Zentrum Eureka
Alle unsere nachfolgenden Entwicklungen basieren auf der obigen Version. Es ist zu beachten, dass Sring Cloud die Snapshot -Version verwendet, sodass Sie die Adresse des Repositorys in der POM -Datei angeben müssen.
Zunächst erstellen wir ein neues Spring-Boot-Projekt mit dem Namen: Spring-Cloud-Eureka und fügen dem POM notwendige Abhängigkeiten hinzu. Die spezifische POM -Datei lautet wie folgt:
<? XSI: Schemalocation = "http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion> 4.0.0 </modelversion> <gruppe> com.sagesSure <artifactId> Spring-Cloud-Eureka </artifactId> <version> 0.0.1-Snapshot </Version> <Packages> jar </packaging> <name> Spring-cloud-Eureka </name> <elott> <gruppe> org.springFramework.boot </Groupid> Spring-Starent-Starbarent </artifact> <artifactid> <version> 2.0.2.Release </Version> <relativePath/> <!-SOOKUP PORTER aus Repository-> </parent> <properties> <project.build.sourceEncoding> utf-8 </project.build.SourceEncoding> <project.reporting.outputcoding> utf-8 </project.reporting.outputcoding> utf-8 </project.reporting.outputCoding> utf-8 </project.- /project.project.outputcoding> utf-8 </project.project.outputing> utf-8 </project.project.outputing> utf-8 </project.project.outputing> uTf-8 </project.projep. <Java.Version> 1.8 </java.version> <Spring-Cloud.version> finchley.build-snapshot </spring-cloud.version> </properties> <abhängigkeiten> <Depopecy> <gruppe-org. <gruppeID> org.springFramework.cloud </GroupId> <artifactId> Spring-Cloud-Starter-Netflix-Eureka-server </artifactid> </abhängig> <abhängigkeit> <gruppe-org.springFramework.boot </GroupId> <artifactid> Spring-Start-Starter-Test </artifactId> <Stest> test- </abhängig> </abhängigen </abhängig> </abhängig> </abhängigManagement> <builds> <plogins> <gruppe> org.springFramework <URL> https://repo.spring.io/snapshot </url> <snapshots> <enabled> true </enabled> </snapshots> </repository> <repository> <id> Spring-milestones </id> <name> Spring-Meilensteine </name> <url> https <snapshots> <enabled> false </enabled> </snapshots> </repository> </repositories> </project>
Starten Sie eine Service -Registrierung, um Gespräche mit anderen Anwendungen über die @Enableeurekaserver -Annotation zu führen. Dieser Schritt ist sehr einfach. Sie können diese Funktion einschalten, indem Sie diese Annotation einer normalen Feder -Boot -Anwendung hinzufügen:
@SpringBootApplication@enableEureKaserverPublic class applicationEureKaserver {public static void main (String [] args) {SpringApplication.run (ApplicationEureKaserver.class, args); }}Unter der Standardkonfiguration registriert sich der Registrierungszentrumserver auch als Client. Im Allgemeinen müssen wir diese Funktion deaktivieren, und die modifizierte Anwendung.yml ist wie folgt:
# Spring Configspring: Anwendung: Name: Spring-Boot-Eureka # Server ConfigServer: Port: 9871 # Eureka configureureka: Instanz: Hostname: localhost client: Register-with-Eureka: false # registrieren Sie sich nicht mit dem Registrierungszentrum Fetch-Registry: FALSE # Abrufen Sie nicht. http: // $ {eureka.instance.hostname}: $ {server.port}/eureka/ Da wir alle lokal ausführen, setzen wir für die nachfolgende Serviceauszeichnung den Port der Serviceregistrierung über Server.port, um den Port als: 9871 auszuführen
Starten Sie nach Abschluss der oben genannten Konfiguration die Anwendung und besuchen Sie http: // localhost: 9871. Sie können die folgende Seite sehen, auf der die Liste der derzeit bei Eureka registrierten Instanz leer ist, was darauf hinweist, dass kein Dienst im Registrierungszentrum registriert wurde.
Ich denke, jeder hat die beiden oben auffälligen roten Wörter bemerkt:
NOTFALL! Eureka kann fälschlicherweise behaupten, dass Instanzen in Betrieb sind, wenn sie nicht sind. Die Erneuerung ist geringer als der Schwellenwert und daher werden die Instanzen nicht abgelaufen, nur um sicher zu sein.
Ursache: Selbstschutzmechanismus. Während des Betriebs des Eureka -Servers wird gezählt, ob der Anteil des Herzschlagausfalls innerhalb von 15 Minuten weniger als 85% beträgt. Wenn es auftritt (es ist beim eigenständigen Debuggen leicht zu erfüllen, aber in der Tat wird es normalerweise durch Netzwerkinstabilität in der Produktionsumgebung verursacht), schützt Eureka Server die aktuellen Instanzregistrierungsinformationen und fordert diese Warnung auf.
Da dieses Problem in Einzelsituationen anfällig ist, wird Eureka nach dem Ausschalten der Selbstschutz nach der Online-Konfiguration weiterhin einen Alarm bezeichnet, was auf die Abschaffung des abgesicherten Modus ausgeschaltet wird und die Richtigkeit der Instanz nicht garantiert werden kann. Daher ignorieren wir dieses Problem vorerst und können bei späterer Cluster -Bereitstellung gelöst werden.
Registrieren Sie einen Dienstleister
Nach Abschluss der Einrichtung des Registrierungszentrums können wir versuchen, eine vorhandene Spring -Boot -Anwendung zum Service Governance -System von Eureka hinzuzufügen.
Wir nehmen immer noch den vorherigen Frühlings-Cloud-Server als Beispiel. Wir müssen nur die folgende Konfiguration von application.yml ändern:
# Anwendungsname Spring: Anwendung: Name: Spring-Cloud-Server# Eureka Registrierungszentrum Standort Eureka: Client: service-url: defaultZone: http: // localhost: 9871/eureka/
Nach Abschluss der Änderung kann der Service gestartet werden. Zu diesem Zeitpunkt aktualisieren wir die Verwaltungsseite von Eureka und sehen die Listeninformationen der derzeit bei Eureka registrierten Instanz wie folgt:
Dies zeigt, dass unser Service erfolgreich im Registrierungszentrum registriert wurde.
Verwandter Beispielcode: https://github.com/sagesource/spring-cloud-set
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.