Todos los productos
Search
Centro de documentos

Serverless App Engine:Uso de Alibaba Cloud Toolkit para desplegar automáticamente una aplicación de microservices en SAE

Última actualización: Sep 05, 2026

Este tutorial le guía en la compilación de una aplicación de microservices de Spring Cloud con detección de servicios basada en Nacos y su posterior despliegue en Serverless App Engine (SAE) directamente desde IntelliJ IDEA mediante el plugin de Alibaba Cloud Toolkit, sin necesidad de un pipeline de CI/CD independiente.

Funcionamiento

La aplicación consta de dos servicios que se comunican a través de un servidor Nacos local que actúa como registro de servicios:

  • Proveedor (nacos-service-provider): Expone GET /echo/{string} y se registra en Nacos al iniciarse.

  • Consumidor (nacos-service-consumer): Detecta al proveedor mediante Nacos y lo invoca usando RestTemplate o FeignClient.

IntelliJ IDEA
    └── Alibaba Cloud Toolkit plug-in
            │
            ├── Deploy ──► SAE Application: nacos-service-provider (port 18081)
            │                   └── registers as "service-provider" in Nacos
            │
            └── Deploy ──► SAE Application: nacos-service-consumer (port 18082)
                                └── discovers "service-provider" via Nacos
                                └── exposes /echo-rest/{str} and /echo-feign/{str}

Durante el desarrollo, ambos servicios se ejecutan localmente contra un servidor Nacos on-premises. Tras la validación local, Alibaba Cloud Toolkit compila y despliega estos servicios como aplicaciones de SAE directamente desde IntelliJ IDEA.

Requisitos previos

Antes de empezar, asegúrese de contar con lo siguiente:

El servidor de plugins de JetBrains está alojado fuera de China. Si la descarga es lenta, obtenga el paquete de instalación sin conexión desde el sitio web de JetBrains e instálelo manualmente. Para obtener ayuda, consulte Contact us .

Paso 1: Crear aplicaciones de marcador de posición en SAE

SAE admite el despliegue de aplicaciones desde paquetes JAR e imágenes de contenedor. Este tutorial utiliza paquetes JAR.

Cree una aplicación de proveedor y una aplicación de consumidor en SAE. Para obtener instrucciones paso a paso, consulte Deploy a microservices application by using a JAR package in the SAE console.

Publicará su código local en estas aplicaciones en el Paso 5.

Paso 2: Crear el proveedor

Cree un proyecto de Spring Boot que se registre en Nacos como proveedor de servicios.

  1. Cree un proyecto Maven llamado nacos-service-provider.

  2. Agregue las siguientes dependencias a pom.xml:

    Spring Cloud Edgware ha sido descontinuado. Utilice Greenwich o versiones posteriores para nuevos proyectos.

    Versión de Spring Cloud

    Versión de Spring Cloud Alibaba

    Greenwich

    2.1.1.RELEASE

    Finchley

    2.0.1.RELEASE

    Edgware

    1.5.1.RELEASE

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.4.RELEASE</version>
        <relativePath/>
    </parent>
    
    <dependencies>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>2.1.1.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>
    
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Greenwich.SR1</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

    Este ejemplo usa Spring Cloud Greenwich.SR1 con Spring Cloud Alibaba 2.1.1.RELEASE. Si su proyecto apunta a una versión diferente de Spring Cloud, utilice la versión correspondiente de Spring Cloud Alibaba:

  3. En src/main/java, cree un paquete llamado com.aliware.edas.

  4. En com.aliware.edas, cree la clase de inicio ProviderApplication. La anotación @EnableDiscoveryClient habilita el registro y la detección de servicios:

    package com.aliware.edas;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
    
    @SpringBootApplication
    @EnableDiscoveryClient
    public class ProviderApplication {
        public static void main(String[] args) {
            SpringApplication.run(ProviderApplication.class, args);
        }
    }
  5. En com.aliware.edas, cree EchoController para exponer el endpoint del proveedor:

    package com.aliware.edas;
    
    import org.springframework.web.bind.annotation.PathVariable;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    public class EchoController {
        @RequestMapping(value = "/echo/{string}", method = RequestMethod.GET)
        public String echo(@PathVariable String string) {
            return string;
        }
    }
  6. En src/main/resources, cree application.properties y establezca la dirección del servidor Nacos:

    Si su registro de servicios es un registro autogestionado, reemplace 127.0.0.1 por la dirección del registro de servicios autogestionado.
    spring.application.name=service-provider
    server.port=18081
    spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
  7. Compruebe el registro del proveedor:

    1. Ejecute el método main de ProviderApplication para iniciar el proveedor.

    2. Abra la consola de Nacos en http://127.0.0.1:8848/nacos. El nombre de usuario y la contraseña predeterminados son ambos nacos.

    3. En el panel de navegación izquierdo, vaya a Service Management > Services. Confirme que service-provider aparece en la lista de servicios.

