Passerelle passerelle pour les microservices que vous devez connaître

Les microservices sont devenus l'architecture technologique dominante poursuivie par les principaux fabricants.La perspective d'apprendre les microservices est très prometteuse et SpringCloud est devenu la pile technologique de microservices dominante. Cette série d'articles se concentrera sur la pile technologique SpringCloud, et analysera et expliquera en détail l'application réelle de la pile technologique SpringCloud dans le scénario de microservice.

Passerelle Spring Cloud

Indice des connaissances

  • Présentation de la passerelle
  • Commencer
  • préfixe de routage
  • filtre

1 Présentation de la passerelle

Spring Cloud GatewayC'est Spring Cloudun tout nouveau projet de l'équipe, une passerelle basée sur des technologies telles que Spring 5.0, , SpringBoot2.0, Project Reactoretc. Il vise à fournir une RESTméthode simple, efficace et unifiée de gestion du routage des requêtes pour l'architecture des microservices.

Spring Cloud GatewayEn tant SpringCloudque passerelle dans l'écosystème, l'objectif est de remplacer Netflix Zuul. GatewayIl fournit non seulement une méthode de routage unifiée, mais Filterfournit également les fonctions de base de la passerelle basées sur la méthode de la chaîne. Par exemple : sécurité, surveillance/métriques et limitation.

2 Mise en route

spring_cloud_demosCréer des sous- gateway_demomodules dans le projet

2.1 Présentation des dépendances

<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-gateway</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-consul-discovery</artifactId>
    </dependency>
</dependencies>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Hoxton.SR12</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

2.2 Classe de démarrage

/**
 * Copyright (c) 2022 itmentu.com, All rights reserved.
 *
 * @Author: yang
 */
@SpringBootApplication
public class GateWayDemoApplication {
    
    
    public static void main(String[] args) {
    
    
        SpringApplication.run(GateWayDemoApplication.class, args);
    }
}

2.3 Configuration

server:
  port: 8502
spring:
  application:
    name: gateway
  cloud:
    consul:
      host: 192.168.184.128
      port: 8500
      discovery:
        service-name: ${
    
    spring.application.name}
        register: false

2.4 Configuration du routage

gateway:
  # 路由si(集合)
  routes:
    # id唯一标识
    - id: consumer-service-route
      # 路由服务地址 
      uri: lb://service-consumer
      # 断言
      predicates:
        - Path=/**

Description du code :

1:routes:id表示路由标识,唯一即可,当前案例中表示消费者服务对应的路由
2:uri: lb://service-consumer表示uri使用负载均衡模式,lb表示loadbalance,”lb:“后跟注册中心对应的服务名

2.5 Transformer le service originel en service consommateur

Ajouter @EnableDiscoveryClientl'enregistrement d'annotation pour ouvrir le centre d'enregistrement

/**
 * Copyright (c) 2022 itmentu.com, All rights reserved.
 *
 * @Author: yang
 */
@SpringBootApplication
@EnableFeignClients
@EnableCircuitBreaker
@EnableHystrixDashboard
@EnableDiscoveryClient
public class ServiceConsumerApplication {
    
    

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

    @Bean
    @LoadBalanced//开启负载均衡
    public RestTemplate restTemplate(){
    
    
        return new RestTemplate();
    }
}

Modifier la configuration pour s'inscrire au registre

spring:
  cloud:
    consul:
      discovery:
        register: true

2.6 Tests

Accéder à l'interface du service consommateur par http://localhost:8502/consumer/hello-feignadresse

image-20220320180509185

3 Préfixe de routage

3.1 Ajouter un préfixe

L'ajout de préfixe dans le chemin mappé peut gatewayêtre réalisé en configurant le filtre de la route dans . PrefixPathIl peut jouer le rôle de masquer l'adresse de l'interface et éviter l'exposition de l'adresse de l'interface.

Configurez l'adresse de requête pour ajouter un filtre de préfixe de chemin

spring:
    gateway:
      routes:
          filters:
            - PrefixPath=/consumer

test

Redémarrer l'accès au service de routage

http://localhost:8502/hello-feign

Le résultat est le suivant, indiquant que la route vers

http://localhost:8002/consumer/hello-feign

image-20220320181817680

3.2 Supprimer le préfixe

En gatewayconfigurant un filtre de routage dans StripPrefix, les adresses du chemin mappé peuvent être supprimées. Passez StripPrefix=1pour spécifier le nombre de préfixes à supprimer de la route. Par exemple : le chemin /api/consumer/hello-feignsera acheminé vers/consumer/hello-feign

Configurer le filtre de suppression de préfixe de chemin

spring:
    gateway:
      routes:
          filters:
            - StripPrefix=1

test

Redémarrer l'accès au service de routage

http://localhost:8502/api/consumer/hello-feign

Le résultat est le suivant, indiquant qu'il est acheminé vers

/consumer/hello-feign

image-20220320182253539

4 filtres

L'une des fonctions importantes d'un filtre en tant que passerelle est d'implémenter l'authentification des requêtes. Les fonctions des chapitres précédents 路由前缀sont également implémentées à l'aide de filtres.

4.1 Filtres communs

GatewayIl existe des dizaines de filtres intégrés. Les filtres intégrés courants incluent :

nom du filtre illustrer
StripPrefix Supprimer le préfixe du chemin de requête correspondant
PrefixPath Préfixez le chemin de requête correspondant
AjouterRequestHeader Ajouter un en-tête à la demande correspondante
AddRequestParameter Ajouter des paramètres aux requêtes correspondantes
AddResponseHeader Ajouter un en-tête à la réponse renvoyée par la passerelle

4.2 Scénarios courants

  • Demande d'authentification : si vous n'avez pas les droits d'accès, interceptez directement
  • Gestion des exceptions : enregistrer les journaux d'exceptions
  • Statistiques sur la durée des appels de service

4.3 Instructions de configuration du filtre

GatewayIl y a deux filtres

局部过滤器:只作用在当前配置的路由上,上面我们配置的路由前缀过滤器就是局部过滤器
全局过滤器:作用在所有路由上。

4.4 Démonstration de la configuration globale du filtre

Filtre de configuration globalAddResponseHeader

spring:
  cloud:
    gateway:
     # 配置全局默认过滤器
      default-filters:
      # 往响应过滤器中加入信息
        - AddResponseHeader=key1,value1

test

Les en-têtes de réponse peuvent être vus dans le navigateur

image-20220320183325636

Je suppose que tu aimes

Origine blog.csdn.net/scmagic/article/details/123942945
conseillé
Classement