Registro y descubrimiento del servicio Springcloud-eureka

  • Arquitectura monolítica: simple y conveniente, altamente acoplada, poca escalabilidad, adecuada para proyectos pequeños. Ejemplo: Sistema de Gestión de Estudiantes

  • Arquitectura distribuida: débilmente acoplada y escalable, pero compleja y difícil. Adecuado para proyectos de Internet a gran escala, como JD.com y Taobao

  • Microservicios: una buena solución de arquitectura distribuida

    ①Ventajas: granularidad dividida más pequeña, más servicios independientes y menor acoplamiento

    ②Desventajas: la estructura es muy compleja y aumenta la dificultad de operación y mantenimiento, monitoreo e implementación

  • SpringCloud es una solución integral para la arquitectura de microservicios, que integra varios componentes funcionales de microservicios excelentes

2.2 Ejemplo de división de servicios

Tomando como ejemplo la demostración en la nube del microservicio en los materiales de la clase previa, su estructura es la siguiente:

 

cloud-demo: proyecto principal, administrar dependencias

  • order-service: microservicio de pedidos, responsable del negocio relacionado con los pedidos

  • servicio de usuario: microservicio de usuario, responsable del negocio relacionado con el usuario

Requerir:

  • Tanto el microservicio de pedidos como el microservicio de usuarios deben tener sus propias bases de datos, independientes entre sí.

  • Tanto el servicio de pedidos como el servicio de usuario exponen las interfaces Restful al mundo exterior

  • Si el servicio de pedidos necesita consultar la información del usuario, solo puede llamar a la interfaz Restful del servicio del usuario y no puede consultar la base de datos del usuario.

 Registrar servidor Eureka

En primer lugar, todos registran el servidor del centro: eureka-server, que debe ser un microservicio independiente

1) Crear un servicio de servidor eureka

En el proyecto principal de demostración en la nube, cree un submódulo:

Complete la información del módulo:

 Luego complete la información del servicio:

2) Introducir la dependencia de eureka

Presente la dependencia inicial proporcionada por SpringCloud para eureka:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>

3) Escribe la clase de inicio

 Para escribir una clase de inicio para el servicio del servidor eureka, asegúrese de agregar una anotación @EnableEurekaServer para habilitar la función del centro de registro de eureka:

package cn.itcast.eureka;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@SpringBootApplication
@EnableEurekaServer
public class EurekaApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaApplication.class, args);
    }
}

4) Escribir archivos de configuración

Escriba un archivo application.yml con el siguiente contenido:

server:
  port: 10086
spring:
  application:
    name: eureka-server
eureka:
  client:
    service-url: 
      defaultZone: http://127.0.0.1:10086/eureka

5) Iniciar el servicio

Inicie el microservicio y luego visítelo en el navegador: http://127.0.0.1:10086

Ver el siguiente resultado debe ser exitoso:

 Ver la lista de servicios en eureka 

 

 

registro de servicio

A continuación, registramos el servicio de usuario en eureka-server

1) Introducir dependencias

En el archivo pom del servicio de usuario, introduzca las siguientes dependencias del cliente eureka: 

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

2) archivo de configuración

En el servicio de usuario, modifique el archivo application.yml y agregue el nombre del servicio y la dirección eureka:

spring:
  application:
    name: userservice
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:10086/eureka

3) Iniciar múltiples instancias de servicio de usuario

Para demostrar un escenario en el que un servicio tiene varias instancias, agregamos una configuración de inicio de SpringBoot e iniciamos un servicio de usuario.

Primero, copie la configuración de inicio del servicio de usuario original:

Luego, en la ventana emergente, complete la información

 1. El método de copiar dos servicios de pedido, haga clic con el botón derecho, seleccione Copiar configuración y luego agregue en el lugar seleccionado de la imagen

-Dserver.port=8082 (8082 se refiere al número de puerto)

 Ahora, aparecerán dos configuraciones de inicio de servicio de usuario en la ventana de SpringBoot:

 

Sin embargo, el primero es el puerto 8081 y el segundo es el puerto 8082.

Inicie dos instancias de servicio de usuario:

 Ver la página de administración del servidor eureka:

1. Un servicio principal de eureka

2. Servicio de dos órdenes

3. Servicio de un usuario

 descubrimiento de servicios

1. Vaya a eureka-server para extraer la lista de instancias de servicios de servicio de usuario e implementar el equilibrio de carga.

Pero no necesitamos hacer estas acciones, solo necesitamos agregar algunas anotaciones.

En OrderApplication de order-service, agregue una anotación @LoadBalanced al Bean RestTemplate:

Vaya a eureka-server para extraer la lista de instancias del servicio de servicio de usuario e implementar el equilibrio de carga.

Pero no necesitamos hacer estas acciones, solo necesitamos agregar algunas anotaciones.

En OrderApplication de order-service, agregue una anotación @LoadBalanced al Bean RestTemplate:  

    /**
     * 创建RestTemplate并注入Spring容器
     */
    @Bean
    @LoadBalanced
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }

 Modifique el método queryOrderById en la clase OrderService en el paquete cn.itcast.order.service en el servicio de servicio de pedidos. Modifique la ruta de la URL para acceder y use el nombre del servicio en lugar de la ip y el puerto:

   @Autowired
    private RestTemplate restTemplate;

 public Order queryOrderById(Long orderId) {
        // 1.查询订单
        Order order = orderMapper.findById(orderId);
        // 2.利用RestTemplate发起http请求,查询用户
        // 2.1.url路径
        String url = "http://userservice/user/" + order.getUserId();
        // 2.2.发送http请求,实现远程调用
        User user = restTemplate.getForObject(url, User.class);
        // 3.封装user到Order
        order.setUser(user);
        // 4.返回
        return order;
    }

Resumir

 

 

Supongo que te gusta

Origin blog.csdn.net/zxc472504515/article/details/125715740
Recomendado
Clasificación