La explicación más simple y grosera de la arquitectura del microservicio SpringCloud es el uso de Ribbon

1. Preparación ambiental

Seguimos utilizando el entorno de clúster de Eureka en "Eureka Use of SpringCloud".

1. En primer lugar, aquí tengo el proyecto pom spring-cloud-parent

2. Para el subproyecto Spring-cloud-eureka-server Eureka Server, comenzamos con 90 para este puerto.

Nuestro clúster aquí está compuesto por dos instancias de servicio, el puerto 9090 y el puerto 9091

3.spring-cloud-user-service-consumer user service (es decir, nuestro consumidor de servicios). Aquí usamos el puerto 80 comenzando

4.Spring-cloud-order-service-provider order para proporcionar servicio (proveedor de servicios) Aquí usamos el número de puerto 70

Nuestro proveedor de servicios de pedidos también consta de dos instancias, 7070 y 7071

La explicación más simple y grosera de la arquitectura del microservicio SpringCloud es el uso de Ribbon

 

2. Spring-cloud-eureka-server

Nuestro proyecto principal spring-cloud-parent y el servicio Eureka Server spring-cloud-eureka-server no necesitan moverse y luego iniciar Eureka Server en el puerto 9090 y el puerto 9091 respectivamente.

La explicación más simple y grosera de la arquitectura del microservicio SpringCloud es el uso de Ribbon

 

3. Servicio de pedidos (proveedor de servicios)

3.1 aplicación.yml

Aquí usamos la función de perfil de perfiles de springboot para dividir el servicio del proveedor de pedidos spring-cloud-order-service-provider en diferentes puertos

spring:
  application:
    name: spring-cloud-order-service-provider
---
spring:
  profiles: p1
eureka:
  client:
    service-url:
      defaultZone: http://EurekaServerA:9090/eureka,http://EurekaServerB:9091/eureka
    fetch-registry: true
    register-with-eureka: true
  instance:
    prefer-ip-address: true   # 使用ip注册
    #自定义实例显示格式,添加版本号
    instance-id: ${spring.cloud.client.ip-address}:${spring.application.name}:${server.port}:@project.version@
server:
  port: 7070
---
spring:
  profiles: p2
eureka:
  client:
    service-url:
      defaultZone: http://EurekaServerA:9090/eureka,http://EurekaServerB:9091/eureka
    fetch-registry: true
    register-with-eureka: true
  instance:
    prefer-ip-address: true   # 使用ip注册
    #自定义实例显示格式,添加版本号
    instance-id: ${spring.cloud.client.ip-address}:${spring.application.name}:${server.port}:@project.version@
server:
  port: 7071

Y configura la idea para empezar

La explicación más simple y grosera de la arquitectura del microservicio SpringCloud es el uso de Ribbon

 

La explicación más simple y grosera de la arquitectura del microservicio SpringCloud es el uso de Ribbon

 

3.2 controlador

Modificar el controlador para devolver el puerto del servicio actual, lo que nos ayudará a observar

@RestController
@RequestMapping("/order/data")
public class OrderStatisticServiceController {
    @Value("${server.port}")
    private Integer port;
    /**
     * 根据用户id获取今日完单数
     * @param id 用户ID
     * @return  完单数
     */
    @GetMapping("/getTodayFinishOrderNum/{id}")
    public Integer getTodayFinishOrderNum(@PathVariable("id") Integer id){
        return port;
    }
}

3.3 Inicio

Inicie los servicios del proveedor de servicios de pedido 7070 y 7071 respectivamente, podemos ver que los dos proveedores de servicios están registrados en Eureka Server.

La explicación más simple y grosera de la arquitectura del microservicio SpringCloud es el uso de Ribbon

 

4. Servicio de usuario (llamante de servicio)

Servicio de llamadas de pedidos: spring-cloud-user-service-consumer: 8080

4.1 RestTemplateConfiguration

Necesitamos agregar la anotación @LoadBalanced al método de inyectar RestTemplate en la clase de configuración RestTemplate

@Configuration
public class RestTemplateConfiguration {
    @Bean
    @LoadBalanced
    public RestTemplate getRestTemplate(){
        return  new RestTemplate();
    }
}

Está bien, no es necesario que agreguemos dependencias de Ribbon aquí, porque el paquete Eureka Client nos ayuda a introducir dependencias relacionadas con Ribbon.

La explicación más simple y grosera de la arquitectura del microservicio SpringCloud es el uso de Ribbon

 

4.2 controlador

Aquí solo necesitamos escribir el nombre del servicio al que se llamará en la URL de llamada, y luego Ribbon nos ayudará a encontrar la llamada de servicio adecuada en la lista de servicios.

@RestController
@RequestMapping("/user/data")
public class UserCenterController {
    @Autowired
    private RestTemplate restTemplate;
    @GetMapping("/getTodayStatistic/{id}")
    public Integer getTodayStatistic(@PathVariable("id") Integer id){
        String url  ="http://spring-cloud-order-service-provider/order/data/getTodayFinishOrderNum/"+id;
        return restTemplate.getForObject(url, Integer.class);
    }
}

4.3 Iniciar prueba

La explicación más simple y grosera de la arquitectura del microservicio SpringCloud es el uso de Ribbon

 

Llamamos dos veces y devolvimos 7071 y 7070 respectivamente, lo que indica que nuestra cinta está funcionando.

La explicación más simple y grosera de la arquitectura del microservicio SpringCloud es el uso de Ribbon

 

La explicación más simple y grosera de la arquitectura del microservicio SpringCloud es el uso de Ribbon

 

4.4 Ajustar la estrategia de equilibrio de carga

Nuestra estrategia de equilibrio de carga predeterminada es: ZoneAvoidanceRule: estrategia de compensación de zona. Luego podemos usar otras estrategias de equilibrio de carga a través de la configuración, por ejemplo, usamos estrategias aleatorias:

Colocado en application.yml

Esto es para el servicio spring-cloud-order-service-provider.

spring-cloud-order-service-provider:
  ribbon:
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule

Fuente: blogger de CSDN "$ code out of the future"

Enlace original: https://blog.csdn.net/yuanshangshenghuo/java/article/details/106975354

Supongo que te gusta

Origin blog.csdn.net/yunduo1/article/details/109116659
Recomendado
Clasificación