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

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 4950 palabras y se espera que se lea durante 13 minutos.

prefacio

En un sistema distribuido, el registro de servicios juega un papel importante y es un miembro indispensable del descubrimiento de servicios y el equilibrio de carga del cliente. Además de las funciones básicas del centro de registro, su estabilidad, disponibilidad y robustez tienen un gran impacto en el buen funcionamiento de todo el sistema distribuido.

¿Qué es un Registro de Servicios?

En aplicaciones monolíticas pequeñas anteriores, las llamadas entre componentes solo debían realizarse a través de interfaces con restricciones de especificación. Sin embargo, en la arquitectura de microservicios, la gran aplicación original generalmente se divide en servicios relativamente independientes que brindan funciones específicas de acuerdo con el negocio. Cada microservicio se puede expandir dinámicamente a través de la agrupación en clúster u otros métodos. Cada una de las direcciones de red de las instancias de microservicios puede cambiar dinámicamente. En la arquitectura de microservicios, la extensión del servicio es grande y el número es grande, por lo que es necesario establecer un componente descentralizado para registrar y administrar la información de cada instancia de microservicio y, al mismo tiempo, proporcionar la capacidad de habilitar cada instancia de microservicio para descubrirse unos a otros, para lograr el resultado de llamarse unos a otros.

Por lo tanto, se puede considerar que el registro y el descubrimiento del servicio incluyen dos partes, una es el lado del Servidor y la otra es el Cliente. El lado del servidor es un componente común, que proporciona la función de registro y descubrimiento de servicios para el lado del cliente, mantiene la información relevante del lado del cliente registrada en sí mismo y proporciona una interfaz para que el lado del cliente obtenga información sobre otros servicios en el registro, haciendo cambios dinámicos El cliente puede hacer llamadas entre servicios cuando la dirección del servicio es estable. El cliente registra su propia información de servicio en el servidor de cierta manera, y mantiene la consistencia de su propia información dentro del rango normal, para que otros servicios puedan encontrarse convenientemente. Al mismo tiempo, puede obtener otra información de servicio que necesita. depende de a través del servidor llamada de servicio.

Entonces, en resumen, el registro de servicios se refiere a proponer un servicio único en toda la arquitectura de microservicios. Este servicio no completa ninguna función comercial del sistema, sino que solo se usa para completar el registro de servicios y el descubrimiento de servicios de todo el sistema de microservicios, como así como el estado de salud del servicio Funciones de seguimiento y gestión.

Las funciones del registro de servicios se pueden resumir en:

1. Almacenar toda la información del microservicio, como nombre del microservicio, ip, puerto, etc.;

2. Al realizar llamadas de servicio, use el descubrimiento de servicios para consultar la lista de microservicios y direcciones de red disponibles para llamadas de servicio;

3. Realice la detección de latidos en todos los microservicios. Si se descubre que algunas instancias son inaccesibles durante mucho tiempo, las instancias se eliminarán del registro del servicio.

Los componentes comunes de registro y descubrimiento del servicio incluyen: eureka de netflix, zookeeper (para zk, consulte el artículo anterior: tutorial de zookeeper: introducción ), cónsul y nacos de Ali (como nacos como centro de registro, consulte el artículo anterior: SpringCloud: Build Nacos service and service discovery )

¿Qué es Eureka?

Eureka proviene del griego antiguo y significa "¡Lo encontré! ¡Lo encontré!" Según la leyenda, Arquímedes descubrió el principio de la flotabilidad mientras se bañaba. Estaba tan feliz que no tuvo tiempo de ponerse los pantalones y salió corriendo. a la calle y gritó: "¡Eureka (lo encontré)!". En Netflix, Eureka es un componente de servicio básico para el registro y descubrimiento de servicios de estilo REST, principalmente para balanceo de carga y conmutación por error de servicios de nivel medio en AWS. Eureka consta de dos partes, una es Eureka Server, que proporciona funciones de descubrimiento y registro de servicios; la otra es un cliente Java, llamado Eureka Client, que facilita la interacción con el servidor, y Eureka Client registrará regularmente su propio información Vaya a Eureka Server y descubra otros servicios de Server. Hay un balanceador de carga integrado en el cliente para el balanceo de carga básico por turnos.

Entonces, Eureka consta principalmente de dos componentes: Eureka Server y Eureka Client.

El artículo de hoy aprende principalmente cómo desarrollar un servidor eureka como un registro de servicios.

Desarrollo práctico

La estructura de mi proyecto es la siguiente:

imagen

