El registro y descubrimiento de servicios de las aplicaciones Spring Cloud se implementaba mediante componentes como Eureka, Consul y ZooKeeper. Este tema describe cómo implementar el registro y descubrimiento de servicios mediante Nacos y cómo alojar Nacos en Serverless App Engine (SAE).
Beneficios
El registro y descubrimiento de servicios de las aplicaciones Spring Cloud se implementan mediante componentes como Eureka, Consul, ZooKeeper y Redis. Si aloja sus aplicaciones Spring Cloud en SAE, solo necesita reemplazar el registro de servicios y el centro de configuración originales por Alibaba Nacos Discovery para realizar el registro y descubrimiento de servicios sin modificar el código de negocio.
El registro de servicios de SAE proporciona todas las funciones de Spring Cloud Alibaba Nacos Discovery y elimina la dependencia de múltiples componentes como Eureka, Consul, ZooKeeper y Redis.
Después de alojar sus aplicaciones Spring Cloud en SAE, puede concentrarse en desarrollar la lógica de sus aplicaciones Spring Cloud sin preocuparse por la creación y el mantenimiento del registro y el centro de configuración. Las funciones proporcionadas por SAE, que incluyen escalado automático, inicio y detención rápidos de aplicaciones por lotes y monitoreo de aplicaciones, ayudan a reducir significativamente sus costos de desarrollo y operaciones.
Si tiene una gran cantidad de aplicaciones de microservices, puede utilizar uno de los siguientes tipos de registros de servicios, listados en orden descendente según su nivel de recomendación:
Paso 1: Obtener una demo
eureka-service-provider y eureka-service-consumer son paquetes de aplicaciones demo de microservices de SAE. Eureka está integrado tanto en el consumidor como en el proveedor. El consumidor consume los servicios proporcionados por el proveedor.
Proveedor: eureka-service-provider.zip
Consumidor: eureka-service-consumer.zip
Paso 2: Modificar las configuraciones del registro de servicios del proveedor
Para alojar el proveedor nativo de la nube en SAE, debe modificar la dependencia POM en el proveedor y especificar una dirección IP para Nacos Server.
Debe especificar una dirección IP para Nacos Server en los siguientes escenarios:
Aloja sus aplicaciones en SAE después de que superen las pruebas locales.
El registro de servicios de SAE es un registro Nacos autogestionado.
-
Agregue la siguiente dependencia al archivo pom.xml.
Abra el archivo pom.xml del proveedor. Reemplace
spring-cloud-starter-netflix-eureka-clientporspring-cloud-starter-alibaba-nacos-discoveryy configure la versión de Nacos Server.Antes del reemplazo:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency>Después del reemplazo:
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>2.1.1.RELEASE</version> </dependency>NotaEn este ejemplo se utiliza Spring Cloud Greenwich. La versión de
spring-cloud-starter-alibaba-nacos-discoveryes2.1.1.RELEASE.Si utiliza Spring Cloud Finchley, la versión de
spring-cloud-starter-alibaba-nacos-discoveryes2.0.1.RELEASE.Si utiliza Spring Cloud Edgware, la versión de
spring-cloud-starter-alibaba-nacos-discoveryes1.5.1.RELEASE. El soporte para esta versión ha finalizado. No se recomienda su uso. Para obtener más información, consulte Notas de la versión de Spring Cloud Edgware.
-
Especifique una dirección IP para Nacos Server.
Abra el archivo application.properties en src\main\resources y especifique una dirección IP para Nacos Server.
Antes de la modificación:
spring.application.name=service-provider server.port=18081 eureka.client.serviceUrl.defaultZone=http://127.0.0.1:8761/eureka/Después de la modificación:
spring.application.name=service-provider server.port=18081 spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848127.0.0.1es la dirección IP de Nacos Server. Si Nacos Server está desplegado en otro servidor físico, cambie la dirección IP en consecuencia. Si tiene otros requisitos, agregue las configuraciones necesarias en el archivoapplication.propertiesconsultando Configuration items. -
Consulte el servicio de la aplicación.
Ejecute la función
maindeProviderApplicationen el proyectonacos-service-providerpara iniciar el proveedor.-
Inicie sesión en la consola de Nacos Server instalada en su computadora visitando
127.0.0.1:8848/nacos. En el panel de navegación izquierdo, seleccione .NotaEl nombre de usuario y la contraseña predeterminados para iniciar sesión en la consola de Nacos Server son nacos.
Si service-provider aparece en Service list y puede consultar los detalles de service-provider, entonces service-provider se ha registrado correctamente.
Paso 3: Modificar las configuraciones del registro de servicios del consumidor
Para alojar el consumidor nativo de la nube en SAE, debe modificar la dependencia POM en el consumidor y especificar una dirección IP para Nacos Server.
Debe especificar una dirección IP para Nacos Server en los siguientes escenarios:
Aloja sus aplicaciones en SAE después de que superen las pruebas locales.
El registro de servicios de SAE es un registro Nacos autogestionado.
-
Agregue la siguiente dependencia al archivo pom.xml.
Abra el archivo pom.xml del proveedor. Reemplace
spring-cloud-starter-netflix-eureka-clientporspring-cloud-starter-alibaba-nacos-discoveryy configure la versión de Nacos Server.Antes del reemplazo:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency>Después del reemplazo:
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>2.1.1.RELEASE</version> </dependency>NotaEn este ejemplo se utiliza Spring Cloud Greenwich. La versión de
spring-cloud-starter-alibaba-nacos-discoveryes2.1.1.RELEASE.Si utiliza Spring Cloud Finchley, la versión de
spring-cloud-starter-alibaba-nacos-discoveryes2.0.1.RELEASE.Si utiliza Spring Cloud Edgware, la versión de
spring-cloud-starter-alibaba-nacos-discoveryes1.5.1.RELEASE. El soporte para esta versión ha finalizado. No se recomienda su uso. Para obtener más información, consulte Notas de la versión de Spring Cloud Edgware.
-
Especifique una dirección IP para Nacos Server.
Abra el archivo application.properties en src\main\resources y especifique una dirección IP para Nacos Server.
Antes de la modificación:
spring.application.name=service-consumer server.port=18082 eureka.client.serviceUrl.defaultZone=http://127.0.0.1:8761/eureka/Después de la modificación:
spring.application.name=service-consumer server.port=18082 spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848127.0.0.1es la dirección IP de Nacos Server. Si Nacos Server está desplegado en otro servidor físico, cambie la dirección IP en consecuencia. Si tiene otros requisitos, agregue las configuraciones necesarias en el archivoapplication.propertiesconsultando Configuration items. -
Consulte el servicio de la aplicación.
Ejecute la función
maindeConsumerApplicationen el proyectonacos-service-consumerpara iniciar el consumidor.-
Inicie sesión en la consola de Nacos Server instalada en su computadora visitando
127.0.0.1:8848/nacos. En el panel de navegación izquierdo, seleccione .NotaEl nombre de usuario y la contraseña predeterminados para iniciar sesión en la consola de Nacos Server son nacos.
Si service-consumer aparece en Service list y puede consultar los detalles de service-consumer, entonces service-consumer se ha registrado correctamente.
Paso 4: Ver los resultados del consumo de servicios del proveedor por parte del consumidor
Verifique los resultados del consumo de servicios proporcionados por el proveedor en su computadora. Inicie el servicio y ejecute IP+port/echo-rest/<Custom variable> o IP+port/echo-feign/<Custom variable> para ver los resultados.
Para Linux, UNIX o macOS, ejecute
curl http://127.0.0.1:18082/echo-rest/<Custom variable>ocurl http://127.0.0.1:18082/echo-feign/<Custom variable>.Para Windows, introduzca
http://127.0.0.1:18082/echo-rest/<Custom variable>ohttp://127.0.0.1:18082/echo-feign/<Custom variable>en el navegador.
A continuación se muestra un ejemplo de consumo de servicios exitoso en un sistema operativo Windows.

