Spring Cloud Eureka Server mit dem Beispiel verstehen
1. Eureka Server - Warum?
OK, Ich bin sicher, dass Sie eine Applikation Chat schon benutzt haben um mit den Freunden auf Internet zu sprechen. Was passiert wenn Sie in die Applikation Chat auf Ihrem Computer anmelden?
- Sie melden in die Applikation Chat an, d.h Sie informieren mit Chat Server , dass Sie online sind.
- Chat Server wird Ihnen eine Liste der anderen Leuten bieten. Sie sind in der Status online oder offline.
- Und dann haben Sie die Liste der Online-Personen entdeckt (Discovered) und natürlich haben sie auch Sie entdeckt
In der Praxis wenn die Anzahl der Chat Benutzer erhöht, wird die Anzahl von Chat Servers auch erhöht. Und sie haben den Weg zur Austausch der Status von Benutzer
Sie bauen ein verteiltes System, das viele Dienstleistungen (die Applikation) unabhängig laufend auf den unterschiedlichen Servers einschließt. Damit die Dienstleistungen mit einander sprechen können, sollen sie einander entdecken. Bei der Entdeckung zueinander können deren Dienstleistungen aufrufen. Deshalb brauchen wir etwas wie Chat Server, der den Dienstleistungen bei der Registrierung von Existenz hilft
Das ist "Service Registration" ( die Dienstleistung Registration). Alle Dienstleistungen (die Applikation) in dem verteilten System (distributed system) müssen mit "Service Registration" registriert werden. Sie sind wie alle Leuten in einem Land müssen die Geburturkunde registrieren
Es gibt vielen Technologie für Sie um eine "Service Registration" zu haben, Spring Cloud bietet Sie einige folgenden Technologie Lösungen
- Eureka
- Zookeeper
- Cloud Foundry
- Consul
2. Das Zweck der Unterricht
In diesem Artikel leite ich Sie bei der Erstellung einer Service Registration benutzend Spring Cloud Eureka Server.
Es wird besser wenn Sie die Information über Netflix und Eureka studieren, die in den folgenden Artikeln vorgestellt werden
- Tìm hiểu về Spring Cloud Netflix Eureka
Die Fragen werden in diesen Artikel diskussiert:
Der Schritt 1:
- Eine Service Registration benutzend Spring Cloud Eureka Server erstellen.
- Die Applikation auf Eclipse direkt laufen und Eureka Monitor schauen
Der Schritt 2:
- Die Kopien (replica) für die Applikation erstellen um auf den unterschiedlichen Servers zu implementieren. Jede Kopie (replica) wird auf einem unterschiedlichen Domain Name laufen. Hier nehmen wir an, das System hat vielen Benutzer. Deshalb werden vielen Kopien gefordert um auf die unterschiedlichen Server zur Overload-vermeidung zu laufen.
- Die Status von der Status-Austausch zwischen Eureka Server erklären.
3. Das Projekt Spring Boot erstellen
Auf Eclipse erstellen Sie ein Projekt Spring Boot:
Geben Sie ein
- Name: SpringCloudServiceRegistrationEurekaServer
- Group: org.o7planning
- Artifact: SpringCloudServiceRegistrationEurekaServer
- Description: Spring Cloud Service Registration (Eureka Server)
- Package: org.o7planning.eurekaserver
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
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>
<groupId>org.o7planning</groupId>
<artifactId>SpringCloudServiceRegistrationEurekaServer</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>SpringCloudServiceRegistrationEurekaServer</name>
<description>Spring Cloud Service Registration (Eureka Server)</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<spring-cloud.version>Edgware.RELEASE</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
4. @EnableEurekaServer
Um die Applikation zu einer Service Registration zu werden, sollen Sie @EnableEurekaServer benutzen. Diese Annotation informiert Spring , dass Sie eine Service Registration nach der Technologie von Netflix (Netflix Eureka) laufen sollen.
SpringCloudServiceRegistrationEurekaServerApplication.java
package org.o7planning.eurekaserver;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@EnableEurekaServer
@SpringBootApplication
public class SpringCloudServiceRegistrationEurekaServerApplication {
public static void main(String[] args) {
SpringApplication.run(SpringCloudServiceRegistrationEurekaServerApplication.class, args);
}
}
application.yml
---
# This default profile is used when running a single instance completely standalone:
spring:
profiles: default
server:
port: 9000
eureka:
instance:
hostname: my-eureka-server.com
client:
registerWithEureka: false
fetchRegistry: false
serviceUrl:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
# united-states, france, and vietnam illustrate running 3 intercommunicating instances.
# This example has them running side-by-side on localhost
# -- which is unrealistic in production
# -- but does illustrate how multiple instances collaborate.
#
# Run by opening 3 separate command prompts:
# java -jar -Dspring.profiles.active=united-states SpringCloudServiceRegistrationEurekaServer.jar
# java -jar -Dspring.profiles.active=france SpringCloudServiceRegistrationEurekaServer.jar
# java -jar -Dspring.profiles.active=vietnam SpringCloudServiceRegistrationEurekaServer.jar
---
spring:
profiles: united-states
application:
name: eureka-server-clustered # ==> This is Service-Id
server:
port: 9001
eureka:
instance:
hostname: my-eureka-server-us.com
client:
registerWithEureka: true
fetchRegistry: true
serviceUrl:
defaultZone: http://my-eureka-server-fr.com:9002/eureka/,http://my-eureka-server-vn.com:9003/eureka/
---
spring:
profiles: france
application:
name: eureka-server-clustered # ==> This is Service-Id
server:
port: 9002
eureka:
instance:
hostname: my-eureka-server-fr.com
client:
registerWithEureka: true
fetchRegistry: true
serviceUrl:
defaultZone: http://my-eureka-server-us.com:9001/eureka/,http://my-eureka-server-vn.com:9003/eureka/
---
spring:
profiles: vietnam
application:
name: eureka-server-clustered # ==> This is Service-Id
server:
port: 9003
eureka:
instance:
hostname: my-eureka-server-vn.com
client:
registerWithEureka: true
fetchRegistry: true
serviceUrl:
defaultZone: http://my-eureka-server-us.com:9001/eureka/,http://my-eureka-server-fr.com:9002/eureka/
In dieser Applikation konfiguriere ich auf die File application.yml statt von application.properties, Sie können den Unterschied zwischen die File *.yml und *.properties nach den folgenden Artikel lernen
- properties vs yml
5. Die Applikation auf Eclipse laufen
Wenn Sie die Applikation auf Eclipse direkt laufen, wird die Defaul Profil benutzt um für diese Applikation zu konfigurieren
Eureka Monitor erlaubt Sie, die Liste der aktiven und registrierten Dienstleistungen (die Applikation) mit diesen Eureka Server zu sehen und gleichzeitig die auf das verteilten System laufenden Kopien (replica) dieser Applikation zu sehen. Sie können auf Eureka Monitor nach folgenden URL zugreifen
Das Profil "default" (default profile) wird konfiguriert um auf dem Domain Name my-eureka-server.com zu laufen. Durch die Konfiguration vom Domain Name auf die File "hosts" können Sie diesen Domain Name haben
Auf Windows öffnen Sie die File:
- C:\Windows\System32\drivers\etc\hosts
Das folgende Konfiguration Stück einfügen
C:\Windows\System32\drivers\etc\hosts
127.0.0.1 my-eureka-server.com
127.0.0.1 my-eureka-server-us.com
127.0.0.1 my-eureka-server-fr.com
127.0.0.1 my-eureka-server-vn.com
Um die Files "hosts" in die anderen Betriebssystem zu bearbeiten, können Sie die folgenden Anleitung schauen:
Und Sie haben den Domain Name my-eureka-server.com geschafft. Achten Sie darauf, dieser Domain Name funktioniert nur auf Ihrem Computer
6. Die Kopien (replica) laufen
Zuerst sollen Sie die Funktion "Maven Install" erstellen um die File jar zu erstellen. Klicken Sie die Rechtmaustaste aufs Projekt und wählen:
- Run As/Maven Install
Nach der erfolgreichen Implementation von "Maven Install" haben Sie die File jar in dem Verzeichnis target vom Projekt.
Die erstellte File jar in einem Verzeichnis kopieren und gleichzeitig 3 Files BAT erstellen:
- eureka-server-us.bat
- eureka-server-fr.bat
- eureka-server-vn.bat
my-eureka-server-us.bat
java -jar -Dspring.profiles.active=united-states SpringCloudServiceRegistrationEurekaServer-0.0.1-SNAPSHOT.jar
my-eureka-server-fr.bat
java -jar -Dspring.profiles.active=france SpringCloudServiceRegistrationEurekaServer-0.0.1-SNAPSHOT.jar
my-eureka-server-vn.bat
java -jar -Dspring.profiles.active=vietnam SpringCloudServiceRegistrationEurekaServer-0.0.1-SNAPSHOT.jar
Wir simulieren gerade die Erstellung der 3 Kopien (replica) und die Implementation auf 3 unterschiedlichen Servers mit 3 unterschiedlichen Domain Name
Laufen Sie die 3 obengemeinten BAT Files
OK, Jetzt können Sie in den folgenden Pfaden zugreifen und die Ergebnisse schauen
Anleitungen Spring Cloud
- Was ist Cloud Computing?
- Einführung in Netflix und seine Cloud-Computing-Technologie
- Einführung in Spring Cloud
- Spring Cloud Config Server mit dem Beispiel verstehen
- Spring Cloud Config Client mit dem Beispiel verstehen
- Spring Cloud Eureka Server mit dem Beispiel verstehen
- Spring Cloud Discovery Eureka Client mit dem Beispiel verstehen
- Load Balancing in Spring Cloud mit Ribbon und Beispiel verstehen
Show More