Spring Cloud Series: Registro de servicios y componentes de descubrimiento - Eureka (Parte 2)

Otras plataformas del autor:

| CSDN: blog.csdn.net/qq_41153943

| Pepitas: juejin.cn/user/651387…

| Zhihu: www.zhihu.com/people/1024…

| GitHub: github.com/JiangXia-10…

Este artículo tiene un total de 3304 palabras y se espera que se lea durante 9 minutos.

prefacio

Como se mencionó anteriormente, el componente eureka consta principalmente de dos partes: servidor eureka y cliente eureka, servidor eureka. El artículo anterior de la serie SpringCloud: Registro de servicios y componentes de detección: Eureka (Parte 1) presentó cómo desarrollar el servidor eureka como un centro de registro de servicios. hoy en el último artículo Sobre la base de continuar el estudio de eureka, desarrolle eureka client. De hecho, el cliente eureka aquí es un microservicio basado en la división del negocio.

Desarrollo práctico

La base del proyecto de este artículo se basa en la base del proyecto del artículo anterior. Para obtener más información, consulte la serie SpringCloud: Registro de servicios y componente de descubrimiento-Eureka (Parte 1) . Y el código fuente del proyecto final se sincronizará con github, y la dirección se colocará al final del artículo, que se puede descargar y usar.

En primer lugar, al igual que el servidor eureka, también debe crear un proyecto springboot como aplicación cliente. La estructura del proyecto es la siguiente:

imagen

Luego, también debe introducir las dependencias relacionadas con Springboot:

<dependencies>
        <dependency>
            <!--引入springboot相关依赖-->
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--引入spring-cloud-netflix-eureka-client依赖-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
    </dependencies>
复制代码

Luego agregue el archivo application.properties y agregue las configuraciones relacionadas:

#指定服务端口
server.port=8081
#指定服务名称,唯一标识,服务名不能出现下划线,如果不指定名称,显示的就是unknown
spring.application.name=eurekaclient
#指定服务注册中心的地址,暴露服务地址
eureka.client.service-url.defaultZone=http://localhost:8761/eureka
复制代码

Luego agregue una clase de entrada y use la anotación @enableeurekaclient para indicar que la aplicación actual es un cliente registrado con el servicio del servidor eureka para el registro del servicio:

@SpringBootApplication
//当前应用作为一个客户端进行服务注册
@EnableEurekaClient
public class SpringCloudEurekaClient {
    public static void main(String[] args) {
        SpringApplication.run(SpringCloudEurekaClient.class,args);
    }
}
复制代码

Los pasos anteriores son básicamente los mismos que el proceso de creación del proyecto del servidor eureka, excepto por algunas diferencias de contenido específicas.

Luego inicie primero el proyecto del servidor y luego el proyecto del cliente en orden:

imagen

imagen

Introduzca en la barra de direcciones del navegador:

http://localhost:8761/
复制代码

Una instancia de registro de EUREKACLIENT se puede encontrar en la interfaz de administración del centro de registro , lo que indica que EUREKACLIENT se ha registrado en el centro de registro:

imagen

Sin embargo, puede encontrar que hay un mensaje rojo en él. De acuerdo con su intuición, puede juzgar qué tipo de información de seguridad debería ser. Los detalles son los siguientes:

EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY'RE NOT. RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEING EXPIRED JUST TO BE SAFE.
复制代码

El significado traducido de esta oración es: Eureka puede declarar instancias que ya no existen. Cuando el número de actualizaciones es inferior al umbral, las instancias caducadas no se eliminarán por motivos de seguridad.

Aquí debemos explicar que el umbral predeterminado de Eureka es del 85%.

Es decir, por ejemplo, si actualmente hay 10 microservicios y solo 8 tienen respuestas de latido, (8/10=80%<85%) Eureka activará el mecanismo de protección y las instancias caducadas no se eliminarán de inmediato, y esto aparecerá una advertencia de emergencia. Cuando construimos el Servidor Eureka, por ejemplo, construimos dos Servidores Eureka, y el registro automático está prohibido. El Servidor Eureka en sí mismo cuenta como un servicio, por lo que cualquiera de los Servidores Eureka solo puede obtener un latido, 1/2 = 50%. Entonces también aparecerá esta advertencia. Esta situación no se habría producido si no se hubiera deshabilitado el autorregistro.

Luego, cuando no desee tener esta advertencia roja, puede configurarla en el archivo application.properties en el lado del servidor:

eureka.server.enable-self-preservation=false
复制代码

Inicie el proyecto, la advertencia roja desaparece:

imagen

Pero aparece la siguiente advertencia:

THE SELF PRESERVATION MODE IS TURNED OFF. THIS MAY NOT PROTECT INSTANCE EXPIRY IN CASE OF NETWORK/OTHER PROBLEMS.
复制代码

Por lo tanto, el funcionario no recomienda apagar el mecanismo de autoprotección en el entorno de producción.

Hablemos de lo que es el mecanismo de autoprotección de eureka. De forma predeterminada, si el servidor eureka no recibe el latido de una instancia de servicio dentro de un cierto período de tiempo (el tiempo predeterminado es 90 s), el servidor eureka eliminará la instancia. Sin embargo, cuando falla una partición de red, el microservicio y el servidor eureka no pueden comunicarse normalmente, pero el microservicio sí puede comunicarse normalmente.En este momento, la instancia no debe eliminarse, por lo que se introduce un mecanismo de autoprotección. El servidor eureka contará la proporción de fallas de latido durante la operación. Si es inferior al 85 % en 15 minutos, estas instancias estarán protegidas para que estas instancias no caduquen y se limpien. Por lo tanto, el mecanismo de autoprotección es una medida de protección contra las fluctuaciones anormales de la red, lo que puede hacer que el clúster eureka sea más robusto y estable. La siguiente figura es la explicación del mecanismo de autoprotección en el sitio web oficial de github.

imagen

La siguiente figura muestra el tiempo máximo para que el servidor eureka acepte latidos de forma predeterminada. El valor predeterminado es 90 s y la frecuencia con la que el cliente envía un latido al servidor eureka. El valor predeterminado es 30 s. Se puede modificar a través del archivo application.properties:

imagen

También puede configurar el tiempo de espera para borrar instancias:

#超时3s自动清除
eureka.server.eviction-interval-timer-in-ms=3000
复制代码

Actualmente, el sitio web oficial indica que la actualización y el mantenimiento de la versión 2.0 de eureka se ha detenido, por lo que no se recomienda la versión 2.0 y la versión 1.0 es más estable.

imagen

Resumir

¡Lo anterior es cómo usar eureka como aprendizaje para el registro de microservicios y el descubrimiento de servicios! ¡Si tiene alguna pregunta o error, por favor señale y discuta!

Dirección de origen del proyecto:

github.com/JiangXia-10…

dirección github del sitio web oficial de eureka:

https://github.com/Netflix/eur…

sugerencia relacionada

Supongo que te gusta

Origin blog.csdn.net/qq_41153943/article/details/125837657
Recomendado
Clasificación