Paso 3: Crear el consumidor

Cree un proyecto de Spring Boot que detecte al proveedor mediante Nacos y lo invoque usando RestTemplate y FeignClient.

  1. Cree un proyecto Maven llamado nacos-service-consumer.

  2. Agregue las siguientes dependencias a pom.xml. El consumidor requiere el mismo padre y gestión de dependencias que el proveedor, además de spring-cloud-starter-openfeign:

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.4.RELEASE</version>
        <relativePath/>
    </parent>
    
    <dependencies>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>2.1.1.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
    </dependencies>
    
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Greenwich.SR1</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
  3. En src/main/java, cree un paquete llamado com.aliware.edas.

  4. En com.aliware.edas, cree la interfaz FeignClient EchoService:

    package com.aliware.edas;
    
    import org.springframework.cloud.openfeign.FeignClient;
    import org.springframework.web.bind.annotation.PathVariable;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    
    // Binds this FeignClient to the "service-provider" service in Nacos
    @FeignClient(name = "service-provider")
    public interface EchoService {
        @RequestMapping(value = "/echo/{str}", method = RequestMethod.GET)
        String echo(@PathVariable("str") String str);
    }
  5. En com.aliware.edas, cree la clase de inicio ConsumerApplication:

    • @EnableDiscoveryClient habilita el registro y la detección de servicios.

    • @EnableFeignClients habilita FeignClient.

    • @LoadBalanced integra RestTemplate con la detección de servicios para que pueda resolver service-provider por nombre.

    package com.aliware.edas;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
    import org.springframework.cloud.client.loadbalancer.LoadBalanced;
    import org.springframework.cloud.openfeign.EnableFeignClients;
    import org.springframework.context.annotation.Bean;
    import org.springframework.web.client.RestTemplate;
    
    @SpringBootApplication
    @EnableDiscoveryClient
    @EnableFeignClients
    public class ConsumerApplication {
    
        @LoadBalanced
        @Bean
        public RestTemplate restTemplate() {
            return new RestTemplate();
        }
    
        public static void main(String[] args) {
            SpringApplication.run(ConsumerApplication.class, args);
        }
    }
  6. En com.aliware.edas, cree TestController para exponer dos endpoints: uno que invoca al proveedor mediante RestTemplate y otro mediante FeignClient:

    package com.aliware.edas;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.PathVariable;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    import org.springframework.web.bind.annotation.RestController;
    import org.springframework.web.client.RestTemplate;
    
    @RestController
    public class TestController {
    
        @Autowired
        private RestTemplate restTemplate;
        @Autowired
        private EchoService echoService;
    
        // Calls service-provider via RestTemplate
        @RequestMapping(value = "/echo-rest/{str}", method = RequestMethod.GET)
        public String rest(@PathVariable String str) {
            return restTemplate.getForObject("http://service-provider/echo/" + str, String.class);
        }
    
        // Calls service-provider via FeignClient
        @RequestMapping(value = "/echo-feign/{str}", method = RequestMethod.GET)
        public String feign(@PathVariable String str) {
            return echoService.echo(str);
        }
    }
  7. En src/main/resources, cree application.properties:

    Si su registro de servicios es un registro autogestionado, reemplace 127.0.0.1:8848 por la dirección del registro de servicios autogestionado.
    spring.application.name=service-consumer
    server.port=18082
    spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
  8. Compruebe el registro del consumidor:

    1. Ejecute el método main de ConsumerApplication para iniciar el consumidor.

    2. Abra la consola de Nacos en http://127.0.0.1:8848/nacos.

    3. En el panel de navegación izquierdo, vaya a Service Management > Services. Confirme que service-consumer aparece en la lista de servicios.

