Esta vez, compartimos contenido sobre el registro y el descubrimiento de servicios de SpringCloud, que se explicarán por los centros de servicio de construcción, el registro de servicios y el descubrimiento de servicios, respectivamente. Ahora muchas startups en Beijing han comenzado a confiar en SpringCloud. Puede deberse a los ricos documentos y componentes. Después de todo, es una arquitectura de microservicio relativamente completa en la actualidad. Espero que este intercambio pueda brindar buena ayuda a todos;
Centro de servicio Eureka
Hasta donde yo sé y utilizo muchos centros de registro, incluyen Zookeeper y Eureka. Mi artículo anterior compartió Dubbo+Zookeeper para crear servicios, por lo que esta vez uso Eureka. El marco de SpringCloud también lo recomienda como centro de registro. Por supuesto, puede integrarse con otros centros de registro de servicios. Después de todo, SpringCloud se basa en Springboot para construir proyectos, por lo que es muy rápido integrar otros componentes. Primero, cree el Proyecto del Centro de Registro Eureka_Server e introduzca las dependencias a través de lo siguiente:
<Spendency> <MoupRupid> org.springframework.cloud </groupid> <artifactid> spring-ncloud-starter-eureka-server </artifactid> </pendency>
Luego agregue elementos de configuración al archivo Application.yml:
Servidor: Port: 2001spring: Aplicación: Nombre: Eureka-ServeureAka: Cliente: Registro-With-eureka: False #Forbid Usted usted mismo para registrarse como un servicio de servicio Fetch-Registry: False #Mask Información de registro Instance: Prefect-IP-Address: True Instance-ID: $ {Spring.applation.name}: $ {Server.ort}Después de completar la configuración, debe iniciar la clase y agregar anotación @enableeurekaserver. La configuración está básicamente completada y ejecutada. Visite http: // localhost: 2001/ para obtener la siguiente interfaz:
Servicio de registro de proveedores
Con el centro de registro de servicios, también necesitamos proporcionar algunos servicios y registrar estos servicios en el centro de servicio. Para facilitar esto, primero creamos un proyecto de módulo de interfaz Eureka_api que utiliza los proveedores de servicios y los consumidores, y creamos la siguiente interfaz y solicita la clase de entidad de parámetros de retorno:
Interfaz pública UserInterface {@PostMapping ("/usuarios") MORP <LIST <Mouser>> getUsers (MORQ RQ); @GetMapping ("/msg") cadena getMsg ();}Entidad mouser:
Public Class Mouser {ID de largo privado; nombre de usuario de cadena privada; Cadena privada userpwd; public Long getId () {return id; } public void setid (ID long) {this.id = id; } public String getUsername () {return UserName; } public void setUsername (String UserName) {this.Username = username; } public String getUserPwd () {return userPwd; } public void setUSerPWD (String UserPwd) {this.userpwd = userPwd; }}Luego cree el módulo Eureka_Provider en nuestro lado del proveedor de servicios y también introduzca dependencias de Eureka, pero hay una pequeña diferencia entre él y el lado del servidor:
<Spendency> <MoupRupid> org.springframework.cloud </groupid> <artifactID> spring-ncloud-starter-eureka </artifactid> </pendency>
Luego cree el servicio de servicio de servicio que el proveedor de servicios proporcionará e implementa la interfaz de Interface de usuario en nuestro módulo Eureka_api. El código es el siguiente:
@RestControllerPublic UserController implementa UserInterface {@AUTOWIREDIRDIRIRED PRIVADO HTTPSERVELTREQUEST Solicitud; @Override public MORP <list <Omuser>> getUsers (Morq rq) {MORP <LIST <Mouser>> rp = new MORP <> (); List <mouser> list = new ArrayList <> (); para (int i = 0; i <5; i ++) {mouser mouser = new Mouser (); mouser.setid (i); mouser.setUsername ("shenniu" + i); list.add (mouser); } rp.sett (lista); rp.setStatus (list.size ()> = 1? 1: 0); rp.setMessage (list.size ()> = 1? "": "Sin datos todavía"); devolver rp; } @Override public String getMsg () {return "Aquí hay un proveedor, puerto:"+ request.getServerPort (); }}Cabe señalar aquí que no hay posmapping o getMapping agregado a las dos interfaces de servicio del controlador, porque esto es declarado por la interfaz implementada; Después de definir los usuarios y los servicios de MSG, también debemos poder inyectarlos en el centro de registro de servicios, por lo que se requiere la siguiente configuración de Application.ML:
Primavera: Aplicación: Nombre: Eureka-Provider #Service Nombre eureka: Client: Service-URL: Defaultzone: http: // localhost: 2001/eureka/#service Center Dirección instancia: prefer-ip-adress: true instance-id: $ {spring.applation.name}: $ {Server.port} Server: Port: 2004También necesitamos agregar la siguiente etiqueta @EnableeureKaclient a la clase de inicio, lo que significa comenzar el cliente Eureka, porque el proveedor de servicios pertenece al cliente en comparación con el centro de servicio; Al ejecutar el proyecto eureka_provider, podemos ver la siguiente información en el centro de registro:
Para garantizar que la interfaz del proveedor de servicios esté bien, podemos hacer clic directamente en Eureka-Provider: 2004 y luego aumentar la ruta a la interfaz que se utilizará. Aquí está: http://192.168.153.148:2004/msg, y podemos obtener la siguiente información devuelta por la interfaz de acceso normal:
Servicio de descubrimiento del consumidor
Con los servicios de interfaz, también necesitamos consumir servicios, por lo que creamos el proyecto del módulo Eureka_consumer, porque el método Pseudo-Client FEGIN se utiliza para acceder a nuestro proveedor de servicios, y también necesitamos introducir las dependencias de Eureka:
<Spendency> <MoupRoMID> org.springframework.cloud </groupid> <artifactid> spring-cloud-starter-eureka </artifactid> </pepertency> <peperse> <MoupRupid> org.springframework.cloud </groupId> <artifactid> Spring-Cloud-Starter-Feign </artifactid> </dependence>
Luego, defina el servicio UserService en la capa de servicio e implementa la interfaz en el módulo de interfaz pública Eureka_api, el código es el siguiente:
@FeignClient (value = "eureka-propider") Public Interface UserService extiende UserInterface {}A través de FeignClient, especifique el nombre de la aplicación del servidor llamado Eureka-Provider. Este nombre corresponde al directorio de aplicaciones registrado en el centro de servicio. Cree una respuesta de respuesta UserController en la capa del controlador y proporcione dos interfaces mostradas, códigos como:
@RestControllerPublic Class UserController {@aUtowired private UserService UserService; @GetMapping ("/users") public MORP <list <mouser>> getUsers (Morq rq) {return userservice.getusers (rq); } @Getmapping ("/msg") public String getMsg () {return userservice.getMsg (); }}Del mismo modo, el lado del consumidor también necesita configurar alguna información en Application.yml:
Primavera: Aplicación: Nombre: Eureka-Consumereureka: Client: Service-URL: Defaultzone: http: // localhost: 2001/eureka/#register Center Dirección instancia: prefer-ip-adicional: true instance-id: $ {spring.application.name}: $ {servidor.port} servidor: port: 2005La configuración es similar a la del proveedor. Finalmente, debe declarar las siguientes anotaciones en la clase de inicio:
@Springbootapplication@habilitionCoveryClient // Consumer Client@enablefeignClients // Feign Client public class eurekaconsumerApplication {public static void main (string [] args) {springapplication.run (eurekaconsumerapplication.class, args); }}Después de comenzar el proyecto eureka_consumer, podemos ver la información que ha registrado en el centro de registro:
Luego, al acceder a la interfaz Eureka_Consumer Consumer, pruebe los datos de la interfaz del proveedor de servicios Eureka_Provider para ver si puede responder normalmente. La dirección de la interfaz es http: // 192.168.153.148:2005/msg:
El resultado del proveedor se obtiene accediendo al consumidor, que es el proceso de prueba básico para el registro y el descubrimiento de servicios; En cuanto a cómo el consumidor solicita la interfaz del proveedor, podemos resolverla a través del siguiente diagrama manual:
Eureka Service Center altamente disponible
A juzgar por el dibujo manual anterior, el centro de servicio juega un papel muy importante. Por lo general, este tipo de centro de servicio no solo construye uno, por lo que es necesario construir un conjunto de centros de servicio altamente disponibles; De hecho, es muy simple que la configuración del proveedor y el consumidor no necesite hacerse. Solo necesitamos configurarlo en la aplicación.yml del proyecto Eureka-Server en el primer nodo e iniciar varios servicios con diferentes puertos (el mismo servidor tiene múltiples puertos, y diferentes puertos del servidor pueden ser los mismos):
Servidor: Port: 2001spring: Aplicación: Nombre: Eureka-ServeureAka: Cliente: Registro-With-eureka: Verdadero # Al configurar una alta disponibilidad, debe abrir y registrarse a usted mismo Fetch-Registry: True Service-URL: Defaultzone: http: // localhost: 2002/eureka/#register en eureka en el put 2002 # Defaultszone: http: // instancia: prefer-ip-address: true instance-id: $ {spring.application.name}: $ {server.port} servidor: desalojo-interval-tímero-in-ms: 2000 #exclude intervalos de servicio fallidosSe deben prestar atención a los siguientes puntos en configuraciones altamente disponibles:
Aquí creé dos direcciones de registro: http: // localhost: 2001/y http: // localhost: 2002/; Dado que las direcciones de registro configuradas por el proveedor y el consumidor son el puerto 2001, para verificar la alta disponibilidad, necesitamos acceder al centro de registro de puertos 2002, los efectos son los siguientes:
Puede ver que el puerto 2002 tiene la misma información de registro que el puerto 2001. Cuando cierro la aplicación del puerto 2001, todavía puedo encontrar la información del proveedor y el consumidor en 2002. Para una configuración más detallada, consulte la descripción oficial del sitio web.
Dirección de Git: https://github.com/shenniubuxing3
Paquete de lanzamiento de Nuget: https://www.nuget.org/profiles/shenniubuxing3
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.