Aplicaciones Distribuidas. Spring Cloud Netflix
Enviado por Javier Parco • 24 de Octubre de 2020 • Documentos de Investigación • 1.568 Palabras (7 Páginas) • 81 Visitas
[pic 1][pic 2]
Asignatura: Aplicaciones Distribuidas
| Grupo N.º: 2 |
Carrera: Ingeniería Informática y Ciencias de la Computación | Integrantes: |
Nivel y Paralelo: 7 D | William Ortega |
Fecha Envió: 26/06/2020 | Javier Parco |
Fecha Presentación: 07/07/2020 | Carlos Yépez |
N.º Consulta: 2 Consulta N.º: 2 |
TÍTULO DE LA CONSULTA: Spring Cloud Netflix. |
GENERAL:
ESPECÍFICOS:
|
Spring Cloud Netflix proporciona integraciones OSS (Open Source Software) de Netflix para aplicaciones Spring Boot a través de la autoconfiguración y la vinculación con Spring Environment y otros modelos de programación Spring. Con unas pocas anotaciones simples, puede habilitar y configurar rápidamente los patrones comunes dentro de su aplicación y construir grandes sistemas distribuidos con componentes de Netflix. Los modelos proporcionados incluyen Service Discovery (Eureka), Circuit Breaker (Hystrix), Intelligent Routing (Zuul) y Client Side Load Balancing (Ribbon). |
Es uno de los principios clave de una arquitectura basada en microservicios. Intentar configurar a mano cada cliente o alguna forma de convención puede ser difícil de hacer y puede ser frágil. Eureka es el servidor y cliente de Netflix Service Discovery. El servidor se puede configurar e implementar para que esté altamente disponible, y cada servidor replica el estado de los servicios registrados a los demás.
Para incluir EUREKA CLIENTS en su proyecto, use el iniciador con un ID de grupo de “org.springframework.cloud” y un ID de artefacto de “spring-cloud-starter-netflix-eureka-client”.
Cuando un cliente se registra con EUREKA, proporciona metadatos sobre sí mismo, como el host, el puerto, la URL del indicador de estado, la página de inicio y otros detalles. Eureka recibe mensajes de cada instancia que pertenece a un servicio. Si el mensaje falla durante un horario configurable, la instancia normalmente se elimina del registro.
La autenticación básica HTTP se agrega automáticamente a su EUREKA CLIENT si una de las URL “eureka.client.serviceUrl.defaultZone” tiene credenciales integradas (usuario: contraseña @ localhost: 8761 / eureka).
Para incluir EUREKA SERVER en su proyecto, use el iniciador con un ID de grupo de “org.springframework.cloud” y un ID de artefacto de “spring-cloud-starter-netflix-eureka-server”.
El siguiente ejemplo muestra un servidor Eureka mínimo: @SpringBootApplication @EnableEurekaServer public class Application { public static void main(String[] args) { new SpringApplicationBuilder(Application.class).web(true).run(args); } }
Los módulos JAXB de los que depende el servidor Eureka se eliminaron en JDK 11. Si tiene la intención de utilizar JDK 11 al ejecutar un servidor Eureka, debe incluir estas dependencias en su archivo POM o Gradle.
Netflix ha creado una biblioteca llamada HYSTRIX que implementa el patrón de interruptor de circuito. Una falla de servicio en el nivel inferior de servicios puede causar una falla en cascada hasta el usuario. Cuando las llamadas a un servicio en particular exceden (predeterminado: 20 solicitudes) y el porcentaje de falla es mayor (predeterminado: 50%) en una ventana variable definida (predeterminado: 10 segundos), el circuito se abre y no se realiza la llamada. En casos de error y un circuito abierto, el desarrollador puede proporcionar una reserva.
Para incluir HYSTRIX en su proyecto, use el iniciador con un ID de grupo de “org.springframework.cloud” y un ID de artefacto de “spring-cloud-starter-netflix-hystrix”.
Para habilitar el flujo de métricas de HYSTRIX, incluya una dependencia en “spring-boot-starter-actuator” y configure “management.endpoints.web.exposure.include: hystrix.stream”. Al hacerlo, se expone /actuator/hystrix.stream como punto final de administración.
Uno de los principales beneficios de HYSTRIX es el conjunto de métricas que recopila sobre cada HystrixCommand. El panel de instrumentos de HYSTRIX muestra la salud de cada interruptor automático de manera eficiente.
Para incluir HYSTRIX DASHBOARD en su proyecto, use el iniciador con un ID de grupo de “org.springframework.cloud” y un ID de artefacto de “spring-cloud-starter-netflix-hystrix-dashboard”.
Mirar los datos de HYSTRIX de una instancia individual no es muy útil en términos del estado general del sistema. TURBINE es una aplicación que agrega todos los puntos finales /hystrix.stream relevantes en un /turbine.stream combinado para usar en el panel de HYSTRIX.
En algunos entornos (como en una configuración de PaaS), el modelo clásico de TURBINE de extraer métricas de todos los comandos HYSTRIX distribuidos no funciona. En ese caso, es posible que desee que sus comandos HYSTRIX envíen métricas a TURBINE. Spring Cloud permite eso con la mensajería. Para hacerlo en el cliente, agregue una dependencia a “spring-cloud-netflix-hystrix-stream” y al “spring-cloud-starter-stream- * " de su elección.
ZUUL se puede definir como un proxy inverso o EDGE SERVICE que nos va a permitir tanto enrutar y filtrar nuestras peticiones de manera dinámica, como monitorizar las mismas. Este componente actúa como un punto de entrada a nuestros servicios, es decir, se encarga de solicitar una instancia de un microservicio concreto a EUREKA y de su enrutamiento hacia el servicio que queramos consumir.
Para incluir a ZUUL en el proyecto, use el iniciador con una ID de grupo “org.springframework.cloudy” una ID de artefacto “spring-cloud-starter-netflix-zuul”.
ZUUL será identificado como el punto de entrada al que llegarán todas nuestras peticiones, las cuales serán balanceadas y enrutadas. Nuestras peticiones pasarán de manera individual por cada uno de los filtros que componen nuestra configuración de ZUUL.
La configuración de nuestra herramienta es bastante sencilla. Basta con anotar nuestra aplicación principal de Spring Boot con la anotación “@EnableZuulProxy” y añadir una serie de propiedades a nuestro fichero “properties.yml”: [pic 3]
Tenemos varios parámetros, pero básicamente lo que le estamos diciendo a nuestro edge-service es dónde debe dirigir las peticiones que le lleguen con un determinado path. Es decir, en este caso, todas las peticiones que lleguen precedidas por /serviceA/** serán enrutadas a nuestro microservicio service-a, el cual está alojado en el puerto 7010 de nuestro localhost. Lo mismo ocurrirá con las peticiones que vengan de parte de /serviceB/**
RIBBON es una librería usada para la intercomunicación de procesos, desarrollada por Netflix para su uso interno, y que se integra perfectamente con Apache Feign y Apache Eureka.
Para incluir RIBBON en su proyecto, use el iniciador con una ID de grupo “org.springframework.cloudy”, una ID de artefacto de “spring-cloud-starter-netflix-ribbon”.
Las arquitecturas basadas en microservicios suelen tener implementación multirregional y multizona ya que así conseguimos tener disponibilidad y la resiliencia de los servicios. Por ello Ribbon nos puede ayudar a resolver estos problemas.
Destaca por su capacidad de balanceo de carga encargado por varios algoritmos. Esta parte es totalmente configurable y existen las siguientes posibilidades:
|
|
|
[pic 4]
...