springcloud gateway路由配置

简单介绍

gateway是spring could推出,基于spring5、springboot2.0、Project React,底层使用netty通讯,性能比较高的网关组件 为什么需要网关呢? 如果没有网关的话,调用方需要配置各种的服务,配置了网关之后,只需要统一访问网关,然后由网关请求具体的服务,调用方提供服务的实例是无感知的,而且网关还可以处理路由、安全、日志、监控等与业务无关的功能,使得业务开发更加纯净。 比较重要的概念: 1、路由:由id,目标uri,一系列断言(predicate),过滤器组成,如果断言为true(即匹配),则讲请求发送到真实服务上去。 2、断言(predicate):即匹配规则,可以匹配所http请求的所有内容,匹配成功,就发送请求到真实服务 3、过滤器:在请求被请求前(pre)修改请求头或请求后修改响应体。

配置路由

配置路由有两种方式:1、使用配置文件 2、使用配置类

步骤

导入pom依赖:

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot</artifactId>
        </dependency>
        <!-- gateway -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
        </dependency>
        <!-- 注册中心eureka -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>

主启动类:

@SpringBootApplication
@EnableEurekaClient //开启eureka客服端
public class GetawayMain9527 {
          
   
    public static void main(String[] args) {
          
   
        SpringApplication.run(GetawayMain9527.class,args) ;
    }
}

使用配置文件的方式:

server:
  port: 9527
//eureka注册中心配置
eureka:
  client:
    fetch-registry: true
    register-with-eureka: true
    service-url:
      defaultZone: http://localhost:7001/eureka/
spring:
  application:
    name: getaway
  cloud:
    discovery:
      enabled: true //开启动态路由配置,根据服务名称负载均衡
    gateway:
      routes:
        - id: payment
			//uri: http://localhost:8001
          uri: lb://pay //负载均衡的服务名称
          predicates:
          - Path=/payment/**

使用配置类的方式:

@Configuration
public class GatewayConfig {
          
   
    @Bean
    public RouteLocator customrouteLocator(RouteLocatorBuilder builder){
          
   
        RouteLocatorBuilder.Builder routes = builder.routes();
        routes.route("baidu", r -> r.path("/guonei").uri("http://news.baidu.com")).build();
        return routes.build() ;
    }
}

通过上面的配置,访问http://localhost:9527就会路由到http://new.baidu.com/guonei

经验分享 程序员 微信小程序 职场和发展