¿Qué es la nube de primavera eureka?
Spring Cloud Eureka es un componente en Spring Cloud. Está encapsulado secundario basado en Netflix Eureka, que es principalmente responsable de completar las funciones de gobierno de servicios en el marco de microservicio. Spring Cloud agrega la configuración de automatización del estilo de arranque de Spring a Eureka. Solo necesitamos dependencias y anotaciones de referencia simples para habilitar el arranque de Spring para integrar fácilmente las aplicaciones de microservicios con el sistema de gobierno de servicios Eureka.
Gobernanza de servicios
La gobernanza de servicios es el módulo más básico y básico en el marco de microservicio. Se utiliza principalmente para realizar el registro automático y el descubrimiento de varias instancias de microservicios.
Al principio, no había muchos servicios del sistema de microservicio que pudieran construirse, y podemos completar la llamada del servicio a través de alguna configuración estática. Por ejemplo, hay dos servicios A y B. Cuando el servicio A necesita llamar al servicio B para completar una operación comercial, para lograr una alta disponibilidad del servicio B, ya sea que adoptemos un equilibrio complejo en el servidor o el equilibrio de carga en el cliente, necesitamos mantener manualmente una lista de instancias B. Sin embargo, con el desarrollo del negocio, las funciones del sistema se vuelven cada vez más complejas, y los microservicios correspondientes se están volviendo cada vez más difíciles.
Para resolver este problema, se ha generado una gran cantidad de marcos y productos de gobernanza de servicios. Estos marcos realmente giran en torno a los mecanismos de registro de servicios y descubrimiento de servicios para completar la gestión automatizada de las instancias de aplicación de microservicio.
Registro del servicio
En el Marco de Gobierno de Servicios, generalmente se construye un centro de registro de servicios. Cada unidad de instancia de servicio registra su propio servicio con el centro de registro, y le dice al Centro de Registro una serie de información adicional, como la ubicación del host de instancia, el número de puerto, el número de versión, el protocolo de comunicación, etc., y el centro de registro organiza la lista de servicios de acuerdo con el nombre del servicio.
Descubrimiento de servicios
Desde que operó bajo el Marco de Gobierno del Servicio, la comunicación y las llamadas entre los servicios ya no se implementan especificando direcciones de instancias específicas, sino iniciando llamadas de solicitud al nombre del servicio. Por lo tanto, cuando la persona que llama de servicio llama a la interfaz del proveedor de servicios, no conoce la ubicación específica de la instancia de servicio. Por lo tanto, es necesario iniciar primero una solicitud de consulta al registro y obtener una lista de instancias para lograr el acceso a instancias de servicio específicas.
Servicio del centro de registro de construcción de Eureka
Construir un solo centro eureka
Todos nuestros desarrollos posteriores se basarán en la versión anterior. Cabe señalar que Sring Cloud usa la versión de instantánea, por lo que debe especificar la dirección del repositorio en el archivo POM.
Primero, creamos un nuevo proyecto de arranque de primavera, lo llamamos: Spring-Cloud-eureka, y agregamos las dependencias necesarias al POM. El archivo POM específico es el siguiente:
<? xml versión = "1.0" encoding = "utf-8"?> <Project xmlns = "http://maven.apache.org/pom/4.0.0" xmlns: xsi = "http://www.w3.org/2001/xmlschemainstance" xsi: schemalocation = "http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <ModelVersion> 4.0.0 </modelversion> <grupo> com.sageseurce </groupid> <artifactid> spring-cloud-eureka </artifactid> <versión> 0.0.1-snapshot </versewer> <cackaging> jar </paquete> <name> spring-cloud-eureka </name> <rel> <proupid> org.springframework.boot </groupid> <artifactid> spring-boot-starter-parent </artififactid> <Versión> 2.0.2.Release </versión> <relativePath/> <!-Buscar padre desde repositorio-> </parent> <properties> <ject.build.sourceEncoding> UTF-8 </project.build.sourceEnding> <jection.Reporting.outputenCoding> Utf-8 </project.Reporting. <java.version>1.8</java.version> <spring-cloud.version>Finchley.BUILD-SNAPSHOT</spring-cloud.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependency> </dependency> </dependenceManagement> <S construye> <glugins> <grupo> org.springframework.boot </groupid> <artifactid> spring-boot-maven-plugin </artifactid> </plugin> </glugins> </build> <protisitories> <repository> <d> spring-snapshots </di> <s name> springshots <name> <Ull> https://repo.spring.io/snapshot </srl> <Snapshots> <Edabled> true </habilitado> </snapshots> </epository> <repositorio> <id> spring-milestones </d id> <name> spring milil <Snapshots> <Enedabled> False </Engabled> </snstapshots> </ Repository> </Repositories> </jecter>Inicie un registro de servicio para proporcionar conversaciones a otras aplicaciones a través de la anotación @enableeurekaserver. Este paso es muy simple. Puede activar esta función agregando esta anotación a una aplicación de arranque de primavera normal:
@SpringBootApplication@EnseDeaeureKaserververPublic Class ApplicationeureKaserver {public static void main (string [] args) {springApplication.run (applicationeurekaserver.class, args); }}Según la configuración predeterminada, el servidor del centro de registro también se registrará como un cliente. En general, necesitamos deshabilitar esta función, y el Modified Application.yml es el siguiente:
# Spring ConfigSpring: Aplicación: Nombre: Spring-Boot-eureka # Server ConfigServer: Port: 9871 # Eureka Configureureka: Instance: Nombre de host: localhost Cliente: Registro-With-eureka: Falso # No registre el centro de registro Fetch-Registry: False # No se recupere el servicio Servicio-URL: Definutor: Predeterminado: http: // $ {eureka.instance.hostname}: $ {server.port}/eureka/ Dado que todos estamos ejecutando localmente, para una distinción del servicio posterior, establecemos el puerto del registro de servicio a través de servidor.port para ejecutar el puerto como: 9871
Después de completar la configuración anterior, inicie la aplicación y visite http: // localhost: 9871. Puede ver la siguiente página donde la lista de instancias actualmente registrada con Eureka está vacía, lo que indica que no se ha registrado ningún servicio en el centro de registro.
Creo que todos han notado las dos líneas de palabras rojas llamativas arriba:
¡EMERGENCIA! Eureka puede estar reclamando incorrectamente que las instancias están arriba cuando no lo están. Las renovaciones son menores que el umbral y, por lo tanto, las instancias no están expiradas solo para estar seguros.
Causa: mecanismo de autoprotección. Durante la operación del servidor Eureka, contará si la proporción de falla del corazón es inferior al 85% en 15 minutos. Si ocurre (es fácil de satisfacer durante la depuración independiente, pero de hecho, generalmente es causada por la inestabilidad de la red en el entorno de producción), Eureka Server protegerá la información de registro de instancia actual y solicitará esta advertencia.
Dado que este problema es propenso a ocurrir en situaciones independientes, después de apagar la autoprotección de acuerdo con la configuración en línea, Eureka aún llamará una alarma, lo que solicita que el modo seguro se desactiva y la corrección de la instancia no se puede garantizar. Por lo tanto, ignoramos este problema por el momento y puede resolverse cuando la implementación del clúster es más tarde.
Registre un proveedor de servicios
Después de completar el establecimiento del servicio del centro de registro, podemos intentar agregar una aplicación de arranque de primavera existente al sistema de gobierno de servicios de Eureka.
Todavía tomamos el servidor de primavera de primavera anterior como ejemplo. Solo necesitamos modificar la siguiente configuración de Application.yml:
# Nombre de la aplicación Spring: Aplicación: Nombre: Spring-Cloud-Merver# Eureka Centro de registro Ubicación Eureka: Cliente: Servicio-URL: Defaultzone: http: // localhost: 9871/eureka/
Después de completar la modificación, se puede iniciar el servicio. En este momento, actualizamos la página de administración de Eureka y vemos la información de la lista de instancia actualmente registrada con Eureka de la siguiente manera:
Esto muestra que nuestro servicio se ha registrado con éxito en el centro de registro.
Código de ejemplo relacionado: https://github.com/sageource/springcloud-set
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.