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:過濾規則,。若有
過濾器時,gateway會根據StripPrefix
所配的值(這裡是1)去掉URL路徑中的部分字首(這裡去掉一個字首,即去掉nacos)其他過濾器請參考文檔StripPrefix=1
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

示例代碼
https://gitee.com/lalaaieasy/learnSpringCloudAlibaba/tree/master/nacos-gateway-demo
上一篇 Spring Cloud Alibaba學習 :使用Nacos作為配置中心 下一篇 SpringCloud Gateway學習(二)--動态路由