Paso 4: Probar los servicios localmente

Con ambos servicios en ejecución, invoque al consumidor para confirmar que se comunica correctamente con el proveedor.

En Linux, Unix o macOS:

curl http://127.0.0.1:18082/echo-rest/rest-rest
curl http://127.0.0.1:18082/echo-feign/feign-rest

En Windows, abra un navegador y vaya a:

http://127.0.0.1:18082/echo-rest/rest-rest
http://127.0.0.1:18082/echo-feign/feign-rest

Cada solicitud devuelve la cadena que pasó en la ruta de la URL, lo cual confirma que el consumidor detecta e invoca al proveedor a través de Nacos.

Successful call

Paso 5: Desplegar las aplicaciones en SAE

Configure Alibaba Cloud Toolkit en IntelliJ IDEA para compilar y desplegar ambas aplicaciones en las aplicaciones de SAE que creó en Step 1.

Configurar su cuenta de Alibaba Cloud

  1. Haga clic en el icono de Alibaba Cloud Toolkit Alibaba Cloud Toolkit图标 en la barra de herramientas y seleccione Preference… en la lista desplegable.

  2. En el panel de navegación izquierdo de la página Settings, vaya a Alibaba Cloud Toolkit > Accounts.

  3. Introduzca su Access Key ID y su Access Key Secret, luego haga clic en OK.

    Para obtener su Access Key ID y Access Key Secret, haga clic en Get existing AK/SK en la página Accounts . Esto abre la página de inicio de sesión de Alibaba Cloud. Después de iniciar sesión, vaya a la página Security Management para recuperar sus credenciales.

Configurar y ejecutar las tareas de despliegue

  1. Haga clic en el icono de Alibaba Cloud Toolkit Alibaba Cloud Toolkit图标 y seleccione Deploy to SAE en la lista desplegable.

  2. En la página Deploy to SAE, configure los ajustes para la aplicación de proveedor: Haga clic en Apply para guardar.

    • En la sección Application, seleccione la región, el namespace y el nombre de la aplicación que coincidan con la aplicación de proveedor creada en el Paso 1. El campo Name hace referencia al nombre de la configuración de despliegue, no al nombre de la aplicación SAE; por lo general, no es necesario modificarlo.

    Configure a provider in Alibaba Cloud Toolkit

  3. Repita el paso anterior para la aplicación de consumidor, seleccionando la región, el namespace y el nombre de la aplicación correspondientes. Haga clic en Apply para guardar.

    Si utiliza un registro de servicios autogestionado, agregue los siguientes comandos de inicio en la pestaña Advanced antes de guardar: -Dnacos.use.endpoint.parsing.rule=false y -Dnacos.use.cloud.namespace.parsing=false .

    Configure the settings for the consumer application

  4. Haga clic en Run para desplegar el proveedor y repita la operación para desplegar el consumidor.

    Runtime

Verificar el despliegue

  1. Vincule una instancia de Server Load Balancer (SLB) a la aplicación de consumidor para exponerla públicamente. Consulte Bind an SLB instance to an application.

    Bind an SLB instance to the consumer

  2. Envíe solicitudes HTTP al consumidor utilizando la dirección IP pública del SLB (por ejemplo, 47.111.XX.XX):

    # Call via FeignClient
    curl http://47.111.XX.XX/echo-feign/feign-rest
    
    # Call via RestTemplate
    curl http://47.111.XX.XX/echo-rest/rest-rest

    Ambas solicitudes devuelven la cadena de la ruta de la URL, lo que confirma que el consumidor en SAE detecta e invoca al proveedor a través de Nacos.

    Request call

  3. Consulte los datos de llamadas en los paneles de Monitoreo de aplicaciones correspondientes.

Pasos siguientes