介紹:
- SpringCloud 是微服務中的翹楚,最佳的落地方案。
- Spring Cloud Gateway 是 Spring Cloud 新推出的網關框架,之前是 Netflix Zuul。網關通常在項目中爲了簡化前端的調用邏輯,同時也簡化內部服務之間互相調用的複雜度;具體作用就是轉發服務,接收並轉發所有內外部的客戶端調用;其他常見的功能還有權限認證,限流控制等等。
本博客會提到網關的基本轉發功能,熔斷功能,限流功能以及功能的綜合使用。
1、創建網關工程
此處省略…
2、配置網關
1)、由於我們網關也需要在註冊中心進行註冊,所以我們需要在pom文件中引入common工程
<dependency>
<groupId>com.hsl.halmall</groupId>
<artifactId>hslmall-common</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
2)、開啓註冊中心註解
/**
* 想要使用網關
* 1、首先啓用註冊中心的註冊功能
* 2、在配置文件中配置路由相關的功能
*/
@EnableDiscoveryClient
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
public class HslmallGatewayApplication {
public static void main(String[] args) {
SpringApplication.run(HslmallGatewayApplication.class, args);
}
}
說明:由於我們網關不需要和數據庫通信,所以我們在啓動@SpringBootApplication後面排除數據源自動配置
3、新建bootstrap.properties
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.namespace=52a5124d-5f65-4b41-bdca-01caacb3f3c4
spring.application.name=hslmall-gateway
把網關信息註冊到配置中心
4、配置路由
server:
port: 88
spring:
application:
name: hslmall-gateway
cloud:
nacos:
# 配置註冊中心的地址和命名空間
discovery:
server-addr: 127.0.0.1:8848
namespace: 52a5124d-5f65-4b41-bdca-01caacb3f3c4
# 配置網關路由信息
gateway:
routes:
- id: test_route_baidu
uri: https://www.baidu.com
predicates:
- Query=url,baidu
- id: test_toute_qq
uri: https://www.qq.com
predicates:
- Query=url,qq
routes:是一個數組,在yml文件中使用 - 來表示一個對象
id:起一個名字,不能和其他的重複
uri:具體路由的地址
predicates:路由規則,也是一個數組,Query=url,baidu:表示參數中有url參數的,並且值是百度的,都會路由到https://www.baidu.com 這個地址
其他更詳細的說明請參照官方文檔
5、啓動nacos,並創建命名空間
其中 namespace 的值就是我們創建命名空間生成的一串數字
5、瀏覽器分別訪問地址
http://127.0.0.1:88/hello?url=baidu
http://127.0.0.1:88/hello?url=qq
查看效果