(Turn) El tutorial de SpringCloud más simple de la historia | Parte 1: Registro y descubrimiento de servicios Eureka (versión Finchley)

1. Introducción a la nube de primavera


En vista del hecho de que "The Simplest Spring Cloud Tutorial in History" es muy popular entre los lectores, una vez más actualicé especialmente la versión. La versión actualmente soportada es Spring Boot versión 2.0.3.RELEASE, y Spring Cloud versión es Finchley. LIBERACIÓN.

Los documentos oficiales de la versión de Finchley son los siguientes:

https://cloud.spring.io/spring-cloud-static/Finchley.RELEASE/single/spring-cloud.html

Spring Cloud proporciona a los desarrolladores algunas herramientas para construir rápidamente sistemas distribuidos, incluida la gestión de la configuración, el descubrimiento de servicios, disyuntores, enrutamiento, microagentes, buses de eventos, bloqueos globales, campañas de toma de decisiones, sesiones distribuidas, etc. Se ejecuta en un entorno simple y se puede ejecutar en la computadora del desarrollador. Además, spring cloud se basa en springboot, por lo que debe tener cierta comprensión de springboot durante el desarrollo. Si no lo sabe, puede leer este artículo: Aprenda springboot en 2 horas . Además, si no conoce la "arquitectura de microservicio", puede buscar "arquitectura de microservicio" a través de los motores de búsqueda.

2. Cree un registro de servicios


Aquí, todavía utilizo Eureka como el componente de registro y descubrimiento de servicios.En cuanto a Consul, se introducirá un artículo en detalle más adelante.

2.1 Primero cree un proyecto principal de maven.

Primero cree un proyecto principal de Maven e introduzca las dependencias en su archivo pom. La versión Spring Boot es 2.0.3.RELEASE, y la versión Spring Cloud es Finchley.RELEASE. Este archivo pom se utiliza como archivo pom principal, que desempeña un papel de control de versión dependiente, y otros proyectos de módulo heredan el archivo pom. Toda esta serie de artículos adopta este modo, y el pom de otros artículos es el mismo que este pom. Nuevamente, no repetiré la introducción en el futuro. el código se muestra a continuación:

<?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>com.forezp</groupId>
    <artifactId>sc-f-chapter1</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>pom</packaging>

    <name>sc-f-chapter1</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.3.RELEASE</version>
        <relativePath/>
    </parent>

    <modules>
        <module>eureka-server</module>
        <module>service-hi</module>
    </modules>

    <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>Finchley.RELEASE</spring-cloud.version>
    </properties>

    <dependencies>
        <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>


2.2 Luego crea 2 proyectos modelo

Un proyecto modelo sirve como registro de servicios, a saber, Eureka Server, y el otro sirve como Eureka Client.

A continuación, se toma como ejemplo la creación de un servidor para explicar el proceso de creación en detalle:

Haga clic derecho en el proyecto -> crear modelo -> seleccione spring initialir como se muestra a continuación:

å¨è¿éæå ¥ å¾çæè¿ °

Siguiente paso -> seleccione descubrimiento en la nube-> servidor eureka, y luego continúe con el siguiente paso.

å¨è¿éæå ¥ å¾çæè¿ °

Una vez creado el proyecto, su pom.xml hereda el archivo pom principal e introduce la dependencia de spring-cloud-starter-netflix-eureka-server. El código es el siguiente:

<?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>com.forezp</groupId>
    <artifactId>eureka-server</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>eureka-server</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>com.forezp</groupId>
        <artifactId>sc-f-chapter1</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
    </dependencies>

</project>


2.3 Iniciar un registro de servicios

Solo se necesita una anotación @EnableEurekaServer. Esta anotación debe agregarse a la clase de aplicación de inicio del proyecto springboot:


@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApplication.class, args );
    }
}


Eureka es un componente de alta disponibilidad. No tiene caché de back-end. Después de que se registra cada instancia, debe enviar un latido al registro (para que se pueda hacer en la memoria). De forma predeterminada, el servidor de erureka también es un eureka cliente y se debe especificar un servidor. El archivo de configuración appication.yml del servidor eureka:

server:
  port: 8761

eureka:
  instance:
    hostname: localhost
  client:
    registerWithEureka: false
    fetchRegistry: false
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

spring:
  application:
    name: eurka-server
      

Utilice eureka.client.registerWithEureka: false y fetchRegistry: false para indicar que es un servidor eureka.

El servidor Eureka tiene una interfaz, inicie el proyecto, abra el navegador para visitar:
http: // localhost: 8761  , la interfaz es la siguiente:

å¨è¿éæå ¥ å¾çæè¿ °

No hay aplicación disponible (no se encuentra ningún servicio), porque, por supuesto, no se puede encontrar ningún servicio sin un servicio registrado.

Tres, crear un proveedor de servicios (cliente eureka)

Cuando el cliente se registre en el servidor, proporcionará algunos metadatos, como host y puerto, URL, página de inicio, etc. El servidor Eureka recibe mensajes de latido de cada instancia de cliente. Si el latido se agota, la instancia generalmente se elimina del servidor registrado.

El proceso de creación es similar al servidor, el pom.xml se crea de la siguiente manera:
 

<?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>com.forezp</groupId>
    <artifactId>service-hi</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>service-hi</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>com.forezp</groupId>
        <artifactId>sc-f-chapter1</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>


</project>


Anote @EnableEurekaClient para indicar que es un eurekaclient.

@SpringBootApplication
@EnableEurekaClient
@RestController
public class ServiceHiApplication {

    public static void main(String[] args) {
        SpringApplication.run( ServiceHiApplication.class, args );
    }

    @Value("${server.port}")
    String port;

    @RequestMapping("/hi")
    public String home(@RequestParam(value = "name", defaultValue = "forezp") String name) {
        return "hi " + name + " ,i am from port:" + port;
    }

}



Solo @EnableEurekaClient no es suficiente. También debe indicar la dirección de su registro de servicio en el archivo de configuración. El archivo de configuración application.yml es el siguiente:

server:
  port: 8762

spring:
  application:
    name: service-hi

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/


Es necesario especificar spring.application.name, esto es muy importante, esto generalmente se basa en este nombre en futuras llamadas entre servicios y servicios.
Inicie el proyecto y abra http: // localhost: 8761, que es la URL del servidor eureka:

å¨è¿éæå ¥ å¾çæè¿ °

Verá que se ha registrado un servicio en el servicio, el nombre del servicio es SERVICE-HI, el puerto es 7862

Luego abra  http: // localhost: 8762 / hi? Name = forezp  , verá en el navegador:

hola forezp, soy del puerto: 8762

Descarga de la fuente: https://github.com/forezp/SpringCloudLearning/tree/master/sc-f-chapter1

Lee mas

Resumen de los tutoriales de SpringCloud más simples de la historia

Resumen del tutorial de SpringBoot

Resumen de preguntas de la entrevista de Java

Cuatro, materiales de referencia

http://blog.csdn.net/forezp/article/details/69696915

http://cloud.spring.io/spring-cloud-static/Finchley.RELEASE/single/spring-cloud.html

Reimpreso: http://blog.csdn.net/forezp/article/details/81040925

 

 

Supongo que te gusta

Origin blog.csdn.net/u014225733/article/details/100536712
Recomendado
Clasificación