zoukankan      html  css  js  c++  java
  • Spring Cloud Gateway入门

    1、什么是Spring Cloud Gateway
    Spring Cloud Gateway是Spring官方基于Spring 5.0,Spring Boot 2.0和Project Reactor等技术开发的网关,Spring Cloud Gateway旨在为微服务架构提供一种简单而有效的统一的API路由管理方式。Spring Cloud Gateway作为Spring Cloud生态系统中的网关,目标是替代Netflix ZUUL,其不仅提供统一的路由方式,并且基于Filter链的方式提供了网关基本的功能,例如:安全,监控/埋点,和限流等。

    2、Spring Cloud Gateway入门案例
    2.1 创建maven工程,pom.xml文件

    <project xmlns="http://maven.apache.org/POM/4.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <groupId>com.lynch</groupId>
        <artifactId>spring-cloud-gateway</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.0.3.RELEASE</version>
            <relativePath /> <!-- lookup parent from repository -->
        </parent>
    
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
            <java.version>1.8</java.version>
            <spring-cloud.version>Finchley.RELEASE</spring-cloud.version>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-gateway</artifactId>
            </dependency>
        </dependencies>
    
        <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-dependencies</artifactId>
                    <version>${spring-cloud.version}</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>
    
    
    
    </project>

     

    2.2 Spring Cloud Gateway主程序

    package com.lynch;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.gateway.route.RouteLocator;
    import org.springframework.cloud.gateway.route.builder.RouteLocatorBuilder;
    import org.springframework.context.annotation.Bean;
    
    /**
     * Spring Cloud Gateway主程序
     *
     * @author Lynch
     */
    @SpringBootApplication
    public class Application {
        @Bean
        public RouteLocator customRouteLocator(RouteLocatorBuilder builder) {
            return builder.routes()
                    // basic proxy
                    .route(r -> r.path("/baidu")
                    .uri("http://baidu.com:80/"))
                    .build();
        }
    
        public static void main(String[] args) {
            SpringApplication.run(Application.class, args);
        }
    
    }

     

    2.3 编写application.yml文件

    server:
      port: 8080
    spring:
      application:
        name: spring-cloud-gateway
      cloud:
        gateway:
          routes:
          - id: xujin_route
            uri: http://www.xujin.org:80/
            predicates:
            - Path=/xujin
     
    logging:
      level:
        org.springframework.cloud.gateway: TRACE
        org.springframework.http.server.reactive: DEBUG
        org.springframework.web.reactive: DEBUG
        reactor.ipc.netty: DEBUG

     

    2.4 基本代理路由配置等同写法
    Spring Cloud Gateway提供了两种配置路由规则的方法

    第一:通过@Bean自定义RouteLocator

        @Bean
        public RouteLocator customRouteLocator(RouteLocatorBuilder builder) {
            return builder.routes()
                    // basic proxy
                    .route(r -> r.path("/baidu")
                    .uri("http://baidu.com:80/"))
                    .build();
        }

     

    第二:通过属于文件或者yml文件配置

    spring:
      cloud:
        gateway:
          routes:
          - id: xujin_route
            uri: http://www.xujin.org:80/
            predicates:
            - Path=/xujin

    2.5 运行测试
    访问http://localhost:8080/baidu,路由转发到http://www.baidu.com
    访问http://localhost:8080/xujin,路由转发到http://xujin.orgyml

     

  • 相关阅读:
    mongodb常用命令(转)
    C++位运算详解(转)
    C++Vector用法(转)
    php下载文件
    二维数组和指针(转)
    php数据采集(转)
    通过PHP实现浏览器点击下载TXT文档(转)
    Linux 文件颜色的含义
    如何在Linux下创建与解压zip, tar, tar.gz和tar.bz2文件【转】
    X11VNC:让Windows可以远程管理Ubuntu桌面
  • 原文地址:https://www.cnblogs.com/linjiqin/p/9766257.html
Copyright © 2011-2022 走看看