Todos os produtos
Search
Central de documentação

Enterprise Distributed Application Service:Build service gateways

Última atualização: Jun 26, 2026

Um gateway de serviço encaminha requisições de clientes para microsserviços de backend com base em regras configuráveis, como caminho da URL, cabeçalhos ou parâmetros de consulta. Este tópico explica como construir um gateway usando o Nacos como registro de serviços, com Spring Cloud Gateway ou Spring Cloud Netflix Zuul.

Para pular a configuração passo a passo, baixe os projetos de demonstração completos:

Como o Spring Cloud Gateway encaminha requisições

O Spring Cloud Gateway processa requisições por meio de três construções principais:

Construção

Descrição

Rota

Bloco básico de construção. Cada rota mapeia uma requisição de entrada para um serviço de backend, definida por um ID, uma URI de destino, um ou mais predicados e filtros opcionais.

Predicado

Condição de correspondência avaliada na requisição recebida (caminho, cabeçalho, parâmetro de consulta etc.). A rota corresponde quando todos os predicados retornam verdadeiro.

Filtro

Etapa de processamento que modifica a requisição ou a resposta antes ou depois do encaminhamento. Por exemplo, StripPrefix=1 remove o primeiro segmento do caminho antes de enviar a requisição ao serviço downstream.

Fluxo da requisição: Cliente -> Gateway Handler Mapping (corresponde a uma rota avaliando predicados) -> Gateway Web Handler (executa a cadeia de filtros) -> Serviço de Backend. Os filtros executam tanto antes quanto depois da requisição proxy, permitindo modificar cabeçalhos, reescrever caminhos ou adicionar autenticação no nível do gateway.

Pré-requisitos

Antes de começar, verifique se você possui:

  • Maven instalado com variáveis de ambiente configuradas

  • A versão mais recente do Nacos Server baixada

  • Opcional:

    Ao desenvolver aplicações localmente, use o plug-in Alibaba Cloud Toolkit para habilitar chamadas mútuas entre aplicações locais e aplicações implantadas no EDAS, recurso conhecido como interconexão ponta a nuvem. Dessa forma, não é necessário configurar uma VPN, o que aumenta a eficiência do desenvolvimento. Para obter mais informações, consulte Visão geral da interconexão ponta a nuvem.

Inicie o Nacos Server

  1. Descompacte o pacote do Nacos Server baixado.

  2. Acesse o diretório nacos/bin e execute o Nacos Server no modo standalone:

    • Linux, UNIX ou macOS:

      sh startup.sh -m standalone
    • Windows: clique duas vezes em startup.cmd.

Construa um gateway de serviço com Spring Cloud Gateway

O Spring Cloud Gateway foi desenvolvido sobre o Project Reactor e o Spring WebFlux, oferecendo um gateway reativo e não bloqueante.

Etapa 1: Crie o projeto do gateway

  1. Crie um projeto Maven chamado spring-cloud-gateway-nacos.

  2. Adicione as seguintes dependências ao arquivo pom.xml. Este exemplo usa Spring Boot 2.1.4.RELEASE e Spring Cloud Greenwich.SR1:

        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.1.4.RELEASE</version>
            <relativePath/>
        </parent>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-gateway</artifactId>
            </dependency>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
                <version>2.1.1.RELEASE</version>
            </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. Crie a classe de inicialização GatewayApplication:

        @SpringBootApplication
        @EnableDiscoveryClient
        public class GatewayApplication {
            public static void main(String[] args) {
                SpringApplication.run(GatewayApplication.class, args);
            }
        }

Etapa 2: Configure as regras de roteamento

Adicione a seguinte configuração ao arquivo application.yaml. Substitua 127.0.0.1:8848 pelo endereço real do seu Nacos Server caso ele esteja em execução em outra máquina.

server:
  port: 18012

