Hemos completado los dos componentes básicos del centro de registro y el proveedor de servicios. Este artículo presenta el servicio de llamadas que usa la cinta de nube de Spring para el equilibrio de carga en el lado del cliente.
El equilibrio de carga (LB: equilibrio de carga) es el primer problema que se resuelve. Antes de los microservicios, la solución LB era principalmente una solución de equilibrio de carga centralizada y otra LB independiente entre los consumidores de servicios y los proveedores de servicios. El LB generalmente es hardware dedicado, como F5 o basado en software, como VS, HaProxy, etc. Hay una tabla de mapeo de direcciones para todos los servicios en LB. Cuando el consumidor del servicio llama a un servicio objetivo, primero inicia una solicitud al LB. El LB utiliza una determinada política (como Round-Robin) para equilibrar la carga de la solicitud al servicio de destino.
La aparición de microservicios proporciona otra idea para la implementación de LB: integrar las funciones de LB en el proceso de consumidores de servicios en forma de bibliotecas, en lugar de proporcionar un dispositivo o servidor centralizado. Esta solución se llama equilibrio de carga suave o equilibrio de carga del cliente. En Spring Cloud, junto con la función de registro de servicio de Eureka, el subproyecto de cinta implementa el equilibrio de carga para el cliente REST.
Servir a los consumidores con cinta de nubes de primavera
Cree un nuevo proyecto de consumo de tutorial Spring-Cloud-Sample
Cree un nuevo subproyecto de consumo de tutorial de muestra de nube de primavera en la tutorial de muestra de nube de primavera
Agregar dependencias de cinta y eureka
<dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-ribbon</artifactId> </dependency> <dependency> <MoupRoD> org.springframework.boot </groupid> <artifactid> spring-boot starter-web </artifactid> </dependency> </dependencias>
Configurar Application.
Spring.application.name = Consumerserver.port = 30001eureka.client.service-url.defaultzone = http: // localhost: 10001/eureka/, http: // localhost: 10002/eureka/eureka/,
Escriba UserController, agregue @LoadBalanced Anotation, habilite el equilibrio de carga de cinta
@Controlador @requestmapping ("user") clase pública UserController {@Bean @LoadBalanced RestTemplate initRestTemplate () {return new RestTemplate (); } @AUtoWired private RestTemplate RestTemplate; @RequestMapping ("add") @ResponseBody public String add (String UserName, String Age) {return RestTemplate.getForEntity ("http: // productor/user/add", string.class, username, edad) .getBody (); }}Escriba la aplicación de consumo, agregue @enableeurekaclient, habilite el registro del servicio
@Entableeurekaclient@springbootapplicationPublic clase ConsumerApplication {public static void main (string [] args) {springApplication.run (consultorApplication.class, args); }}Productor de implementación de clúster
Para simular al productor del clúster, la nueva aplicación-Profile1.Properties y la aplicación-Profile2.Properties se crean en el proyecto de productor.
Aplicación-Profile1.Properties
Spring.application.name = ProducerServer.port = 20001eureka.client.service-url.defaultzone = http: // localhost: 10001/eureka/, http: // localhost: 10002/eureka/eureka/,
Aplicación-Profile2.Properties
Spring.application.name = ProducerServer.port = 20002eureka.client.service-url.defaultzone = http: // localhost: 10001/eureka/, http: // localhost: 10002/eureka/, http:
Para probar el efecto de carga, escribimos el puerto del servicio llamado
@Controlador@requestmapping ("user") clase pública UserController {private logger logger = loggerFactory.getLogger (getClass ()); @Autowired private DiscoveryClient Client; @RequestMapping ("add") @ResponseBody public String addUser (String UserName, String Age) {return "éxito de" + Client.getLocalServiceInstance (). Gethost () + ":" + client.getLocalServiceInstance (). GetPort (); }}Comience la prueba
Iniciar el centro de registro
Configure los perfiles activos para perfil1 y perfil2 respectivamente, comience dos veces y complete el inicio del servicio del clúster de registro.
Iniciar un proveedor de servicios
Inicie el proveedor de servicios de la misma manera que anteriormente.
Empiece a servir a los consumidores
El proveedor de servicios se puede hacer de forma independiente, y la aplicación de consumo se puede iniciar normalmente.
verificar
Ingrese http: // localhost: 30001/user/agregar desde el navegador
Visite de nuevo:
Se puede ver que nuestro servicio de llamadas de equilibrio de carga ha sido exitoso, y el valor predeterminado es el equilibrio de carga de acuerdo con la capacitación de rotación.
Resumir
Este artículo presenta y completa la llamada para usar la cinta de nube de Spring para el equilibrio de carga del cliente.
A continuación, continuaremos introduciendo cómo usar Spring Cloud para el monitoreo del servicio.
Descarga del código fuente
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.