1 Introducción a las funciones del módulo de microservicio
1.1 Gobernanza del servicio
La gobernanza de servicios es el módulo más central y básico de la arquitectura de microservicios. Se utiliza principalmente para realizar el registro y descubrimiento automático de cada instancia de microservicio.
Spring Cloud Eureka es parte de la suite de microservicios Spring Cloud Netflix, que se basa en Netflix Eureka para el empaquetado secundario. Principalmente responsable de completar la función de gobierno del servicio en la arquitectura de microservicios.
1.2 Registro de servicio
En el marco de gobernanza de servicios, generalmente se crea un registro y cada unidad de servicio registra sus propios servicios en el registro, incluida información adicional como el host del servicio y el número de puerto, el número de versión del servicio y el protocolo de comunicación. El centro de registro organiza la lista de servicios de acuerdo con el nombre del servicio. Al mismo tiempo, debe controlar si los servicios de la lista están disponibles mediante la detección de latidos. Si no está disponible, debe eliminarse del servicio. lista para lograr el efecto de los servicios de resolución de problemas.
1.3 Descubrimiento de servicios
Bajo el marco de gobierno de servicios, las llamadas entre servicios ya no se realizan especificando direcciones de instancia específicas, sino iniciando llamadas de solicitud por nombres de servicio. La persona que llama al servicio obtiene la lista de instancias de servicio de la lista de servicios del registro de servicios a través del nombre del servicio y saca una ubicación de la instancia de servicio a través de la estrategia de equilibrio de carga especificada para realizar la llamada de servicio.
2 Versión de demostración
2.1 Eureka Server crea un centro de registro de servicios
La estructura del proyecto es la siguiente
/src
/main
/java
/com/lerr/baseeureka
BaseEurekaApplication.java
/resources
application.properties
pom.xml
2.1.1 Tome Maven como ejemplo para configurar las dependencias del proyecto
- pom.xml (pom.xml introduce dependencias relacionadas)
<!-- 使用阿里云配置,下载速度可靠 -->
<repositories>
<repository>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</repository>
</repositories>
<!-- 继承 spring-boot-starter-parent 一些已有的配置 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.4.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>Finchley.SR1</spring-cloud.version>
</properties>
<dependencies>
<!-- 引入 eureka-server表明当前工程是作为服务注册中心 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-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>
2.1.2 La clase de inicio principal, agregue la anotación @EnableEurekaServer y habilite la capacidad del servidor
- BaseEurekaApplication.java
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@EnableEurekaServer //启动一个服务注册中心,供其他应用进行对话
@SpringBootApplication
public class BaseEurekaApplication {
public static void main(String[] args) {
SpringApplication.run(BaseEurekaApplication.class, args);
}
}
2.1.3 Configuración del archivo de configuración
Dado que es un centro de registro de servicios, no es necesario que se registre usted mismo, eureka.client.register-with-eureka
ya que es por defecto true
, por lo que debe prestar especial atención a la declaración comofalse
- application.properties
server.port=1111
eureka.instance.hostname=localhost
# 不向注册中心注册自己
eureka.client.register-with-eureka=false
# 注册中心的职责是维护实例,不需要去检索服务
eureka.client.fetch-registry=false
2.1.4 Iniciar el proyecto y acceder
Visite http: // localhost: 1111 /
Página de inicio de Eureka
2.2 Los módulos de microservicio van al registro para registrarse
La estructura del proyecto es la siguiente
/src
/main
/java
/com/lerr/basemsone
BaseMsOneApplication.java
/resources
application.properties
bootstrap.properties
pom.xml
2.2.1 Configuración dependiente, pom.xml
- pom.xml
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.4.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>Finchley.SR1</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- 如果是具体业务模块,引入eureka-client依赖 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</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>
2.2.2 Configuración de inicio
@EnableDiscoveryClient //表明去注册中心注册
@SpringBootApplication
public class BaseMsOneApplication {
public static void main(String[] args) {
SpringApplication.run(BaseMsOneApplication.class, args);
}
}
2.2.3 Archivo de configuración
- application.properties
server.port=8180
- bootstrap.properties
# 设定服务名称
spring.application.name=ms-one
# 服务注册中心的地址,告诉应用去这个地方注册
eureka.client.service-url.defaultZone=http://localhost:1111/eureka/
3 Inicie el registro de servicios y los microservicios
3.1 Captura de pantalla de la página del centro de registro del servicio
3.2 Análisis de registros
Puede mirar el registro del módulo de microservicio, lo que significa que va al centro de servicio para registrarse
2018-08-20 23:17:05.257 INFO 21816 --- [ main] com.netflix.discovery.DiscoveryClient : Discovery Client initialized at timestamp 1534778225257 with initial instances count: 0
2018-08-20 23:17:05.261 INFO 21816 --- [ main] o.s.c.n.e.s.EurekaServiceRegistry : Registering application ms-one with eureka with status UP
2018-08-20 23:17:05.262 INFO 21816 --- [ main] com.netflix.discovery.DiscoveryClient : Saw local status change event StatusChangeEvent [timestamp=1534778225262, current=UP, previous=STARTING]
2018-08-20 23:17:05.264 INFO 21816 --- [nfoReplicator-0] com.netflix.discovery.DiscoveryClient : DiscoveryClient_MS-ONE/F0R6S7J.SU.intra.cpic.com.cn:ms-one:8180: registering service...
Al mismo tiempo, mire el registro del centro de registro del servicio. Cuando se registre una aplicación, se generará el siguiente registro
2018-08-20 23:17:05.395 INFO 24168 --- [nio-1111-exec-9] c.n.e.registry.AbstractInstanceRegistry : Registered instance MS-ONE/F0R6S7J.SU.intra.cpic.com.cn:ms-one:8180 with status UP (replication=false)
Autor: liuyangcc
enlace: https: //www.jianshu.com/p/b3014de7c312
Fuente: Los libros de Jane
tienen derechos de autor del autor. Para reimpresiones comerciales, comuníquese con el autor para obtener autorización y para reimpresiones no comerciales, indique la fuente.