He estado expuesto a microservicios recientemente y comprendí algo de este aspecto. Lo compartiré contigo.
Spring Cloud es un conjunto completo de marcos para implementar microservicios basados en el arranque de Spring. Se puede decir que el arranque de la primavera como marco y nube de resorte como los microservicios juntos forman un nuevo sistema de marco que no se puede ignorar. Proporciona los componentes requeridos para el desarrollo de microservicios, como la gestión de la configuración, el descubrimiento de servicios, los interruptores de circuitos, el enrutamiento inteligente, los microgentes, el bus de control, las cerraduras globales, las campañas de toma de decisiones, las sesiones distribuidas y la gestión del estado de clúster, que son convenientes y fáciles de usar. Spring Cloud incluye una gran cantidad de subtramas, entre los cuales Spring Cloud Netflix es uno de los marcos, que proporciona principalmente módulos: descubrimiento de servicios, interruptores de circuitos y monitoreo, enrutamiento inteligente, equilibrio de carga del cliente, etc.
característica
(1) Eureka, registro y descubrimiento de servicios, proporciona un centro de registro de servicios, un cliente de descubrimiento de servicios y una interfaz conveniente para ver todos los servicios registrados. Todos los servicios utilizan el cliente de descubrimiento de servicios de Eureka para registrarse en el servidor de Eureka.
(2) Zuul, puerta de enlace, todos los clientes solicitan acceder a los servicios de backend a través de esta puerta de enlace. Puede usar ciertas configuraciones de enrutamiento para determinar qué servicio maneja una determinada URL. Y haga que el servicio registrado de Eureka reenvíe la solicitud.
(3) cinta, es decir, equilibrio de carga. Cuando Zuul Gateway envía una solicitud a una aplicación de un determinado servicio, si un servicio inicia múltiples instancias, lo enviará a una determinada instancia de servicio a través de una cinta a través de una determinada política de equilibrio de carga.
(4) Feign, Service Client, si los servicios deben acceder entre sí, puede usar RestTemplate o fingir al cliente para acceder. Utiliza la cinta de forma predeterminada para lograr el equilibrio de carga.
(5) Hystrix, monitoreo y disyuntor. Solo necesitamos agregar una etiqueta Hystrix a la interfaz de servicio para realizar las funciones de monitoreo y disyuntor de esta interfaz.
(6) El panel de monitoreo de Hystrix, proporciona una interfaz que puede monitorear el tiempo consumido por las llamadas de servicio en cada servicio.
(7) Turbina, agregación de monitoreo, utilizando el monitoreo de Hystrix, necesitamos abrir la información de monitoreo de cada instancia de servicio para ver. La turbina puede ayudarnos a agregar la información de monitoreo de todas las instancias de servicio en un solo lugar para la visualización unificada.
Puede consultar el documento en él: https://springcloud.cc/spring cloud-netflix.html
(1) Centro de registro y monitoreo del servicio:
@SpringBootApplication@eneableeurekaserver@enablehystrixdashashboardpublic clase de aplicaciones de aplicaciones {public static void main (string [] args) {new SpringApplicationBuilder (Application.Class) .Web (True) .run (args); }}Aquí, @SpringBootApplication usando la etiqueta de arranque de Spring muestra que la aplicación actual es una aplicación de arranque de Spring. De esta manera, puedo usar directamente la función principal para iniciar la aplicación en el IDE, o puedo comenzar con la línea de comando después del empaque. Por supuesto, también puede iniciar el paquete de guerra envasado con un servidor como Tomcat. Use la etiqueta @EnableeureKaserver para iniciar los componentes del Registro de Servicio Eureka durante el inicio. Escuchará un puerto, que es 8761 por defecto, para recibir el registro del servicio. Y proporcionar una página web. Después de abrirlo, puede ver el servicio registrado. Agregar @enablehystrixdashboard proporcionará una página de monitoreo. Podemos ingresar la dirección del servicio que se monitoreará en él para ver el estado de la llamada de la interfaz con el monitoreo de Hystrix habilitado. Por supuesto, para usar los componentes anteriores, necesitamos agregar las dependencias correspondientes en el archivo Maven POM, como el uso de los primeros parentantes de arranque de primavera, confiando en la caja de primavera-starter-eureka-server y start-nube-starter-hystrix-dashboard.
(2) Llamada entre servicio:
Hay dos formas de hacer llamadas de servicio, RestTemplate y FeignClient. No importa cuál sea el método, llama a la interfaz HTTP del servicio a través de la interfaz REST, y los parámetros y resultados se serializan y se deserializan de forma predeterminada a través de Jackson. Debido a que la interfaz definida por RestCentroller de Spring MVC, los datos devueltos se serializan en datos JSON a través de Jackson.
El primer tipo: RestTemplate, solo necesita definir un frijol de RestTemplate y configurarlo en LoadBalanced:
@ConfigurationPublic Class SomecloudConfiguration {@LoadBalanced @Bean RestTemplate RestTemplate () {return new RestTemplate (); }}De esta manera, podemos inyectar este frijol donde lo necesitamos:
clase pública SomeserviceClass {@aUtowired private RestTemplate RestTemplate; public String getUserById (Long UserId) {UserDto resultados = RESTTemplate.getForObject ("http: // users/getUserDetail/" + userId, userdto.class); resultados de devolución; }}Donde, los usuarios son la ID de servicio, la cinta obtendrá una instancia de este servicio de la lista de instancias del servicio, enviará una solicitud y obtendrá el resultado. El objeto userdto requiere un número de serie, y su número anti-serial se completará automáticamente.
El segundo tipo: FeignClient
@FeignClient (valor = "usuarios", path = "/users") Public Interface UserCOMPOSITISEVECHE {@RequestMapping (value = "/getUserDetail/{id}", método = requestMethod.get, produce = Mediatype.Application_JSON_VALUE) Usardto getuserbyid (@PathVariable Id);};};};}Solo necesitamos definir una excusa usando @FeignClient. Spring Cloud Feign nos ayudará a generar una implementación y obtener datos del servicio de usuarios correspondientes. Entre ellos, el valor en @FeignClient (valor = "usuarios", path = "/users/getUserDetail") es el ID de servicio, y la ruta es el prefijo de ruta de este grupo de interfaces. En la siguiente definición del método, al igual que configurar la interfaz Spring MVC, para este método, su URL correspondiente es/usuarios/getUserDetail/{id}. Luego, al usarlo, al igual que inyectar un servicio general y luego usarlo:
Clase pública SomeTherServiceClass {@aUtowired private CompositeseService UserService; public void dosomething () {// ...... userdto resultados = userservice.getuserById (userId); // otra operación ...}}(3) interruptor de circuito:
// interruptor de circuito: para resolver el problema que llama al método de retroceso para reemplazar el método fallido cuando una llamada de método falla, se ha logrado la función de los errores de tolerancia de fallas/bloqueo en cascada. // FallbackMethod especifica el método de retroceso @hystrixCommand (fallbackMethod = "dostudentfallback") @requestMapping (valor = "dostudent", método = requestmethod.get) public string dostudent () {return "su nombre: secreto, su edad: secreto!";} public string falling () {regreso "su nombre" su nombre: su nombre: su nombre: Feife, 26!Entre ellos, use @enablecircuitbreaker para habilitar el soporte del interruptor de circuito. Spring Cloud proporciona una consola para monitorear el funcionamiento del interruptor de circuito, que está habilitado a través de la anotación @enablehystrixdashboard.
Lo anterior es una breve introducción a los componentes de Spring Cloud Netflix. Espero que sea útil para el aprendizaje de todos, y espero que todos apoyen más a Wulin.com.