日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring Cloud(四) API网关Zuul

發(fā)布時間:2025/3/20 javascript 78 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring Cloud(四) API网关Zuul 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前文回顧:

Spring Cloud(一)Eureka Server-單體及集群搭建

Spring Cloud(二) 配置Eureka Client

Spring Cloud(三) 熔斷器Hystrix

一.API網關

API網關旨在用一套單一且統(tǒng)一的API入口點,來組合一個或多個內部API。

API網關定位為應用系統(tǒng)服務接口的網關,區(qū)別于網絡技術的網關,但是原理是一樣的。API網關統(tǒng)一服務入口,可方便實現對平臺眾多服務接口進行管控,如對訪問服務的身份認證、防報文重放與防數據篡改、功能調用的業(yè)務鑒權,以及相應數據的脫敏、流量與并發(fā)控制,甚至基于API調用的計量或計費等。

API網關常用于以下場景:

  • 黑白名單:實現通過IP地址控制禁止訪問網關功能

  • 日志:實現訪問日志的記錄,可用于分析訪問,處理性能指標,同時將分析結果支持其它模塊功能應用

  • 協(xié)議適配:實現通信協(xié)議校驗、適配轉換的功能

  • 身份認證:負責網關訪問身份認證驗證

  • 計流限流:實現微服務訪問流量計算,基于流量計算分析進行限流,可以定義多種限流規(guī)則

  • 路由:是API網關很核心的模塊功能,此模塊實現根據請求鎖定目標微服務,并將請求進行轉發(fā)

API網關所帶來的好處:

  • 避免將內部信息泄露給外部

  • 為微服務添加額外的安全層

  • 支持混合通信協(xié)議

  • 降低構建微服務的復雜性

  • 微服務模擬與虛擬化

二.Zuul

Zuul是Netflix出品的一個基于JVM路由和服務端的負載均衡器。

Zuul 在云平臺上提供動態(tài)路由,監(jiān)控,彈性,安全等邊緣服務的框架。Zuul 相當于是設備和 Netflix 流應用的 Web 網站后端所有請求的前門。

Zuul可以通過加載動態(tài)過濾機制,從而實現以下各項功能:

  • 驗證與安全保障: 識別面向各類資源的驗證要求并拒絕那些與要求不符的請求。

  • 審查與監(jiān)控: 在邊緣位置追蹤有意義數據及統(tǒng)計結果,從而為我們帶來準確的生產狀態(tài)結論。

  • 動態(tài)路由: 以動態(tài)方式根據需要將請求路由至不同后端集群處。

  • 壓力測試: 逐漸增加指向集群的負載流量,從而計算性能水平。

  • 負載分配: 為每一種負載類型分配對應容量,并棄用超出限定值的請求。

  • 靜態(tài)響應處理: 在邊緣位置直接建立部分響應,從而避免其流入內部集群。

  • 多區(qū)域彈性: 跨越AWS區(qū)域進行請求路由,旨在實現ELB使用多樣化并保證邊緣位置與使用者盡可能接近。

三.代碼示例

1.pom中添加依賴

? ?<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.3.RELEASE</version><relativePath/></parent> ?<properties><java.version>1.8</java.version><spring-cloud.version>Greenwich.SR1</spring-cloud.version></properties> ?<dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId><version>2.1.0.RELEASE</version></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-zuul</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>

2.Application啟動類中添加注解

  • @EnableZuulProxy:支持網關路由

@SpringBootApplication @EnableZuulProxy public class Study05Application {public static void main(String[] args) {SpringApplication.run(Study05Application.class, args);} }

3.配置文件

spring.application.name=gateway-service-zuul server.port=8888 ? zuul.routes.api-a.path=/producer/** zuul.routes.api-a.serviceId=spring-cloud-producer ? eureka.client.serviceUrl.defaultZone=http://localhost:8000/eureka/

4.測試

依次啟動 spring-cloud-eureka、 spring-cloud-producer、gateway-service-zuul-eureka,訪問:http://localhost:8888/producer/hello?name=yfy

返回:hello yfy,welcome to Spring Cloud

測試集群,修改端口號,啟動spring-cloud-producer

@RestController public class HelloController { ?@RequestMapping("/hello")public String index(@RequestParam String name) {return "hello " + name + ",welcome to Spring Cloud:product2";} }

修改完成后啟動spring-cloud-producer-2,重啟gateway-service-zuul-eureka。測試多次訪問http://localhost:8888/producer/hello?name=yfy,依次返回:

hello yfy,welcome to Spring Cloud hello yfy,welcome to Spring Cloud:product2 hello yfy,welcome to Spring Cloud hello yfy,welcome to Spring Cloud:product2 ...

說明通過zuul成功調用了producer服務并且做了均衡負載。

5.網關的默認路由規(guī)則

如果后端服務多達十幾個的時候,每一個都這樣配置也挺麻煩的,spring cloud zuul已經幫我們做了默認配置。默認情況下,Zuul會代理所有注冊到Eureka Server的微服務,并且Zuul的路由規(guī)則如下:

http://ZUUL_HOST:ZUUL_PORT/微服務在Eureka上的serviceId/**會被轉發(fā)到serviceId對應的微服務。

我們注銷掉gateway-service-zuul-eureka項目中關于路由的配置:

#zuul.routes.api-a.path=/producer/** #zuul.routes.api-a.serviceId=spring-cloud-producer

重新啟動后,訪問http://localhost:8888/spring-cloud-producer/hello?name=yfy,測試返回結果和上述示例相同,說明Spring cloud zuul默認已經提供了轉發(fā)功能。

總結

以上是生活随笔為你收集整理的Spring Cloud(四) API网关Zuul的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。