SpringCloud Alibaba入门7之引入服务网关Gateway

我们需要在客户端和服务端之间加一个统一的入口,来作为请求的统一接入,而在微服务的体系中,承担这个角色的就是网关。我们只需要将网关的机器IP配置到DNS,或者接入负载,那么客户端的服务最终通过我们的网关,再转发到对应的服务端服务。

一、创建网关服务

SpringCloud Alibaba入门7之引入服务网关Gateway_第1张图片

 1.引入依赖



    4.0.0
    
        org.example
        myshop
        1.0-SNAPSHOT
    

    myshop-gateway

    
        8
        8
        UTF-8
    
    
        
        
            org.springframework.cloud
            spring-cloud-starter-alibaba-nacos-discovery
            0.2.2.RELEASE
        
        
            com.alibaba.nacos
            nacos-client
        
        
        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-config
        
        
        
            org.springframework.cloud
            spring-cloud-starter-gateway
        
    

2.添加配置application.yml

server:
  port: 9000
spring:
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
    gateway:
      discovery:
        locator:
          enabled: true
      routes:
        - id: user-service
          uri: lb://user-service
          predicates:
            - Path=/myuser/**
          filters:
            - StripPrefix=1
  application:
    name: gateway-service #应用名称

我们在里面进行了路由转发的配置,也就是routes,我们来看一看这些配置项都是什么意思:

  • id: 路由的唯一标识,用以和其它Route区分
  • uri: 请求要转发到的地址,lb 指的是从nacos中按照名称获取微服务,并遵循负载均衡策略
  • predicates: 路由需要满足的条件,也是个数组(这里是的关系)
  • filters: 过滤器,请求在传递过程中可以通过过滤器对其进行一定的修改

在这个配置项里,我们定义了myuser开头的请求,分发到user-service这个服务。

3.网关启动类

package com.example.myshop;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

/**
 * @author qx
 * @date 2023/06/23
 * @desc 网关启动类
 */
@SpringBootApplication
// 开启服务注册发现
@EnableDiscoveryClient
public class MyShopGatewayApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyShopGatewayApplication.class, args);
    }
}

4.路由转发测试

我们重新启动用户和网关模块。

SpringCloud Alibaba入门7之引入服务网关Gateway_第2张图片

 

常规形式下访问:

SpringCloud Alibaba入门7之引入服务网关Gateway_第3张图片

接下来我们改为使用网关服务来测试:

 SpringCloud Alibaba入门7之引入服务网关Gateway_第4张图片

 

我们已经引入了Spring Cloud Gateway作为微服务网关,并完成了基本的路由转发的功能。

你可能感兴趣的:(SpringCloud,spring,cloud,gateway,spring)