ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Aplicaciones Distribuidas. Spring Cloud Netflix


Enviado por   •  24 de Octubre de 2020  •  Documentos de Investigación  •  1.568 Palabras (7 Páginas)  •  82 Visitas

Página 1 de 7

[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.                                            

   

  1. OBJETIVOS.

GENERAL:

  • Conocer los diferentes servicios que proporciona Spring Cloud Netflix, a través de la documentación que se encuentra en la página oficial de Spring.

ESPECÍFICOS:

  • Comprender el funcionamiento de los servicios de Spring Cloud Netflix.
  • Aprender las diferencias entre los servicios de Spring Cloud Netflix.

  1. INTRODUCCIÓN.

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).

   

  1. DESARROLLO.

  1. SERVICE DISCOVERY (EUREKA).

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.

  • EUREKA CLIENTS:
  • Cómo incluir EUREKA CLIENTS.

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”.

  • Registrarse con EUREKA.

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.

  • Autenticación con EUREKA SERVER.

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).

  • EUREKA SERVER:
  • Cómo incluir EUREKA SERVER.

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”.

  • Como ejecutar 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);

    }

}

  • Soporte JDK 11.

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.

  1. CIRCUIT BREAKER (HYSTRIX).

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.

  • HYSTRIX CLIENTS:
  • Cómo incluir HYSTRIX.

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”. 

  • Flujo de HYSTRIX STREAM.

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.

  • HYSTRIX DASHBOARD:

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.

  • Cómo incluir HYSTRIX DASHBOARD.

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”.

  • TURBINE.

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.

  • TURBINE STREAM.

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.

  1. INTELLIGENT ROUTING (ZUUL).

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.

  • Cómo incluir ZUUL.

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”.

  • ¿Cuál es su funcionamiento?

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.

  • Ventajas de ZUUL.
  • Dispone de varios filtros enfocados a gestionar diferentes situaciones.
  • Transforma nuestro sistema en uno más ágil, capaz de reaccionar de manera más rápida y eficaz.
  • Puede encargarse de gestionar la autenticación de manera general al ser nuestro punto de entrada al ecosistema.

  • 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/**

  1. CLIENT SIDE LOAD BALANCING (RIBBON).

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.

  • Cómo incluir RIBBON.

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”.

  • Ribbon nos da las siguientes capacidades.
  • Balanceo de carga, usando varios algoritmos.
  • Tolerancia a fallos. Ribbon determina dinámicamente qué servicios están corriendo y activos, al igual que cuales están caídos.
  • Soporte de protocolo múltiple (HTTP, TCP, UDP) en un modelo asincrónico y reactivo.
  • Almacenamiento en caché y procesamiento por lotes.
  • Integración con los servicios de autodescubrimiento, como por ejemplo Eureka o Consul.

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.

  • Configuración.

Destaca por su capacidad de balanceo de carga encargado por varios algoritmos. Esta parte es totalmente configurable y existen las siguientes posibilidades:

  • RoundRobinRule: Algoritmo de uso muy extendido, donde los servidores van rotando uno tras otro.
  • AvailabilityFilteringRule: El balanceador de carga puede evitar una zona al elegir el servidor.
  • WeightedResponseTimeRule: Esta regla usa los tiempos medios de respuesta para asignar pesos a los servidores, es como usar un «Weighted Round Robin».
  • DynamicServerListLoadBalancer: Tiene la capacidad de obtener la lista de servidores candidatos utilizando una fuente dinámica.

  1. CONCLUSIONES.
  • Spring Boot tiene complementos muy interesantes como Spring Cloud, el cual nos permite crear aplicaciones “Cloud Native”, es decir, aplicaciones diseñadas desde el inicio para ser ejecutadas en la nube.
  • Spring.io nos ofrece un conjunto de componentes que integrados con las herramientas de Netflix OSS nos permite desarrollar de una manera fácil y rápida aplicaciones que implementen algunos de los patrones más comúnmente usados en sistemas distribuidos.
  • Los componentes de Spring Cloud y Netflix OSS permiten simplificar la gestión y sincronización de servicios web.
  • Si queremos una herramienta que nos ayude a aislar los distintos puntos de entrada a nuestros ecosistemas, nos proporcione un buen sistema de filtrado de peticiones y en general, nos ayude a que nuestros desarrollos sean más robustos y resilientes, ZUUL es nuestra herramienta.
  • RIBBON ofrece una manera sencilla de realizar interconexión entre nuestros microservicios totalmente configurable, además de una buena integración con todo el sistema Spring Cloud.

   

  1. BIBLIOGRAFÍA.

  • Spring Cloud Netflix. (s. f.). Spring. Recuperado 4 de julio de 2020, de https://spring.io/projects/spring-cloud-netflix
  • Spring Cloud Netflix. (s. f.-b). Spring. Recuperado 4 de julio de 2020, de https://cloud.spring.io/spring-cloud-static/spring-cloud-netflix/2.2.0.RELEASE/reference/html/

[pic 4]

...

Descargar como (para miembros actualizados) txt (11 Kb) pdf (204 Kb) docx (98 Kb)
Leer 6 páginas más »
Disponible sólo en Clubensayos.com