Use SpringCloud para lograr el desarrollo distribuido de Java [parte 2]: Introducción y uso del equilibrio de carga de Ribbon

Introducción a SpringCloud

Spring Cloud es uno de los proyectos de
Spring . Spring Cloud no es un componente sino una colección de muchos componentes.
Integra algunas de las tecnologías más populares para lograr múltiples funciones importantes en el desarrollo distribuido y
coordinar cada uno de los entornos distribuidos. Sistema y configuración de plantilla para varios servicios

Los principales componentes involucrados incluyen:

  • Eureka : Centro de registro
  • Zuul o Spring Cloud Gateway : puerta de enlace de servicios
  • Cinta : equilibrio de carga
  • Fingir : llamada de servicio
  • Hystrix o Resilience4j: Fusible

[En este artículo presentaremos el equilibrio de carga de la cinta]

Equilibrio de carga de cinta

El equilibrio de carga, como su nombre indica, es hacer que la carga del servicio sea más equilibrada ... (tontería)

En el entorno real, tienden a abrir la lista de servicios, una cantidad de clústeres de servidores adquiridos en este momento, habrá más
esta vez al final de la visita, lo que generalmente en este caso es necesario escribir un algoritmo de equilibrio de carga para seleccionar la lista de múltiples instancias. Los componentes de equilibrio de carga
se han integrado en el mejor Eureka : Ribbon se puede utilizar simplemente modificando el código

Ribbon es un equilibrador de carga que ayuda a controlar el comportamiento
de los clientes HTTP y TCP . Después de configurar la lista de proveedores de servicios para Ribbon, Ribbon puede ayudar automáticamente a los consumidores de servicios a realizar solicitudes basadas en un determinado algoritmo de equilibrio de carga.

Ribbon proporciona una gran cantidad de algoritmos de equilibrio de carga de forma predeterminada, como algoritmo de sondeo, algoritmo aleatorio, etc. El
algoritmo de sondeo es para round-robin. Por ejemplo, hay dos proveedores de servicios AB, luego, la primera vez que visita el proveedor de servicios A, la segunda vez debe visitar el servicio B. El proveedor visita al proveedor de servicios A por tercera vez y así sucesivamente. El
algoritmo aleatorio es aleatorio, como sugiere el nombre.
Por supuesto, también puede implementar un algoritmo de equilibrio de carga personalizado para Ribbon.

Ribbon usa un algoritmo de sondeo por defecto

Al importar el paquete de dependencias del cliente Eureka, los paquetes relacionados con Ribbon también se importan automáticamente:
Inserte la descripción de la imagen aquí

1. El proceso de equilibrio de carga:

Al ejecutar RestTemplate para enviar la solicitud de dirección, el balanceador de carga de Ribbon se usará para interceptar y luego obtener la lista de direcciones de servicio de acuerdo con el nombre del servicio,
y luego usar el algoritmo de balance de carga de Ribbon para seleccionar una dirección de servicio de la lista de direcciones de servicio y finalmente acceder a la dirección de servicio para obtener datos

2. Siga los pasos:

Agregue una @LoadBalancedanotación al método de creación de instancias RestTemplate en la clase de inicio del consumidor de servicios para habilitar la función de equilibrio de carga del cliente:

// 注册RestTemplate
@Bean
@LoadBalanced
public RestTemplate restTemplate()
{
    
    
    return new RestTemplate();
}

Los pasos son muy simples. Simplemente
use el nombre del servicio en la clase de interfaz del consumidor del servicio para balancear la carga:

@RestController
@RequestMapping("/consumer")
public class ConsumerController {
    
    

    @Autowired
    private RestTemplate restTemplate;

    @GetMapping("/{id}")
    public User queryById(@PathVariable Long id)
    {
    
    
        // Ribbon负载均衡
        String url="http://user-service/user/"+id;

        return restTemplate.getForObject(url,User.class);
    }
}

Supongo que te gusta

Origin blog.csdn.net/Piconjo/article/details/108712639
Recomendado
Clasificación