Spring Cloud Gateway

1.作用功能:

統(tǒng)一路由

安全

監(jiān)控

限流

2.相關(guān)概念:

Route(路由):這是網(wǎng)關(guān)的基本構(gòu)建塊猎物。它由一個 ID臼朗,一個目標 URI豹缀,一組斷言和一組過濾器定義藤巢。如果斷言為真竟纳,則路由匹配撵溃。

Predicate(斷言):這是一個 Java 8 的 Predicate。輸入類型是一個 ServerWebExchange锥累。我們可以使用它來匹配來自 HTTP 請求的任何內(nèi)容缘挑,例如 headers 或參數(shù)。

Filter(過濾器):這是org.springframework.cloud.gateway.filter.GatewayFilter的實例桶略,我們可以使用它修改請求和響應语淘。

3.特征

基于 Spring Framework 5鬼悠,Project Reactor 和 Spring Boot 2.0

動態(tài)路由

Predicates 和 Filters 作用于特定路由

集成 Hystrix 斷路器

集成 Spring Cloud DiscoveryClient

易于編寫的 Predicates 和 Filters

限流

路徑重寫

4.Spring Cloud Gateway 網(wǎng)關(guān)路由有兩種配置方式:

在配置文件 yml 中配置

通過@Bean自定義 RouteLocator,在啟動主類 Application 中配置

5.Spring Boot的版本兼容問題

Spring Cloud Gateway 的G版本(Spring Cloud的2.1.x版本)與Spring Boot的2.2.0版本不兼容(編譯啟動沒問題亏娜,路由有問題No Such Method異常)

6.Spring Cloud Gateway 項目不能打成war包運行在傳統(tǒng)的基于Servlet的web容器中

基于Netty及webflux的web編程模型焕窝,異步非阻塞

7.pom.xml文件

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">

????<modelVersion>4.0.0</modelVersion>

????????<groupId>com.tsnt</groupId>

????????<artifactId>gateway</artifactId>

????????<version>1.0-SNAPSHOT</version>

????????<name>gateway</name>

????<description>api gateway</description>

????<parent>

????????????<groupId>org.springframework.boot</groupId>

????????????<artifactId>spring-boot-starter-parent</artifactId>

????????????<version>2.1.9.RELEASE</version>

? ? ? ?????<relativePath/>

? ???? </parent>

????????<properties>

????????????????<spring.version>5.1.10.RELEASE</spring.version>

????????????????<springboot.version>2.1.9.RELEASE</springboot.version>

????????????????<spring-cloud.version>Greenwich.SR3</spring-cloud.version>

????????????</properties>

????<dependencies>

????<dependency>

????????????????<groupId>org.springframework.cloud</groupId>

? ? ? ? ? ? ? ?<artifactId>spring-cloud-starter-gateway</artifactId>

? ? ? ?</dependency>

? ? ? <dependency>

????????????<groupId>org.springframework.cloud</groupId>

????????????<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>

????</dependency>

????????<dependency>

????????????<groupId>org.springframework.boot</groupId>

????????????<artifactId>spring-boot-starter-test</artifactId>

????????????<scope>test</scope>

????????</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>

8.application.yml? 分析

#開發(fā)環(huán)境配置

server:

????port: 9001

spring:

????application:

? ????? name: api-gateway? #注冊到Eureka上的serviceId(會默認變成大寫)

cloud:

????gateway:

????????discovery:

????????????locator:

? ? ? ? ????????? enabled: true? ? ?#開啟通過服務中心的自動根據(jù) serviceId 創(chuàng)建路由的功能。

? ? ? ? ????????? lowerCaseServiceId: true? ? #將請求路徑上的服務名配置為小寫

? ? ?????routes:

? ? ? ? ????-id: service? ? ????#自定義的路由ID维贺,保持唯一

? ? ? ? ????? uri: lb://SERVICE-CLIENT???? #目標服務地址

? ? ? ? ????? predicates:? ? ? ? ? ? ????? #路由條件

? ? ? ? ? ? ? ? - Path=/service/**

????????????????filters:? #過濾器

? ? ? ? ? ? ? ? ?- StripPrefix=1? ? ? ????#轉(zhuǎn)發(fā)請求時去除Path中的第一個過濾名稱(這里是service)

# Eureka服務中心配置

eureka:

????instance:

????????prefer-ip-address: true? ? ?# 為false時它掂,那么注冊到Eureka中的Ip地址就是本機的Ip地址

? ? ? ? #ip-address:ip #prefer-ip-address為true,將此ip地址注冊到Eureka中。調(diào)用的時候溯泣,發(fā)送的請求目的地就是此Ip地址

????client:

????????service-url:

? ? ????????? # 注冊Eureka Server

? ? ?????????defaultZone: http://localhost:9100/eureka/

logging:

????level:

? ? ????org.springframework.cloud.gateway: debug

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末虐秋,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子垃沦,更是在濱河造成了極大的恐慌客给,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,919評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件肢簿,死亡現(xiàn)場離奇詭異靶剑,居然都是意外死亡,警方通過查閱死者的電腦和手機池充,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,567評論 3 392
  • 文/潘曉璐 我一進店門桩引,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人收夸,你說我怎么就攤上這事坑匠。” “怎么了卧惜?”我有些...
    開封第一講書人閱讀 163,316評論 0 353
  • 文/不壞的土叔 我叫張陵厘灼,是天一觀的道長。 經(jīng)常有香客問我咽瓷,道長设凹,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,294評論 1 292
  • 正文 為了忘掉前任忱详,我火速辦了婚禮围来,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘匈睁。我一直安慰自己,他們只是感情好桶错,可當我...
    茶點故事閱讀 67,318評論 6 390
  • 文/花漫 我一把揭開白布航唆。 她就那樣靜靜地躺著,像睡著了一般院刁。 火紅的嫁衣襯著肌膚如雪糯钙。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,245評論 1 299
  • 那天,我揣著相機與錄音任岸,去河邊找鬼再榄。 笑死,一個胖子當著我的面吹牛享潜,可吹牛的內(nèi)容都是我干的困鸥。 我是一名探鬼主播,決...
    沈念sama閱讀 40,120評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼剑按,長吁一口氣:“原來是場噩夢啊……” “哼疾就!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起艺蝴,我...
    開封第一講書人閱讀 38,964評論 0 275
  • 序言:老撾萬榮一對情侶失蹤猬腰,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后猜敢,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體姑荷,經(jīng)...
    沈念sama閱讀 45,376評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,592評論 2 333
  • 正文 我和宋清朗相戀三年缩擂,在試婚紗的時候發(fā)現(xiàn)自己被綠了厢拭。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,764評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡撇叁,死狀恐怖供鸠,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情陨闹,我是刑警寧澤楞捂,帶...
    沈念sama閱讀 35,460評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站趋厉,受9級特大地震影響寨闹,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜君账,卻給世界環(huán)境...
    茶點故事閱讀 41,070評論 3 327
  • 文/蒙蒙 一繁堡、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧乡数,春花似錦椭蹄、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,697評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至玖翅,卻和暖如春翼馆,著一層夾襖步出監(jiān)牢的瞬間割以,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,846評論 1 269
  • 我被黑心中介騙來泰國打工应媚, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留严沥,地道東北人。 一個月前我還...
    沈念sama閱讀 47,819評論 2 370
  • 正文 我出身青樓中姜,卻偏偏與公主長得像消玄,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子扎筒,可洞房花燭夜當晚...
    茶點故事閱讀 44,665評論 2 354

推薦閱讀更多精彩內(nèi)容