Eureka es un producto de código abierto de Netflix que proporciona registro y descubrimiento de servicios, y proporciona una implementación completa del registro de servicios y el descubrimiento de servicios. También es uno de los componentes más importantes y centrales en el sistema SpringCloud.
Introducción de fondo
Centro de servicio
El centro de servicio también se llama Centro de registro, que administra varias funciones de servicio, incluidos el registro de servicios, el descubrimiento, el interruptor de circuito, la carga, la rebaja, etc., como varias funciones de los antecedentes de administrador de Dubbo.
¿Qué cambios sucederán con la relación de llamadas del centro de servicio? Dibuja algunos diagramas simples para ayudarte a comprender
Proyecto A Llamadas Proyecto B
Normalmente llame al Proyecto A para solicitar el Proyecto B
Después de tener un centro de servicio, no se puede eliminar y utilizar ningún servicio directamente, y debe llamarse a través del centro de servicio.
Proyecto A Llamadas Proyecto B, Project B está llamando al Proyecto C
En este momento, los pasos para llamar serán dos pasos: el primer paso es que el proyecto del Proyecto Solicite un servidor del Proyecto B del Centro de Servicio, y luego el Proyecto B solicita el Servicio del Proyecto C del Centro de Servicio.
Los proyectos anteriores son solo llamadas simples entre dos o tres, pero si hay más de 20 proyectos y 30 proyectos, los proyectos distribuidos de nuestra compañía han alcanzado más de 20 para fines de 2015. Dibuje una imagen para describir la relación entre docenas de proyectos y todos son líneas. Cualquier cambio en uno de los proyectos implicará que se reinicie varios proyectos, lo cual es muy problemático y propenso a los errores. Para obtener servicios a través del centro de servicio, no necesita prestar atención a la dirección IP del proyecto que llama. Consiste en varios servidores. Cada vez que vaya al centro de servicio para obtener los servicios disponibles para llamar.
Dado que todo tipo de servicios se han registrado en el centro de servicio, hay muchas funciones avanzadas que hacer. Por ejemplo, varios servicios proporcionan el mismo servicio para equilibrar la carga; Monitoree la tasa de éxito de la llamada del servidor para realizar la ruptura del circuito, elimine los puntos de falla en la lista de servicios; Monitoree el tiempo de llamada de servicio para establecer diferentes pesos para diferentes servidores, etc.
Antes de hablar de Eureka, chismearé sobre Netflix
Netflix
La siguiente introducción proviene de la enciclopedia de Baidu:
Netflix es una empresa estadounidense que proporciona medios de transmisión en línea en el sitio en los Estados Unidos y Canadá, y los servicios de alquiler en línea de DVD y discos Blu-ray personalizados. Fundada en 1997, la compañía tiene su sede en Los Gaitu, California, y ha comenzado los servicios de suscripción en 1999. En 2009, la compañía podría proporcionar hasta 100,000 películas de DVD y tenía 10 millones de suscriptores. El 25 de febrero de 2007, Netflix anunció que había vendido su mil millones de dvd. A su informe dijo que en 2011, las ventas de películas en línea de Netflix representaron el 45% del total de ventas de películas en línea de usuarios estadounidenses.
La primera vez que vi esta palabra, fue al comienzo de varios dramas o películas estadounidenses. Los dramas estadounidenses representativos filmados por Netflix incluyen "House of Cards", "Drug Lores" y "Stranger Things". Más tarde, cuando estudiaba SpringCloud, descubrí a las compañías de Netflix y me pregunté si eran la misma compañía. Después de verificar el sufijo de correo electrónico en GitHub, determiné que de hecho era la misma compañía. De hecho, los microservicios de SpringCloud se basan en los productos de código abierto de Netflix.
Los componentes del marco de código abierto de Netflix se han demostrado en el entorno de microservicio distribuido a gran escala de Netflix durante años y son aceptados gradualmente por la comunidad como componentes estándar para construir marcos de microservicio. Los productos de código abierto de Spring Cloud se basan principalmente en un empaque adicional de los componentes de código abierto de Netflix, lo que facilita a los desarrolladores de Spring a construir un marco de microservicio básico. Para algunas compañías que tienen la intención de construir un sistema de marco de microservicio, hacer un uso completo o referirse a los componentes de microservicio de código abierto de Netflix (o Spring Cloud) y realizar la personalización empresarial necesaria sobre esta base es indudablemente un atajo a la arquitectura de microservicio.
Eureka
Según la introducción oficial:
Eureka es un servicio basado en REST (transferencia de estado de representación) que se utiliza principalmente en la nube de AWS para localizar servicios con el fin de equilibrar la carga y la conmutación por error de los servidores de nivel medio.
Eureka es un servicio basado en REST, utilizado principalmente en la nube de AWS, y localiza los servicios para equilibrar la carga y la conmutación por error de los servidores de nivel intermedio.
Spring Cloud encapsula el módulo Eureka desarrollado por Netflix para habilitar el registro y el descubrimiento del servicio. Eureka adopta la arquitectura de diseño CS. Eureka Server es el servidor con función de registro de servicio, es el centro de registro de servicio. Otros microservicios en el sistema usan el cliente de Eureka para conectarse al servidor Eureka y mantener una conexión del corazón. De esta manera, el personal de mantenimiento del sistema puede monitorear si cada microservicio en el sistema se ejecuta normalmente a través del servidor Eureka. Algunos otros módulos de Spring Cloud (como Zuul) pueden usar el servidor Eureka para descubrir otros microservicios en el sistema y ejecutar la lógica relevante.
Eureka consta de dos componentes: el servidor Eureka y el cliente Eureka. El servidor Eureka se utiliza como servidor de registro de servicio. El cliente Eureka es un cliente Java utilizado para simplificar la interacción con el servidor, actuar como un equilibrador de carga de votación y proporcionar soporte de conmutación por error de servicio. Netflix utiliza otro cliente en su entorno de producción, que proporciona un equilibrio de carga ponderado en función del tráfico, la utilización de recursos y el estado de error.
Use una imagen para comprender lo siguiente:
La figura anterior describe brevemente la arquitectura básica de Eureka, que consta de 3 roles:
1. Servidor Eureka
2. Proveedor de servicios
3. Consumidor de servicio
Práctica de casos
Servidor Eureka
Spring Cloud me ha ayudado a implementar el centro de registro de servicios, y solo necesitamos algunos pasos simples para completarlo.
1. Agregar dependencias en POM
<pendencies> <Spendency> <MoupRiD> org.springframework.cloud </groupId> <artifactID> spring-cloud-starter </artifactid> </pendency> <papel> <MoupRupid> org.springframework.cloud </groupId> <artifactid> Spring-Cloud-starter-eureka-server </artifactid> <///dependence </dependency <shiFactid> <MoupRid> org.springframework.boot </groupid> <artifactID> spring-boot-starter-test </artifactid> <cope> test </cope> </pendency> </dependencias>
2. Agregue la anotación @EnableEurekaServer al código de inicio
@SpringBootApplication@EnseDeaureKaserverPublic Class SpringCloudeureKaApplication {public static void main (string [] args) {springapplication.run (springcloudeurekaapplication.class, args); }}3. Archivo de configuración
De manera predeterminada, el registro de servicio también intentará registrarse como cliente, por lo que debemos deshabilitar su comportamiento de registro del cliente y agregar la siguiente configuración en application.properties :
Spring.Application.Name = Spring-Cloud-eurekaserver.port = 8000eureka.client.register-with-eureka = falseeureka.client.fetch-registry = falseeureka.client.serviceurl.defaultzone = http: // localhost: $ {servidor.port}/eureka/eureka/eureka.client.register-with-eureka : indica si se registra en el servidor Eureka, el valor predeterminado es verdadero.eureka.client.fetch-registry : indica si se debe obtener información de registro del servidor Eureka, el valor predeterminado es verdadero.eureka.client.serviceUrl.defaultZone : Establece la dirección para interactuar con el servidor Eureka. Tanto los servicios de consulta como los servicios de registro deben confiar en esta dirección. El valor predeterminado es http: // localhost: 8761/eureka; Se pueden usar y separarse múltiples direcciones.Después de comenzar el proyecto, visite: http: // localhost: 8000/y puede ver la página a continuación, donde no se han encontrado servicios
Grupo
Un servicio tan crítico como un centro de registro, si es un solo punto, será devastador encontrar una falla. En un sistema distribuido, el centro de registro de servicios es la parte básica más importante y debe estar en un estado donde los servicios se puedan proporcionar en cualquier momento. Para mantener su disponibilidad, usar clústeres es una buena solución. Eureka implementa la implementación altamente disponible registrándose mutuamente, por lo que solo necesitamos configurar el servidor Eureke para configurar otros servicios disponibles para lograr una implementación altamente disponible.
Centro de registro de nodo dual
Por primera vez, intentamos construir un centro de registro de dos nodos.
1. Cree la aplicación-peer1.Properties como la configuración del Centro de servicio Peer1 y el servicio de puntos a Peer2
Spring.Application.name = Spring-Cloud-eurekaserver.port = 8000eureka.instance.hostName = peer1eureka.client.serviceurl.defaultzone = http: // peer2: 8001/eureka/
2. Cree la aplicación-peer2.Properties como la configuración del Centro de servicio Peer2 y el servicio de puntos a Peer1
Spring.application.name = Spring-Cloud-eurekaserver.port = 8001eureka.instance.hostname = peer2eureka.client.serviceurl.defaultzone = http: // peer1: 8000/eureka/eureka/
3. Conversión del host
Agregue la siguiente configuración al archivo hosts
127.0.0.1 Peer1 127.0.0.1 Peer2
4. Comenzar el paquete
Ejecutar los siguientes comandos a su vez
#Package MVN Clean Paquete# Start Eurekajava con Peer1 y Peeer2 Información de configuración respectivamente -jar Spring-Cloud-eureka-0.0.1-snapshot.jar --spring.profiles.active = peer1java -Jar spring-eeureka-0.0.1-snapshot.jar --profiles
Después de comenzar uno por uno, el navegador entra: http://localhost:8000/ La representación es la siguiente:
Según la figura, se puede ver que las réplicas DS del Centro de Registro de Peer1 tienen la información de configuración relevante de Peer2 y aparecen en las replicas disponibles. Dejamos manualmente Peer2 para observar, y descubrimos que Peer2 se moverá a la columna de replicas no disponibles, lo que indica que Peer2 no está disponible.
Se ha completado la configuración de este nodo dual.
Uso del clúster de Eureka
En la producción, es posible que necesitemos tres o más centros de registro para garantizar la estabilidad del servicio. Los principios de configuración son en realidad los mismos, y señalamos el centro de registro a otros centros de registro respectivamente. Aquí solo presentaremos la configuración de los tres grupos. De hecho, es similar al Centro de registro de dos nodos. Cada centro de registro puede apuntar a los otros dos nodos respectivamente, y usar Application.yml para configurarlo.
Los detalles de configuración de Application.yml son los siguientes:
--Spring: Aplicación: Nombre: Spring-Cloud-eureka Perfiles: peer1server: puerto: 8000eureka: instancia: hostname: peer1 cliente: serviceUrl: defaultzone: http: // peer2: 8001/eureka/, http: // peer3: 8002/eureka/--- Spring: Spring: Spring-Cloud-eureka port: 8001eureka: instance: hostname: peer2 client: serviceUrl: defaultZone: http://peer1:8000/eureka/,http://peer3:8002/eureka/---spring: application: name: spring-cloud-eureka profiles: peer3server: port: 8002eureka: instance: hostname: peer3 client: serviceUrl: Defaultzone: http: // peer1: 8000/eureka/, http: // peer2: 8001/eureka/
Inicie el Centro de registro de Eureka con los parámetros de configuración de PEER1, PEER2 y PEER3 respectivamente.
java -jar Spring-Cloud-eureka-0.0.1-snapshot.jar --spring.profiles.active = peer1java -jar spring-cloud-eureka-0.0.1-snapshot.jar --spring.profiles.active = peer2Java -JAR de primavera-ncroud-eureka-0.0.1-spring.profiles.active = peer2Java -Jar primavera-ncroud-eureka-0.0.1-snapshot.JoT.JoTive = peer2Java -JAR Spring-Cloud-eureka-0.0.1-Snapshot.JOT.JOTIT = PEER2Java -JAR Spring-Cloud-eureka-0.0.1-Snapshot.JOT.JOT.JOJAT.JOJAT.JAR.JAR.JAR.JAR.JAR --spring.profiles.active = peer3
Después de comenzar uno por uno, el navegador entra: http://localhost:8000/ La representación es la siguiente:
Puede ver la información relevante sobre Peer2 y Peer3 en Peer1. Hasta ahora, el clúster Eureka se ha completado
Código de muestra
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.