La única forma de aprender microservicios: introducción a los novatos de Nacos (abajo)

Tachibana Sakyo, el hermano mayor de Tachibana Ukyo que ama la tecnología

1. Descubrimiento de servicios

1.1 ¿Qué es el descubrimiento de servicios?

En la arquitectura de microservicios, todo el sistema se divide en múltiples microservicios, y la colaboración entre los microservicios y los microservicios para lograr el objetivo, de modo que el código debe ser llamado de forma remota (el consumidor del servicio llama al productor del servicio), y el consumidor necesita Conozca la ubicación de la red del servidor (IP, número de puerto).
Inserte la descripción de la imagen aquí

1.2 Comparación entre el descubrimiento de servicios principales y el centro de configuración

Inserte la descripción de la imagen aquí

1.3 Proceso de colaboración del servicio SpringCloud

Inserte la descripción de la imagen aquí

El servicio B registra información en el centro de descubrimiento de servicios, el servicio A obtiene la información de registro de B, selecciona un servicio a través del algoritmo de equilibrio de carga Ribbon, selecciona un servicio y luego llama a la API del servicio a través de Fegin para completar la colaboración del servicio.

1.3.1 El concepto de equilibrio de carga

El equilibrio de carga es uno de los métodos importantes para manejar una alta concurrencia, aliviar la presión del servidor y reducir la presión de la red a través de una estrategia determinada después de que el usuario envía una solicitud para distribuir la presión entre varias instancias. Se divide en equilibrio de carga del lado del servidor , Cliente equilibrio de carga .
Inserte la descripción de la imagen aquí

El equilibrio de carga del lado del servidor significa que cuando un usuario solicita un servicio, pasará por un equilibrador de carga (como Nginx) y el equilibrador de carga asignará la solicitud para lograr una alta disponibilidad.
El equilibrio de carga del cliente es el uso de algoritmos de equilibrio de carga para seleccionar una instancia en el registro de servicios a la que llamar para lograr una alta disponibilidad cuando un usuario solicita un servicio.

Ribbon es un equilibrador de carga del lado del cliente. Su responsabilidad es seleccionar una instancia adecuada de una lista de instancias. La forma de elegir depende del equilibrador de carga.
El componente principal de la cinta IRule es una interfaz de estrategia de equilibrio de carga, tiene la siguiente implementación:

· RoundRolbinRule (predeterminado) : sondeo, que consiste en obtener la dirección
de la instancia en un orden determinado. · RandomRule : obtiene la dirección
de la instancia de forma aleatoria. · AvalibailityFilteringRule : para filtrar los servicios que se encuentran en el estado de disparo del interruptor automático debido a múltiples fallas de acceso, y los servicios cuyo número simultáneo excede el umbral, y luego sondear los servicios restantes.
· WeightedResponseTimeRule : Seleccione el servicio en función del tiempo de respuesta promedio. Cuanto menor sea el tiempo de respuesta promedio, mayor será la probabilidad de ser seleccionado.
Si se acaba de iniciar y no hay datos de tiempo de respuesta promedio, cambiará automáticamente a sondeo. Cuando los datos sean suficientes, volverá automáticamente al modo de balance actual.
· RetyRule : Primero obtenga el servicio de acuerdo con la estrategia RoundRobinRule, si no logra obtener el servicio, vuelva a intentar obtener el servicio disponible dentro del tiempo especificado.
· BestAvalibableRule : filtrará los servicios que están en el estado de disparo del disyuntor debido a múltiples fallas de acceso, y luego seleccionará un servicio con una pequeña cantidad de simultaneidad.
· ZoneAvoidanceRule : la regla predeterminada, que selecciona el servidor agravando el rendimiento del área donde se encuentra el servidor y la disponibilidad del servidor.

El archivo de configuración de SpringBoot modifica la estrategia de equilibrio de carga predeterminada:

account-service.ribbon.NFloadBalancerRuleClassName = com.netfix.loadbalancer.RandomRule
account-service es el nombre de la llamada de servicio, y el siguiente es el componente fijo

2. Desarrollar el servicio Nacos

Simulación: Construimos un proyecto de microservicio, registramos información en el centro de configuración a través de nacos, y completamos los servicios y las llamadas remotas a través de Fegin.

2.1 Configurar Nacos

1) Descargue Nacos https://nacos.io/zh-cn/docs/quick-start.html
2) Descomprima Nacos y abra el archivo /conf/application.properties
3) Agregue la configuración de la base de datos y almacene la información de configuración en la base de datos
Conectar URL de DB:
db.url.0 = jdbc: mysql: //127.0.0.1: 3306 / demo-nacos? CharacterEncoding = utf8 & useUnicode = true & useSSL = false & serverTimezone = UTC
db.user = root
db.password = root
4) Nacos predeterminado número de puerto 8848 También se puede cambiar
server.port = 8849
5) Iniciar Nacos

2.2 Construir un productor de servicios

** 1) Nuevo proyecto
Inserte la descripción de la imagen aquí

2) Nuevo módulo de productor de servicios
Inserte la descripción de la imagen aquí

3) Importar dependencia de la clase padre pom.xml **

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

<dependencies>
    <!-- feign客户端依赖 -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-openfeign</artifactId>
        <version>2.1.3.RELEASE</version>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <scope>test</scope>
    </dependency>
    <!--Nacos-->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        <version>0.2.2.RELEASE</version>
    </dependency>
    <!--SpringBoot-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

4) Nueva clase de inicio
@SpringBootApplication: es la anotación central del proyecto Sprnig Boot, el propósito es habilitar la configuración automática
@EnableDiscoveryClient: habilitar Nacos
Inserte la descripción de la imagen aquí

** 5) Nuevo controlador
Inserte la descripción de la imagen aquí

