Eureka ist ein Open -Source -Produkt von Netflix, das Service Registrierung und Erkennung von Service bietet und eine vollständige Implementierung von Service -Registrierung und Service -Erkennung bietet. Es ist auch eine der wichtigsten und zentralsten Komponenten im Springcloud -System.
Hintergrundeinführung
Service Center
Das Service Center wird auch als Registrierungszentrum bezeichnet, das verschiedene Servicefunktionen verwaltet, einschließlich Serviceregistrierung, Erkennung, Leistungsschalter, Last, Herabstufung usw., z. B. verschiedene Funktionen des Dubbo -Administratorhintergrunds.
Welche Änderungen werden mit der Anrufbeziehung des Service Centers passieren? Zeichnen Sie ein paar einfache Diagramme, um Ihnen beim Verständnis zu helfen
Projekt A Anrufe Projekt B
Normalerweise rufen Sie Projekt A an, um Projekt B anzufordern
Nach einem Servicecenter kann kein Service direkt entfernt und genutzt werden und muss über das Servicecenter aufgerufen werden.
Projekt A Anrufe Projekt B, Projekt B ruft Projekt C auf
Zu diesem Zeitpunkt sind die Schritte, die zu rufen, zwei Schritte: Der erste Schritt besteht darin, dass Project a First Project B -Server aus dem Service Center anfordert und anschließend das Projekt C -Service vom Service Center anfordert.
Die obigen Projekte sind nur einfache Anrufe zwischen zwei oder drei. Wenn es jedoch mehr als 20 Projekte und 30 Projekte gibt, haben die verteilten Projekte unseres Unternehmens bis Ende 2015 mehr als 20 erreicht. Zeichnen Sie ein Bild, um die Beziehung zwischen Dutzenden von Projekten und allen Linien zu beschreiben. Alle Änderungen an einem der Projekte umfassen mehrere Projekte, die sehr starten, was sehr problematisch und anfällig für Fehler ist. Um Dienste über das Service Center zu erhalten, müssen Sie nicht auf die Projekt -IP -Adresse achten, die Sie anrufen. Es besteht aus mehreren Servern. Jedes Mal, wenn Sie zum Service Center gehen, um die verfügbaren Dienste anzurufen.
Da alle Arten von Diensten im Service Center registriert wurden, gibt es viele erweiterte Funktionen. Zum Beispiel bieten mehrere Dienste den gleichen Service, um die Last auszugleichen. Überwachen Sie die Erfolgsrate des Serveranrufs zur Durchführung des Schaltungsunterbrechers und entfernen Sie die Fehlerpunkte in der Serviceliste. Überwachen Sie die Serviceanrufzeit, um verschiedene Gewichte für verschiedene Server usw. festzulegen.
Bevor ich über Eureka spreche, werde ich über Netflix klatschen
Netflix
Die folgende Einführung stammt von Baidu Encyclopedia:
Netflix ist ein amerikanisches Unternehmen, das Online-Streaming-Medien vor Ort in den USA und Kanada sowie eine benutzerdefinierte DVD- und Blu-ray-Disc-Online-Mietdienste anbietet. Das 1997 gegründete Unternehmen hat seinen Hauptsitz in Los Gaitu, Kalifornien, und hat 1999 Abonnementdienste gestartet. 2009 könnte das Unternehmen bis zu 100.000 DVD -Filme bereitstellen und 10 Millionen Abonnenten hatte. Am 25. Februar 2007 gab Netflix bekannt, dass es seine 1 Milliardste DVD verkauft habe. In seinem Bericht heißt es, dass Netflix Online -Filmumsatz im Jahr 2011 45% des gesamten Online -Filmverkaufs der US -Nutzer ausmachte.
Als ich dieses Wort zum ersten Mal sah, war es zu Beginn verschiedener amerikanischer Dramen oder Filme. Die von Netflix gedrehten repräsentativen amerikanischen Dramen umfassen "House of Cards", "Drug Lords" und "Stranger Things". Später, als ich Springcloud studierte, entdeckte ich Netflix Companies und fragte mich, ob sie dieselbe Firma waren. Nachdem ich das E -Mail -Suffix auf GitHub überprüft hatte, stellte ich fest, dass es sich tatsächlich um das gleiche Unternehmen handelte. Tatsächlich basieren die Microservices von SpringCloud auf Open Source -Produkten von Netflix.
Die Open-Source-Framework-Komponenten von Netflix werden seit Jahren in der großflächigen verteilten Microservice-Umgebung von Netflix nachgewiesen und werden von der Community nach und nach als Standardkomponenten für den Bau von Microservice-Frameworks akzeptiert. Spring Cloud Open Source -Produkte basieren hauptsächlich auf der weiteren Verpackung von Netflix Open Source -Komponenten, wodurch Springentwickler es ermöglicht, ein grundlegendes Microservice -Framework zu erstellen. Für einige Unternehmen, die beabsichtigen, ein MicroService -Framework -System aufzubauen, nutzen Sie die Open -Source -Microservice -Komponenten (oder die Federwolke) und die Durchführung der erforderlichen Unternehmensanpassungen auf dieser Grundlage zweifellos eine Abkürzung zur Microservice -Architektur.
Eureka
Nach der offiziellen Einführung:
Eureka ist ein REST-Dienst (Repräsentationsstatusübertragung), der hauptsächlich in der AWS-Cloud für die Lokalisierung von Diensten zum Zweck des Lastausgleichs und des Failovers von Mittelstufern verwendet wird.
Eureka ist ein ruhbasierter Dienst, der hauptsächlich in der AWS-Cloud verwendet wird, und findet Dienste, um den Ausgleich und das Failover von Server der Zwischenstufe zu laden.
Spring Cloud verkauft das von Netflix entwickelte Eureka -Modul, um die Registrierung und Entdeckung der Service zu ermöglichen. Eureka übernimmt die CS -Designarchitektur. Eureka Server ist der Server mit Serviceregistrierungsfunktion, es ist das Service Registration Center. Andere Microservices im System verwenden den Client von Eureka, um eine Verbindung zum Eureka -Server herzustellen und eine Herzschlag -Verbindung beizubehalten. Auf diese Weise kann das System -Wartungspersonal überwachen, ob jeder Mikroservice im System normal über den Eureka -Server ausgeführt wird. Einige andere Module der Spring Cloud (wie Zuul) können Eureka Server verwenden, um andere Microservices im System zu entdecken und die relevante Logik auszuführen.
Eureka besteht aus zwei Komponenten: dem Eureka -Server und dem Eureka -Client. Der Eureka -Server wird als Service -Registrierungsserver verwendet. Der Eureka -Client ist ein Java -Client, mit dem die Interaktion mit dem Server vereinfacht, als Wahllokalbalancer fungiert und Service -Failover -Unterstützung bietet. Netflix verwendet einen anderen Client in seiner Produktionsumgebung, das basierend auf Verkehr, Ressourcenauslastung und Fehlerstatus gewichtete Lastausgleich bietet.
Verwenden Sie ein Bild, um Folgendes zu verstehen:
Die obige Abbildung beschreibt kurz die Grundarchitektur von Eureka, bestehend aus 3 Rollen:
1. Eureka Server
2. Dienstleister
3. Serviceverbraucher
Fallpraxis
Eureka Server
Spring Cloud hat mir geholfen, das Service -Registrierungszentrum zu implementieren, und wir benötigen nur wenige einfache Schritte, um es zu vervollständigen.
1. Fügen Sie Abhängigkeiten in POM hinzu
<Depelencies> <Depopentcy> <gruppe> org.springFramework.cloud </GroupId> <artifactId> Spring-Cloud-Starter </artifactId> </abhängig> <Depopentcy> <gruppen-cloud-starter </artifactId> </abhängig> <Depopy> <GroupID> org.springframework <gruppe> org.springframework.boot </Groupid> <artifactid> Spring-Boot-Starter-Test </artifactId> <Scope> test </scope> </abhängig> </Abhängigkeiten>
2. Fügen Sie @EnableEurekaServer Annotation zum Startcode hinzu
@SpringBootApplication@enableEureKaserverPublic Class SpringCloudeureKaApplication {public static void main (String [] args) {Springapplication.run (SpringCloudeurkaApplication.class, args); }}3. Konfigurationsdatei
Standardmäßig wird die Serviceregistrierung auch versucht, sich als Client zu registrieren. Daher müssen wir ihr Kundenregistrierungsverhalten deaktivieren und die folgende Konfiguration in application.properties hinzufügen.
Spring.Application.Name = Spring-Cloud-Eurekaserver.port = 8000eureka.client.register-with-Eureka = falseeureka.client.fetch-Registry = falseeureka.client.serviceurl.defaultzone = http: // localHost: $ {Server {Server {EREKA/EUREKA/EREKA/EREKA/EREKA/EREKA/EREKA/EREKA/EREKA:eureka.client.register-with-eureka : Gibt an, ob Sie sich mit Eureka Server registrieren sollen, Standard ist wahr.eureka.client.fetch-registry : Gibt an, ob Registrierungsinformationen vom Eureka-Server abgerufen werden sollen. Standard ist wahr.eureka.client.serviceUrl.defaultZone : Legt die Adresse so fest, dass sie mit dem Eureka -Server interagiert. Sowohl Abfragedienste als auch Registrierungsdienste müssen sich auf diese Adresse verlassen. Der Standardwert ist http: // localhost: 8761/eureka; Mehrere Adressen können verwendet und getrennt werden.Nach Beginn des Projekts besuchen Sie: http: // localhost: 8000/und Sie können die folgende Seite sehen, auf der keine Dienste gefunden wurden
Cluster
Ein so kritischer Service als Registrierungszentrum, wenn es sich um einen einzelnen Punkt handelt, ist es verheerend, auf einen Fehler zu stoßen. In einem verteilten System ist das Service Registration Center das wichtigste grundlegende Teil und sollte sich in einem Zustand befinden, in dem Dienste jederzeit erbracht werden können. Um seine Verfügbarkeit aufrechtzuerhalten, ist die Verwendung von Clustern eine gute Lösung. Eureka implementiert eine hoch verfügbare Bereitstellung, indem wir uns gegenseitig registrieren. Daher müssen wir nur Eureke Server konfigurieren, um andere verfügbare Serviceurls zu konfigurieren, um eine hochverstellte Bereitstellung zu erreichen.
Doppelknoten -Registrierungszentrum
Zum ersten Mal versuchen wir, ein Dual-Knoten-Registrierungszentrum zu erstellen.
1. Erstellen Sie Anwendungs-Peer1.properties als Konfiguration des Peer1-Servicecenters und Point ServiceUrl an Peer2
Spring.Application.Name = Spring-Cloud-Eurekaserver.port = 8000eureka.instance
2. Erstellen Sie Anwendungs-Peer2.Properties als Konfiguration des Peer2-Servicecenters und Point ServiceUrl an Peer1
Spring.Application.Name = Spring-Cloud-Eurekaserver.port = 8001EUREKA.instance.hostname = peer2eureka.client.serviceurl.Defaultzone = http: // peer1: 8000/eureka/
3. Hostumwandlungen
Fügen Sie der Hosts -Datei die folgende Konfiguration hinzu
127.0.0.1 Peer1 127.0.0.1 Peer2
4. Paketstart
Führen Sie nacheinander die folgenden Befehle aus
#Package MVN Clean Package# Start Eurekajava mit Peer1- und Peeer2-Konfigurationsinformationen -Jar Spring-Cloud-Eureka-0.0.1-Snapshot.jar-Spring.profiles.active = peer1java -jar Spring-Cloud-Eureka-0.0.1-Snapshot.jar--Ssping.profiles.provile.0.1-snapshot.jar--Ssping.profiles.provile.0.1-snapshot.jar--Ssping.profiles.proviles.0.1-snapshot.jar---Spring.profile.provile.0.0.1-snapshot.jar---Spring.profile.provile.0.0.1-snapshot-
Nach dem einzelnen Start nacheinander tritt der Browser ein: http://localhost:8000/ Das Rendering ist wie folgt:
Laut Abbildung ist ersichtlich, dass die DS-Replikate des Registrierungszentrums von Peer1 über die relevanten Konfigurationsinformationen von Peer2 verfügen und in verfügbaren Replikas angezeigt werden. Wir stoppen Peer2 manuell, um sie zu beobachten, und stellen fest, dass Peer2 in die nicht verfügbare Spalte zur Replik der Replik übergeht, was angibt, dass Peer2 nicht verfügbar ist.
Die Konfiguration dieses Dualknotens wurde abgeschlossen.
Eureka Cluster -Verwendung
In der Produktion benötigen wir möglicherweise drei oder mehr Registrierungszentren, um die Stabilität des Dienstes zu gewährleisten. Die Konfigurationsprinzipien sind tatsächlich gleich, und wir verweisen das Registrierungszentrum auf andere Registrierungszentren. Hier führen wir nur die Konfiguration der drei Cluster ein. Tatsächlich ähnelt es dem Dual-Knoten-Registrierungszentrum. Jedes Registrierungszentrum kann auf die beiden anderen Knoten verweisen und an Application.yml konfiguriert werden.
Die Konfigurationsdetails von Application.yml sind wie folgt:
-Spring: Anwendung: Name: Spring-Cloud-Eureka-Profile: Peer1Server: Port: 8000eureka: Instanz: Hostname: Peer1 Client: ServiceUrl: defaultZone: http: // peer2: 8001/eureka/, http: // peer3: 8002/eureka/eureka/--- peer2server: port: 8001eureka: instance: hostname: peer2 client: serviceUrl: defaultZone: http://peer1:8000/eureka/,http://peer3:8002/eureka/---spring: application: name: spring-cloud-eureka profiles: peer3server: port: 8002eureka: instance: Hostname: Peer3 Client: serviceurl: defaultZone: http: // peer1: 8000/eureka/, http: // peer2: 8001/eureka/
Starten Sie das Eureka -Registrierungszentrum mit den Konfigurationsparametern von Peer1, Peer2 bzw. Peer3.
Java-Jar Spring-Cloud-Eureka-0.0.1-Snapshot.jar--Spring.profiles.active = Peer1java -Jar Spring-Cloud-Eureka-0.0.1-Snapshot.jar----Spring.profiles.active2java-Jar Spring-Cloud-EureKa-0.0.0.1-Snapshot-Jarjar-Jar-Jar-Jar-Eureka-0.0.0.1-Snapshot-Jar-Jar-Jar-Jar-Jar-Eureka-0.0.0.1-Snapshot. - -Spring.profiles.active = Peer3
Nach dem einzelnen Start nacheinander tritt der Browser ein: http://localhost:8000/ Das Rendering ist wie folgt:
Sie können die relevanten Informationen zu Peer2 und Peer3 in Peer1 sehen. Bisher wurde der Eureka -Cluster abgeschlossen
Beispielcode
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.