Tous les produits
Search
Centre de documentation

Enterprise Distributed Application Service:Build service gateways

Dernière mise à jour :Aug 10, 2026

Une passerelle de services aiguille les requêtes entrantes des clients vers les microservices back-end selon des règles configurables (chemin URL, en-têtes ou paramètres de requête). Cette rubrique explique comment créer une passerelle avec Nacos comme registre de services, en utilisant Spring Cloud Gateway ou Spring Cloud Netflix Zuul.

Pour ignorer la configuration détaillée, téléchargez les projets de démonstration complets :

Fonctionnement du routage des requêtes avec Spring Cloud Gateway

Spring Cloud Gateway traite les requêtes à l'aide de trois concepts fondamentaux :

Concept Description
Route Élément de base. Chaque route associe une requête entrante à un service back-end. Elle se définit par un ID, un URI de destination, un ou plusieurs prédicats et des filtres optionnels.
Predicate Condition de correspondance évaluée sur la requête entrante (chemin, en-tête, paramètre de requête, etc.). Une route correspond lorsque tous ses prédicats renvoient la valeur true.
Filter Étape de traitement qui modifie la requête ou la réponse avant ou après le transfert. Par exemple, StripPrefix=1 supprime le premier segment du chemin avant d'envoyer la requête en aval.

Flux de requête : Client -> Mappage du gestionnaire de passerelle (correspondance de route par évaluation des prédicats) -> Gestionnaire Web de passerelle (exécution de la chaîne de filtres) -> Service back-end. Les filtres s'exécutent avant et après la requête proxy, ce qui permet de modifier les en-têtes, de réécrire les chemins ou d'ajouter une authentification au niveau de la passerelle.

Prérequis

Avant de commencer, assurez-vous de disposer des éléments suivants :

  • Maven installé avec les variables d'environnement configurées

  • La dernière version de Nacos Server téléchargée

  • Facultatif :

    Lors du développement local d'applications, vous pouvez utiliser le plug-in Alibaba Cloud Toolkit pour activer les appels mutuels entre les applications locales et celles déployées dans EDAS (interconnexion end-to-cloud). Cela évite la configuration d'un VPN et améliore l'efficacité du développement. Pour plus d'informations, consultez la section Présentation de l'interconnexion end-to-cloud.

Démarrage de Nacos Server

  1. Décompressez le package Nacos Server téléchargé.

  2. Accédez au répertoire nacos/bin et démarrez Nacos Server en mode autonome :

    • Linux, UNIX ou macOS :

      sh startup.sh -m standalone
    • Windows : double-cliquez sur startup.cmd.

Création d'une passerelle de services avec Spring Cloud Gateway

Spring Cloud Gateway repose sur Project Reactor et Spring WebFlux, offrant ainsi une passerelle réactive et non bloquante.

Étape 1 : Création du projet de passerelle

  1. Créez un projet Maven nommé spring-cloud-gateway-nacos.

  2. Ajoutez les dépendances suivantes au fichier pom.xml. Cet exemple utilise Spring Boot 2.1.4.RELEASE et 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. Créez la classe de démarrage GatewayApplication :

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

Étape 2 : Configuration des règles de routage

Ajoutez la configuration suivante au fichier application.yaml. Remplacez 127.0.0.1:8848 par l'adresse réelle de votre serveur Nacos s'il s'exécute sur une machine différente.

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

Cette configuration de route fonctionne comme suit :

Composant Valeur Description
Predicate Path=/provider1/** Correspond à toutes les requêtes dont le chemin commence par /provider1/.
URI lb://service-provider Transfère les requêtes correspondantes au service service-provider via l'équilibrage de charge côté client.
Filter StripPrefix=1 Supprime le premier segment du chemin avant le transfert. Par exemple, /provider1/echo/hello devient /echo/hello.

Étape 3 : Démarrage de la passerelle et vérification de l'enregistrement

  1. Exécutez la méthode principale de GatewayApplication pour démarrer la passerelle.

  2. Ouvrez la console Nacos Server à l'adresse http://127.0.0.1:8848/nacos (nom d'utilisateur et mot de passe par défaut : nacos).

  3. Dans le volet de navigation, choisissez Service Management > Services. Confirmez que spring-cloud-gateway-nacos apparaît dans la liste des services.

Création d'une passerelle de services avec Spring Cloud Netflix Zuul

Zuul est une autre option de passerelle basée sur un modèle d'E/S bloquant. Il convient aux applications utilisant déjà la pile Netflix OSS.

Étape 1 : Création du projet de passerelle

  1. Créez un projet Maven nommé spring-cloud-zuul-nacos.

  2. Ajoutez les dépendances suivantes au fichier pom.xml. Cet exemple utilise Spring Boot 2.1.4.RELEASE, Spring Cloud Greenwich.SR1 et 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. Créez la classe de démarrage ZuulApplication :

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

Étape 2 : Configuration des règles de routage

Ajoutez la configuration suivante au fichier application.properties. Remplacez 127.0.0.1:8848 par l'adresse réelle de votre serveur Nacos s'il s'exécute sur une machine différente.

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

Cette configuration route toutes les requêtes dont le chemin commence par /provider1/ vers le service back-end service-provider.

Étape 3 : Démarrage de la passerelle et vérification de l'enregistrement

  1. Exécutez la méthode principale de ZuulApplication pour démarrer la passerelle.

  2. Ouvrez la console Nacos Server à l'adresse http://127.0.0.1:8848/nacos (nom d'utilisateur et mot de passe par défaut : nacos).

  3. Dans le volet de navigation, choisissez Service Management > Services. Confirmez que spring-cloud-zuul-nacos apparaît dans la liste des services.

Création d'un fournisseur de services

Spring Cloud Gateway et Zuul nécessitent tous deux un service en aval vers lequel transférer les requêtes. Pour plus de détails, consultez la section Implémentation de l'enregistrement et de la découverte de services.

L'exemple suivant crée un fournisseur de services minimal avec un seul 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;
        }
    }
}

Vérification du transfert des requêtes

Vérification locale

Démarrez la passerelle et le fournisseur de services, puis envoyez une requête via la passerelle.

Pour Spring Cloud Gateway (port 18012) :

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

Pour Zuul (port 18022) :

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

Une réponse réussie renvoie hello, confirmant que la passerelle a transféré la requête à service-provider et supprimé le préfixe /provider1.

EDAS Spring Cloud application development: build a Zuul gateway

Déploiement sur EDAS

Déployez l'application sur Enterprise Distributed Application Service (EDAS). Pour les instructions de déploiement, consultez la section Implémentation de l'enregistrement et de la découverte de services.

Le registre de services EDAS est une version commerciale de Nacos. Lors du déploiement sur EDAS, la plateforme configure automatiquement les détails de connexion Nacos : adresse IP, port de service, namespace, AccessKey ID, AccessKey secret et chemin de contexte. Aucune configuration supplémentaire n'est requise. Conservez ou supprimez les paramètres Nacos locaux d'origine selon vos besoins.

Compatibilité des versions

Version de Spring Cloud Version de Spring Cloud Alibaba
Greenwich 2.1.1.RELEASE
Finchley 2.0.1.RELEASE
Edgware 1.5.1.RELEASE
Remarque

Spring Cloud Edgware a atteint sa fin de vie. Ne l'utilisez pas pour de nouvelles applications.

Étapes suivantes