0.9.0.RELEASE版本的spring cloud alibaba nacos+gateway網關實例


  gateway就是用來替換zuul的,功能都差不多,我們看下它怎么來跟nacos一起玩。老套路,三板斧:

  1、pom:

<?xml version="1.0" encoding="UTF-8"?>
<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>

    <artifactId>spring-cloud-alibaba-gateway</artifactId>
    <groupId>com.wlf</groupId>
    <version>0.0.1-SNAPSHOT</version>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.7.RELEASE</version>
    </parent>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Greenwich.SR2</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>0.9.0.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

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

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

  2、application.yml(因為涉及到路由映射,routes下面會有很多配置,yml成了標配):

#端口
server:
  port: 8484
#應用名
spring:
  application:
    name: lxytrans-gateway
  #注冊中心
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848
        register-enabled: true
    # 網關
    gateway:
      discovery:
        locator:
          lowerCaseServiceId: true
          enabled: true
      routes:
        - id: lxytrans-consumer
          uri: lb://lxytrans-consumer
          predicates:
            - Path=/wlf/consumer/**
          filters:
            - StripPrefix=2
        - id: lxytrans-provider
          uri: lb://lxytrans-provider
          predicates:
            - Path=/wlf/provider/**
          filters:
            - StripPrefix=2

  

  這里的配置說明下:

    spring.cloud.gateway.discovery.locator.lowerCaseServiceId:支持服務實例名小寫(如果nacos上的服務名是大寫的話)。

  spring.cloud.gateway.discovery.locator.enabled:支持gateway到注冊中心進行服務的注冊和發現,打開后可以直接通過服務實例名訪問。

  spring.cloud.gateway.routes:

  • id:路由的ID,唯一。
  • uri:匹配路由的轉發地址,lb是load balance縮寫,后面帶轉發的服務實例名。
  • predicates:配置該路由的斷言,有很多種斷言方式,可以組合使用。最常用的Path是請求路徑匹配。
  • filters:過濾規則,也是有多種。這里StripPrefix用來截去Path前面的路徑,從左邊開始截,配1就截去1,上面配2,那么/wlf/provider/hello最終轉發過去就是/hello。

  3、啟動類:

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

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

  打完收功。跑起來后nacos會出現gateway實例:

  我們的測試還是基於之前弄的服務提供方和消費方(最新的參見0.9.0.RELEASE版本的spring cloud alibaba sentinel+feign降級處理實例)。從上面看到服務消費方、提供方的實例都是活的,通過網關來試試調用它們:

  直接用實例名(消費方調服務方超時降級):

 

  用路由:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM