天天看點

Spring Cloud Alibaba學習 :使用Nacos結合SpringCloud Gateway 完成 Spring Cloud 服務路由

Nacos 是阿裡巴巴開源的一個更易于建構雲原生應用的動态服務發現、配置管理和服務管理平台。

Spring Cloud Gateway 是 Spring Cloud 的一個全新項目,該項目是基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等技術開發的網關,它旨在為微服務架構提供一種簡單有效的統一的 API 路由管理方式。

Spring Cloud Gateway 作為 Spring Cloud 生态系統中的網關,目标是替代 Netflix Zuul,其不僅提供統一的路由方式,并且基于 Filter 鍊的方式提供了網關基本的功能,例如:安全,監控/名額,和限流。

建立應用

1.命名為:nacos-gataway。

2.編輯pom加入依賴

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

配置主要引入nacos發現和 gateway網關

3.在應用的 /src/main/resources/application.properties 配置檔案中配置 Nacos Server 位址

server.port=18085

#\u914D\u7F6E Nacos Server \u5730\u5740

spring.application.name=nacos-gateway

spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

management.endpoints.web.exposure.include=*

# \u914D\u7F6E\u6587\u4EF6\u4E2D\u914D\u7F6E Spring Cloud Gateway \u8DEF\u7531

spring.cloud.gateway.routes[0].id=nacos-route

#\u683C\u5F0F\u4E3A\uFF1Alb://\u5E94\u7528\u6CE8\u518C\u670D\u52A1\u540D

spring.cloud.gateway.routes[0].uri=lb://cloud-nacos-server

spring.cloud.gateway.routes[0].predicates[0].name=Path

spring.cloud.gateway.routes[0].predicates[0].args[pattern]=/nacos/**

spring.cloud.gateway.routes[0].filters[0]=StripPrefix=1

各字段含義如下:

  • id:我們自定義的路由 ID,保持唯一
  • uri:目标服務位址       可以是 http://blog.csdn.net/xuexijava85   也可以說是格式為:lb://應用注冊服務名
  • predicates:路由條件,Predicate 接受一個輸入參數,傳回一個布爾值結果。該接口包含多種預設方法來将 Predicate 組合成其他複雜的邏輯(比如:與,或,非)。
  • filters:過濾規則,。若有

    StripPrefix

    過濾器時,gateway會根據

    StripPrefix=1

    所配的值(這裡是1)去掉URL路徑中的部分字首(這裡去掉一個字首,即去掉nacos)其他過濾器請參考文檔

4.網關代碼編寫GatawayApplication

@EnableDiscoveryClient

@SpringBootApplication

public class GatawayApplication

{

    public static void main( String[] args )

    {

        SpringApplication.run(GatawayApplication.class, args);

    }

}

5.建立應用CloudNacosServerApplication代碼編寫

@EnableDiscoveryClient

@SpringBootApplication

public class CloudNacosServerApplication

{

    public static void main( String[] args )

    {

        SpringApplication.run(CloudNacosServerApplication.class, args);

    }

    @RestController

    class EchoController {

        @RequestMapping(value = "/echo/{string}", method = RequestMethod.GET)

        public String echo(@PathVariable String string) {

            return "hello Nacos Discovery " + string;

        }

        @RequestMapping(value = "/divide", method = RequestMethod.GET)

        public String divide(@RequestParam Integer a, @RequestParam Integer b) {

            return String.valueOf(a / b);

        }

    }

}

6.一、啟動nacos,二、啟動服務,三、啟動GatawayApplication 

Spring Cloud Alibaba學習 :使用Nacos結合SpringCloud Gateway 完成 Spring Cloud 服務路由

示例代碼

https://gitee.com/lalaaieasy/learnSpringCloudAlibaba/tree/master/nacos-gateway-demo

上一篇 Spring Cloud Alibaba學習 :使用Nacos作為配置中心                                                                                                             下一篇 SpringCloud Gateway學習(二)--動态路由

繼續閱讀