Primero necesitas crear un proyecto de springcloud. He creado un proyecto de agregación maven aquí como proyecto principal para el aprendizaje posterior. El proyecto principal se utiliza principalmente para la gestión de dependencias y el control de versiones. Por lo tanto, debe agregar algunas dependencias relacionadas con el proyecto al proyecto principal. El archivo pom completo 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.jiangxia</groupId>
    <artifactId>springcloud_parent</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>
    <modules>
        <module>springcloud01_eureka_server</module>
    </modules>

    <!--继承springboot的父项目-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.5.RELEASE</version>
    </parent>
    <!--父项目不写代码,只维护依赖和版本-->
    <!--自定义properties属性-->
    <properties>
        <!--具体的springcloud版本-->
        <spring.cloud-version>Hoxton.SR6</spring.cloud-version>
    </properties>

    <!--维护版本-->
    <dependencyManagement>
        <dependencies>
            <!--维护springcloud版本依赖-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring.cloud-version}</version>
                <!--父项目类型都是pom类型-->
                <type>pom</type>
                <!--当前项目也要导入一个父项目-->
                <scope>import</scope>
            </dependency>
        </dependencies>

    </dependencyManagement>
</project>

Luego cree un subproyecto springcloud01_eureka_server, que es el proyecto que usa eureka-server para el centro de registro de servicios aquí. Dado que el subproyecto hereda las dependencias del proyecto principal, solo necesita agregar las siguientes dependencias al archivo pom del subproyecto:

 <dependencies>
        <!--引入springbootweb依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!--引入eurekaserver依赖-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
    </dependencies>

Luego debe agregar una clase de inicio de entrada Además de usar la anotación @springbootapplication, también debe agregar la anotación @enableEurekaServer para indicar que el proyecto actual es un registro de servicio.

/**
 * @author jiangxia
 * @date 2022年05月18日 21:02
 */
@SpringBootApplication
//开启eurekaserver注解:表示当前应用是一个服务注册中心
@EnableEurekaServer
public class EurekaServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApplication.class,args);
    }
}

El último paso es hacer alguna configuración en el archivo de configuración.En el archivo application.properties, puede configurar el puerto del servicio, el nombre del servicio, la dirección del centro de registro y otras configuraciones, de la siguiente manera:

#eureka默认端口就是8761,这里和默认保持一致
server.port=8761
#指定服务名称,唯一标识,服务名不能出现下划线,如果不指定名称,显示的就是unknown
spring.application.name=eurekaserver
#指定服务注册中心的地址,暴露服务地址
eureka.client.service-url.defaultZone=http://localhost:8761/eureka
# 关闭eureka立即注册,默认事true
eureka.client.fetch-registry=false
#让当前应用仅仅是服务注册中心,即开启不自己注册自己,默认是true
eureka.client.register-with-eureka=false

Hasta ahora, se ha desarrollado el centro de registro del servicio de desarrollo del servidor eureka. Proyecto de inicio:

imagen

Escriba en la barra de direcciones:

http://localhost:8761/

Puede ver la interfaz de administración del servidor eureka:

imagen

Se puede encontrar que no hay ninguna aplicación aquí, porque aún no se ha registrado ninguna aplicación. Lo anterior tiene una configuración:

# 关闭eureka立即注册,默认是true
eureka.client.fetch-registry=false
#让当前应用仅仅是服务注册中心,即开启不自己注册自己,默认是true
eureka.client.register-with-eureka=false

Si la configuración anterior se cambia a verdadera o no se establece (el valor predeterminado es verdadero). Luego, el servidor eureka se registrará en el centro de registro cuando se inicie, de la siguiente manera:

imagen

imagen

Y durante el proceso de inicio anterior, aparece un mensaje de error en la consola:

imagen

Esto se debe a que eureka incluye dos componentes, servidor y cliente. Cuando el componente del servidor eureka se introduce en el proyecto, el cliente eureka se introducirá en el proyecto al mismo tiempo. Por lo tanto, se iniciará como un centro de servicio al iniciar, y al mismo tiempo Regístrese como cliente en el centro de registro, y comentamos las dos configuraciones en el archivo de configuración, por lo que el valor predeterminado es registrarse inmediatamente al inicio (lo mismo es cierto si la configuración anterior se establece en verdadero), pero el servicio aún no está listo para el registro ¡Listo, informe un error! Así que establezca las dos configuraciones anteriores en falso.

Resumir

Lo anterior es el uso del servidor eureka para el desarrollo del centro de registro de servicios. Los pasos principales son crear el proyecto springcloud correspondiente, luego importar las dependencias relacionadas con el servidor springcloud y eureka, y finalmente configurar el servidor eureka en el archivo de configuración y usar la anotación @EnableEurekaServer en la clase de entrada para iniciar el servicio Simplemente registre el centro.

Los artículos posteriores continuarán el desarrollo del cliente eureka.

sugerencia relacionada

Supongo que te gusta

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