codestory

Spring Cloud Eureka Server mit dem Beispiel verstehen

  1. Eureka Server - Warum?
  2. Das Zweck der Unterricht
  3. Das Projekt Spring Boot erstellen
  4. @EnableEurekaServer
  5. Die Applikation auf Eclipse laufen
  6. Die Kopien (replica) laufen
  7. Eureka Discovery (Eureka Client)

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

7. Eureka Discovery (Eureka Client)

OK, Die nächste Unterricht