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