6) Información de configuración de entrada del nuevo archivo de configuración **
servidor:
puerto: 8010
primavera:
aplicación:
nombre: pro-nacos
nube:
nacos:
descubrimiento: dirección del
servidor: 127.0.0.1:8849
Inserte la descripción de la imagen aquí

7) Iniciar servicio El
servicio que se acaba de registrar ha aparecido en la lista de servicios de nacos
Inserte la descripción de la imagen aquí

2.3 Configurar consumidores

1) Cree un nuevo módulo de consumidor
Inserte la descripción de la imagen aquí

2) Crea una nueva clase de inicio

Debido a que la interfaz de Fegin está escrita en este módulo, agregue un @EnableFeginClients
Inserte la descripción de la imagen aquí

3) Nueva interfaz de cliente
Inserte la descripción de la imagen aquí

@FeginClient ("Nombre del servicio del proveedor")
Inserte la descripción de la imagen aquí

4) Iniciar el servicio
Inserte la descripción de la imagen aquí

Después de abrir el cliente de Nacos, se comprueba que ambos servicios se han registrado con éxito en Nacos.
Inserte la descripción de la imagen aquí

5)
Inserte la descripción de la imagen aquí Llamada de prueba exitosa

2.4 Lograr un equilibrio complejo de productores

1) En el artículo anterior, nos hemos dado cuenta del descubrimiento del servicio nacos del productor y la llamada remota de Fegin. Ahora veamos el equilibrio de carga del productor. Como todos sabemos, el sondeo se usa de forma predeterminada en el equilibrio de carga de Ribbon, y usaremos el sondeo para la demostración.

2) Cambie el número de puerto del productor en el archivo de configuración para obtener automáticamente un número de puerto dinámico, de modo que podamos configurar dos servicios con diferentes números de puerto para implementar el sondeo.
Inserte la descripción de la imagen aquí

3) Opere de acuerdo con los pasos:
①El primer paso es hacer clic en la esquina superior derecha para crear un nuevo servicio de productor ②Seleccione el
número + ③Seleccione
SpringBoot
④Seleccione MainClass, seleccione el servicio de productor correspondiente
⑤Definir un número de puerto -Dport = 56011
Inserte la descripción de la imagen aquí

4) Después de completar la configuración, haga clic para iniciar el servicio. Después de que se inicien los dos servicios de productor, se iniciará el servicio de consumidor. Vayamos a Ncos para verificar
Inserte la descripción de la imagen aquí

En la lista, encontramos que el número de instancias de pro-nacos es 2 y el número de instancias de con-nacos es 1, lo que demuestra que hemos iniciado con éxito dos servicios al productor y un servicio al consumidor. En este momento, utilice la herramienta de prueba para probar el equilibrio de carga.

El primer servicio llega al servicio NacosProApplication1 y el resultado de salida es "Dianfanrenganfanhun"
Inserte la descripción de la imagen aquí

El segundo servicio llega al servicio de aplicación NacosPro y el resultado de salida es "Danfanrenganfanhun"
Inserte la descripción de la imagen aquí

5) En este punto, nuestra prueba de equilibrio de carga se ha completado y se ha implementado el método de sondeo predeterminado de Rinbbon.

3. Aplicación básica de descubrimiento de servicios de Nacos

3.1 Modelo de datos de descubrimiento de servicios de Nacos

Espacio de nombres (NameSpace)

Se utiliza para aislar la configuración de granularidad de inquilinos. El espacio de nombres no solo es adecuado para la gestión de la configuración de Nacos, sino también para el descubrimiento de servicios. Uno de los escenarios comunes de NameSpace es la separación y el aislamiento de la configuración de diferentes entornos, como el entorno de desarrollo, prueba medio ambiente y entorno de producción.

Servicio

Se accede a las funciones de software proporcionadas al cliente a través de una interfaz predefinida.

Nombre del Servicio

El identificador proporcionado por el servicio se puede utilizar para determinar el servicio que se reemplazará por el nombre del servicio.

Ejemplo

Un proceso que proporciona uno o más servicios con una dirección de red accesible e inicia un servicio para generar una instancia de servicio.

Meta informacion

Información de descripción de datos de Nacos (como configuración y servicio), como versión del servicio, peso, estrategia de tolerancia a desastres, estrategia de equilibrio de carga, configuración de autenticación, varias etiquetas personalizadas, desde la perspectiva del alcance, se divide en metainformación de nivel de servicio e información de clúster Metainformación y metainformación de instancia.
La metainformación puede hacer que nacos sea más escalable y los usuarios pueden personalizar los datos para describir instancias, servicios, clústeres, etc.

Grupo

Una colección de instancias de servicio. Las instancias de servicio forman un clúster predeterminado. El clúster se puede dividir aún más. La unidad de división puede ser un clúster virtual. Solo las instancias del mismo clúster pueden percibirse entre sí.

3.2 Gestión de servicios

Nacos proporciona una interfaz básica de operación y mantenimiento que puede ver y editar los servicios registrados. Los desarrolladores o el personal de operación y mantenimiento pueden ver el registro del servicio a través de esta interfaz, incluidos todos los servicios registrados en el sistema actual y los detalles de cada servicio.

3.2.1 Peso de la instancia

Seleccione Servicio -> Detalles en la lista de servicios. Después de ingresar a la interfaz, puede ajustar el peso del servicio para distribuir la capacidad de la carga. Cuanto mayor sea el valor,
mayor será la probabilidad de distribución .

3.2.2 En línea y fuera de línea

El servicio en línea / fuera de línea se puede cambiar y el equilibrador de carga no se asignará al servicio después de que el servicio esté fuera de línea.

Supongo que te gusta

Origin blog.csdn.net/CSDN_ChenF/article/details/115300085
Recomendado
Clasificación