Spring Cloud Eureka Server mit dem Beispiel verstehen

View more Tutorials:

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?
  1. Sie melden in die Applikation Chat an, d.h Sie informieren mit Chat Server , dass Sie online sind.
  2. Chat Server wird Ihnen eine Liste der anderen Leuten bieten. Sie sind in der Status online oder offline.
  3. 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
  1. Eureka
  2. Zookeeper
  3. Cloud Foundry
  4. 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
  • TODO Link!
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
  • TODO Link!

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

View more Tutorials: