Einführung in Eureka
Eureka bietet ruhbasierte Dienste an, die hauptsächlich im Servicemanagement im Cluster verwendet werden. Eureka bietet Clientkomponenten basierend auf Java -Sprache, die Lastausgleichsfunktionen implementiert und Bedingungen für die Cluster -Bereitstellung von Geschäftskomponenten erstellen. Mit diesem Framework können Geschäftskomponenten in Eureka -Containern registriert werden, die in Clustern eingesetzt werden können, und Eureka führt hauptsächlich eine Liste dieser Dienste und überprüft automatisch ihren Status.
Programmstruktur
Eureka Server erstellen
Abhängigkeit von Maven
<DepepecyManagement> <Depelencies> <Depopentcy> <gruppe> org.springframework <gruppe> org.springFramework.cloud </Groupid> <artifactid> Spring-Cloud-Starter-Eureka-Server </artifactid> </abhängig> </abhängigen>
Ändern Sie den Spring Boot Startup -Port in application.yml
Server: Port: 8761
Aktivieren Sie Eureka Service Annotation @Enableeurekaserver
@EnableEureKaserver@SpringBootApplicationPublic Class EkServerApplication {public static void main (String [] args) {new SpringApplicationBuilder (ekServerApplication.class) .run (args); }}Start Springboot
[Thread-11] Oscneserver.eurekaServerBootstrap: Initialisierter Serverkontext [Haupt] SbcettomcatembededServletContainer: Tomcat mit Port (s): 8761 (http) [Haupt]. EkServerApplication in 8,594 Sekunden (JVM für 9,523)
Eine Ausnahme, die nicht mit dem Server verbunden werden kann, wird während des Starts angezeigt. Dies liegt daran, dass Eureka sich beim Starten als Kunde behandelt, um Registrierungsinformationen zu erfassen.
Die Codekopie lautet wie folgt:
com.netflix.discovery.shared.transport.transportException: Anforderung kann auf keinem bekannten Server ausgeführt werden
Fügen Sie die folgende Konfiguration hinzu und werden beim Starten nicht erneut angezeigt
Eureka: Client: Register Witheureka: Falsches Fetchregistry: Falsch
Register Witheureka erklärt, ob seine eigenen Informationen auf dem Eureka -Server registriert werden sollen. Der Standardwert ist wahr.
FetchRegistry erklärt, ob die Registrierungsinformationen in den Eureka -Server gekriechen sollen, der Standardwert ist wahr.
Besuchen Sie http: // localhost: 8761 in Ihrem Browser, um die Bildbeschreibung der Eureka -Konsoleneingabe anzuzeigen
Erstellen Sie einen Dienstanbieter
verlassen
<De vorangestellt> <gruppe> org.springFramework <gruppe> org.springframework.cloud </Groupid> <artifactid> Spring-Cloud-Starter-Ribbon </artifactId> </abhängig>
Konfigurieren Sie den Port, den Namen der Eureka -Instanz und die Eureka -Dienstadresse in application.yml
Server: Port: 8080spring: Anwendung: Name: ek-providereureka: Instanz: hostname: localhost client: serviceurl: defaultZone: http: // localhost: 8761/eureka/
Erstellen Sie einen REST -Service
@RestControllerPublic Class HelloConTroller {@RequestMapping ("/hello") public String Hallo (httpServletRequest -Anfrage) {return "hello:" + request.getRequesturl (); }}Aktivieren Sie Eureka Client Annotation @Enableeurekaserver
@EnableEureKaclient@SpringbootApplicationPublic Class EkProviderApplication {public static void main (String [] args) {new SpringApplicationBuilder (ekProviderApplication.class) .run (args); }}Nach dem Start sehen Sie in der Eureka -Konsole, dass der Dienstleister in Eureka registriert hat
Erstellen Sie einen Serviceanrufer
verlassen
<De vorangestellt> <gruppe> org.springFramework <gruppe> org.springframework.cloud </Groupid> <artifactid> Spring-Cloud-Starter-Ribbon </artifactId> </abhängig>
Konfigurieren Sie den Port, den Namen der Eureka -Instanz und die Eureka -Dienstadresse in application.yml
Server: Port: 9000Spring: Anwendung: Name: ek-invokeeureka: Instanz: hostname: localhost client: serviceurl: defaultZone: http: // localhost: 8761/eureka/
Schreiben Sie einen REST -Service, um den Dienstleister "/Hallo" anzurufen
@RastController @configurationPublic class invokeController {@bean @loadBalanced public rastTemplate getRestTemplate () {return New RestTemplate zurückgeben; } @RequestMapping ("/invoke") public String invoke () {restTemplate rastTemplate = getRestTemplate (); retRestTemplate.getForObject ("http: // ek-provider/hello", string.class); }}Im herkömmlichen Modus verwenden wir normalerweise HTTPClient in Apache, um den Restdienst aufzurufen. Hier verwenden wir Spring, um die rastTemplate -Komponente bereitzustellen, die den REST -Dienst aufruft. RESTTEMPLATE selbst hat nicht die Möglichkeit, verteilte Dienste aufzurufen, aber nachdem die RESTTEMPLET -Bean durch die @LoadBalanced Annotation geändert wurde, kann diese RastTemplate -Instanz dank der verschiedenen von Spring bereitgestellten Interceptors auf verteilte Dienste zugreifen können.
Aktivieren Sie Eureka Client Annotation @Enableeurekaserver
@EnableEureKaclient@SpringbootApplicationPublic Class EkinvokeApplication {public static void main (String [] args) {new SpringApplicationBuilder (ekinvokeApplication.class) .run (args); }}Nach dem Start sehen Sie in der Eureka -Konsole, dass der Service Caller in Eureka registriert wurde
Greifen Sie dann auf die Schnittstelle "Invoke" des Service Caller im Browser zu. Kehren wie folgt zurück
Zusammenfassen
Der Eureka -Server verwaltet die neuesten Registrierungsinformationen über den Heartbeat -Link, der im Speicher gespeichert ist.
Eureka -Dienstleister verhalten hauptsächlich:
Eureka Service Callers verhalten hauptsächlich:
Quellcodeadresse: https://github.com/xc564864894/springcloud/tree/master/eureka(%E4%B8%80)
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.