spring:
  application:
    name: spring-cloud-gateway-nacos
  cloud:
    gateway:
      routes:
      - id: service-provider
        uri: lb://service-provider
        predicates:
        - Path=/provider1/**
        filters:
        - StripPrefix=1
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848

Esta configuração de rota funciona da seguinte maneira:

Componente

Valor

Descrição

Predicado

Path=/provider1/**

Corresponde a todas as requisições cujo caminho comece com /provider1/.

URI

lb://service-provider

Encaminha as requisições correspondentes para o serviço service-provider usando balanceamento de carga no lado do cliente.

Filtro

StripPrefix=1

Remove o primeiro segmento do caminho antes do encaminhamento. Por exemplo, /provider1/echo/hello torna-se /echo/hello.

Etapa 3: Inicie o gateway e verifique o registro

  1. Execute a função principal de GatewayApplication para iniciar o gateway.

  2. Abra o console do Nacos Server em http://127.0.0.1:8848/nacos (nome de usuário e senha padrão: nacos).

  3. No painel de navegação à esquerda, escolha Service Management > Services. Confirme se spring-cloud-gateway-nacos aparece na lista de serviços.

Construa um gateway de serviço com Spring Cloud Netflix Zuul

O Zuul é uma opção alternativa de gateway baseada em um modelo de I/O bloqueante, adequada para aplicações que já utilizam a pilha Netflix OSS.

Etapa 1: Crie o projeto do gateway

  1. Crie um projeto Maven chamado spring-cloud-zuul-nacos.

  2. Adicione as seguintes dependências ao arquivo pom.xml. Este exemplo usa Spring Boot 2.1.4.RELEASE, Spring Cloud Greenwich.SR1 e Spring Cloud Alibaba 0.9.0:

        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.1.4.RELEASE</version>
            <relativePath/>
        </parent>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-webflux</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-zuul</artifactId>
            </dependency>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
                <version>2.1.1.RELEASE</version>
            </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. Crie a classe de inicialização ZuulApplication:

        @SpringBootApplication
        @EnableZuulProxy
        @EnableDiscoveryClient
        public class ZuulApplication {
            public static void main(String[] args) {
                SpringApplication.run(ZuulApplication.class, args);
            }
        }

Etapa 2: Configure as regras de roteamento

Adicione a seguinte configuração ao arquivo application.properties. Substitua 127.0.0.1:8848 pelo endereço real do seu Nacos Server caso ele esteja em execução em outra máquina.

spring.application.name=spring-cloud-zuul-nacos
server.port=18022

spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

zuul.routes.opensource-provider1.path=/provider1/**
zuul.routes.opensource-provider1.serviceId=service-provider

Essa configuração encaminha todas as requisições com caminho iniciando em /provider1/ para o serviço de backend service-provider.

Etapa 3: Inicie o gateway e verifique o registro

  1. Execute a função principal de ZuulApplication para iniciar o gateway.

  2. Abra o console do Nacos Server em http://127.0.0.1:8848/nacos (nome de usuário e senha padrão: nacos).

  3. No painel de navegação à esquerda, escolha Service Management > Services. Confirme se spring-cloud-zuul-nacos aparece na lista de serviços.

Crie um provedor de serviços

Tanto o Spring Cloud Gateway quanto o Zuul exigem um serviço downstream para encaminhar as requisições. Para detalhes completos, consulte Implementar registro e descoberta de serviços.

O exemplo a seguir cria um provedor de serviços mínimo com um único endpoint /echo/{string}:

@SpringBootApplication
@EnableDiscoveryClient
public class ProviderApplication {

    public static void main(String[] args) {
        SpringApplication.run(ProviderApplication.class, args);
    }

    @RestController
    public class EchoController {
        @RequestMapping(value = "/echo/{string}", method = RequestMethod.GET)
        public String echo(@PathVariable String string) {
            return string;
        }
    }
}

Verifique o encaminhamento de requisições

Verificação local

Inicie o gateway e o provedor de serviços e envie uma requisição através do gateway.

Para Spring Cloud Gateway (porta 18012):

curl http://127.0.0.1:18012/provider1/echo/hello

Para Zuul (porta 18022):

curl http://127.0.0.1:18022/provider1/echo/hello

Uma resposta bem-sucedida retorna hello, confirmando que o gateway encaminhou a requisição para service-provider e removeu o prefixo /provider1.

EDAS Spring Cloud application development: build a Zuul gateway

Implantação no EDAS

Implante a aplicação no Enterprise Distributed Application Service (EDAS). Para instruções de implantação, consulte Implementar registro e descoberta de serviços.

O registro de serviços do EDAS é uma versão comercial do Nacos. Ao implantar no EDAS, a plataforma configura automaticamente os detalhes de conexão do Nacos — endereço IP, porta do serviço, namespace, AccessKey ID, AccessKey secret e caminho de contexto. Nenhuma configuração adicional é necessária. Mantenha ou remova as configurações originais do Nacos local conforme necessário.

Compatibilidade de versões

Versão do Spring Cloud

Versão do Spring Cloud Alibaba

Greenwich

2.1.1.RELEASE

Finchley

2.0.1.RELEASE

Edgware

1.5.1.RELEASE

Nota

O Spring Cloud Edgware atingiu o fim da vida útil. Não o utilize para novas aplicações.

Próximos passos