Paso 5: Desplegar aplicaciones en SAE
Esta sección proporciona un ejemplo para explicar cómo compilar el programa local en un paquete JAR ejecutable. También puede crear una imagen para la aplicación antes del despliegue.
-
En el archivo pom.xml de la aplicación, agregue la siguiente configuración y luego ejecute el comando mvn clean package para compilar el programa local en un paquete JAR ejecutable.
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build> -
Despliegue los paquetes de aplicaciones del proveedor y del consumidor compilados en SAE. Para obtener más información, consulte Deploy Java applications by using a JAR package.
ImportanteSAE no permite crear una aplicación vacía. Debe crear una aplicación en la consola; posteriormente podrá insertar datos en la aplicación.
Si utiliza un paquete JAR para desplegar las aplicaciones, establezca Application Runtime Environment en Standard Java Application Runtime Environment.
Si utiliza un paquete WAR para desplegar las aplicaciones, establezca Application Runtime Environment en apache-tomcat-XXX.
Cuando despliega aplicaciones en SAE, el registro de servicios de SAE establece automáticamente la dirección IP de Nacos Server, el puerto de servicio, el namespace, el AccessKey ID y el AccessKey secret con alta prioridad. Puede conservar o eliminar las configuraciones predeterminadas según sus necesidades.
Paso 6: Verificar el resultado
Vincule una instancia CLB orientada a Internet al consumidor e introduzca el endpoint público que especificó para la instancia CLB en el navegador para ir a la página principal del consumidor. Para obtener más información, consulte Bind a CLB instance to an application and generate a public or private IP address for the application.
En la página principal del consumidor, cree una solicitud para llamar a los servicios del proveedor. Inicie sesión en SAE console. En el panel de navegación izquierdo, seleccione Applications > Applications. En la barra de navegación superior, seleccione una región.
En la página Applications, seleccione un consumidor y vaya a la página Basic Information.
-
En el panel de navegación izquierdo, seleccione para ver los datos generales de llamadas al servicio.
Si los datos sobre la solicitud para llamar a los servicios del proveedor se muestran en la página Overview, los servicios se han llamado correctamente.
Elementos de configuración
|
Elemento de configuración |
Clave |
Valor predeterminado |
Descripción |
|
Dirección IP del servidor |
spring.cloud.nacos.discovery.server-addr |
Ninguna |
La dirección IP y el puerto en los que escucha Nacos Server. |
|
Nombre del servicio |
spring.cloud.nacos.discovery.service |
${spring.application.name} |
El nombre del servicio. |
|
Nombre del controlador de interfaz de red (NIC) |
spring.cloud.nacos.discovery.network-interface |
Ninguna |
Si no se especifican direcciones IP, se registra la dirección IP de la NIC. Si este elemento no está configurado, se utiliza de forma predeterminada la dirección IP de la primera NIC. |
|
Dirección IP registrada |
spring.cloud.nacos.discovery.ip |
Ninguna |
La dirección IP registrada tiene mayor prioridad que el nombre de la ENI durante la configuración. |
|
Puerto registrado |
spring.cloud.nacos.discovery.port |
-1 |
No es necesario configurar el puerto registrado. El sistema detecta el puerto automáticamente. |
|
Namespace |
spring.cloud.nacos.discovery.namespace |
Ninguna |
El aislamiento del registro en diferentes entornos. Por ejemplo, el aislamiento de recursos, incluidas configuraciones y servicios, en los entornos de desarrollo, prueba y producción. |
|
Metadatos |
spring.cloud.nacos.discovery.metadata |
Ninguna |
Estos metadatos deben configurarse en formato JSON Map. Puede especificar metadatos relacionados con el servicio según sus requisitos comerciales. |
|
Clúster |
spring.cloud.nacos.discovery.cluster-name |
DEFAULT |
El nombre del clúster de Nacos. |
|
Endpoint |
spring.cloud.nacos.discovery.endpoint |
Ninguna |
El nombre de dominio de un servicio en la región. Puede recuperar dinámicamente la dirección IP del servidor basándose en este nombre de dominio. No es necesario especificar este elemento al desplegar una aplicación en SAE. |
|
Habilitar integración con Ribbon |
ribbon.nacos.enabled |
true |
Deshabilite la integración con Ribbon solo cuando sea necesario. |
Para obtener más información sobre Spring Cloud Alibaba Nacos Discovery, consulte Spring Cloud Alibaba Nacos Discovery.
Pasos siguientes
Puede realizar las siguientes operaciones en la aplicación creada.
La aplicación no puede acceder a Internet ni ser accedida desde Internet. Si desea configurar la red para la aplicación, consulte Application access.
Para obtener más información, consulte O&M management.



