您好,登錄后才能下訂單哦!
1.Spring Gateway概述
1.1 什么是Spring Cloud Gateway
Spring Cloud Gateway
是Spring官方基于Spring 5.0,Spring Boot 2.0和Project Reactor等技術(shù)開發(fā)的網(wǎng)關(guān),Spring Cloud Gateway旨在為微服務(wù)架構(gòu)提供一種簡(jiǎn)單而有效的統(tǒng)一的API路由管理方式。Spring Cloud Gateway作為Spring Cloud生態(tài)系中的網(wǎng)關(guān),目標(biāo)是替代Netflix ZUUL,其不僅提供統(tǒng)一的路由方式,并且基于Filter鏈的方式提供了網(wǎng)關(guān)基本的功能,例如:安全,監(jiān)控/埋點(diǎn),和限流等。
1.2 Spring Cloud Gateway的功能
Spring Cloud Gateway 的特征:
2. Spring Cloud Gateway的工程流程
客戶端向 Spring Cloud Gateway 發(fā)出請(qǐng)求。然后在 Gateway Handler Mapping 中找到與請(qǐng)求相匹配的路由,將其發(fā)送到 Gateway Web Handler。Handler 再通過指定的過濾器鏈來將請(qǐng)求發(fā)送到我們實(shí)際的服務(wù)執(zhí)行業(yè)務(wù)邏輯,然后返回。
過濾器之間用虛線分開是因?yàn)檫^濾器可能會(huì)在發(fā)送代理請(qǐng)求之前(“pre”)或之后(“post”)執(zhí)行業(yè)務(wù)邏輯。
2.1 Pre和POST兩種類型的過濾器
3.基于服務(wù)發(fā)現(xiàn)的默認(rèn)路由規(guī)則
3.1 zuul和gateway的默認(rèn)路由規(guī)則
3.1.1 zuul的默認(rèn)路由規(guī)則
說明默認(rèn)情況下,Zuul會(huì)代理所有注冊(cè)到Eureka Server的微服務(wù),并且Zuul的路由規(guī)則如下:
http://ZUUL_HOST:ZUUL_PORT/微服務(wù)在Eureka上的serviceId/** 會(huì)被轉(zhuǎn)發(fā)到serviceId對(duì)應(yīng)的微服務(wù)。
http://localhost:8040/sc-zuul-first-provider/sc/order/2
3.1.2 gateway的默認(rèn)路由規(guī)則
規(guī)則:http://Gateway_HOST:Gateway_PORT/大寫的serviceId/**
其中微服務(wù)應(yīng)用名默認(rèn)大寫訪問。
實(shí)例代碼:
模塊 | 說明 | 端口 |
---|---|---|
eureka-service | Eureka Server注冊(cè)中心 | 5000 |
gateway-service | Spring Cloud Gateway Sever | 5001 |
order-service | 服務(wù)提供者 | 5100 |
user-service | 服務(wù)消費(fèi)者 | 5200 |
分別新建上面這四個(gè)服務(wù),詳見 spring cloud Finchley環(huán)境搭建
其中g(shù)ateway-service服務(wù)的application.yml配置文件如下:
spring: application: name: gateway-service cloud: # spring cloud gateway 路由配置方式 gateway: discovery: #是否與服務(wù)發(fā)現(xiàn)組件進(jìn)行結(jié)合,通過 serviceId(必須設(shè)置成大寫) 轉(zhuǎn)發(fā)到具體的服務(wù)實(shí)例。默認(rèn)為false,設(shè)為true便開啟通過服務(wù)中心的自動(dòng)根據(jù) serviceId 創(chuàng)建路由的功能。 locator: #路由訪問方式:http://Gateway_HOST:Gateway_PORT/大寫的serviceId/**,其中微服務(wù)應(yīng)用名默認(rèn)大寫訪問。 enabled: true routes: - id: 163 #網(wǎng)關(guān)路由到網(wǎng)易官網(wǎng) uri: http://www.163.com/ predicates: - Path=/163/** # - id: ORDER-SERVICE #網(wǎng)關(guān)路由到訂單服務(wù)order-service # uri: lb://ORDER-SERVICE # predicates: # - Path=/ORDER-SERVICE/** # - id: USER-SERVICE #網(wǎng)關(guān)路由到用戶服務(wù)user-service # uri: lb://USER-SERVICE # predicates: # - Pach=/USER-SERVICE/** server: port: 5001 logging: level: org.springframework.cloud.gateway: trace org.springframework.http.server.reactive: debug org.springframework.web.reactive: debug reactor.ipc.netty: debug eureka: client: service-url: defaultZone: http://localhost:5000/eureka/ feign: hystrix: enabled: true
配置項(xiàng)說明:
spring.cloud.gateway.discovery.locator.enabled:是否與服務(wù)發(fā)現(xiàn)組件進(jìn)行結(jié)合,通過 serviceId 轉(zhuǎn)發(fā)到具體的服務(wù)實(shí)例。默認(rèn)為false,設(shè)為true便開啟通過服務(wù)中心的自動(dòng)根據(jù) serviceId 創(chuàng)建路由的功能。
eureka.client.service-url.defaultZone: http://localhost:5000/eureka/,指定注冊(cè)中心的地址,Spring Cloud Gateway從注冊(cè)中心獲取已經(jīng)注冊(cè)的服務(wù)列表。
logging.level.org.springframework.cloud.gateway: debug,開啟spring-Cloud-gateway的日志級(jí)別為debug,方便debug調(diào)試。
3.3 啟動(dòng)測(cè)試
3.3.1 錯(cuò)誤的路由規(guī)則訪問
訪問Spring Cloud Gateway對(duì)應(yīng)的server,當(dāng)訪問http://localhost:5000/order-service/order/getOrderPort的時(shí)候,會(huì)出現(xiàn)報(bào)錯(cuò)內(nèi)容如下所示:
正確的Spring Cloud Gateway的默認(rèn)路由規(guī)則:http://Gateway_HOST:Gateway_PORT/大寫的serviceId/**
3.3.2 Gateway正確的路由規(guī)則測(cè)試
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持億速云。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。