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

歡迎訪問 生活随笔!

生活随笔

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

javascript

SpringCloud Zuul(二)之简单用法

發布時間:2023/12/3 javascript 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SpringCloud Zuul(二)之简单用法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、引用Zuul

要將Zuul引用在項目中,請使用組ID為org.springframework.cloud和工件ID為的啟動器spring-cloud-starter-netflix-zuul。

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-zuul</artifactId><version>2.1.3.RELEASE</version></dependency>

?

二、嵌入Zuul反向代理

Spring Cloud嵌入Zuul代理,以簡化UI應用程序要對一個或多個后端服務進行代理調用的常見用例的開發。此功能對于用戶界面代理所需的后端服務很有用,從而避免了為所有后端獨立管理CORS和身份驗證問題的需求。

要啟用它,請使用注釋Spring Boot主類@EnableZuulProxy。這樣做會導致將本地請求轉發到適當的服務。

按照慣例,ID為users的服務從位于的代理/users(去掉前綴)接收請求。代理使用功能區來定位要通過發現轉發到的實例。所有請求均在hystrix命令中執行,因此失敗會顯示在Hystrix指標中。一旦電路斷開,代理就不會嘗試與服務聯系。

注:

Zuul啟動器不包括服務發現的客戶端,對于使用服務ID作為轉發的路由,您還需要在類路徑上提供服務發現的客戶端(Eureka是其中的一種選擇)。 (1)zuul.ignored-services與routes

想要跳過自動配置服務路由的步驟,請設置zuul.ignored-services為服務ID模式的列表。如果服務與被忽略但仍包含在顯式配置的路由映射中的模式匹配,則將其忽略,如以下示例所示:

application.yml zuul:ignoredServices: '*'routes:users: /myusers/**

在上面的例子中,所有的服務都將被忽略,除了為users。

要增加或更改代理路由,可以添加外部配置,如下所示:

application.yml zuul:routes:users: /myusers/**

前面的示例意味著HTTP調用要/myusers轉發到users服務(例如/myusers/101轉發到/101)。

要對路由進行更細粒度的控制,可以分別指定路徑和serviceId,如下所示:

application.yml zuul:routes:users:path: /myusers/**serviceId: users_service

前面的示例意味著HTTP調用將/myusers轉發到該users_service服務。路由必須具有path可以指定為ant風格模式的,因此/myusers/*只能匹配一個級別,但可以/myusers/**分層匹配。

后端的位置可以指定為serviceId(用于發現服務)或url(物理位置),如以下示例所示:

application.yml zuul:routes:users:path: /myusers/**url: https://example.com/users_service

(2)?hystrix.command和ribbon

這些簡單的url-routes不會以的形式執行HystrixCommand,也不會使用Ribbon負載均衡多個URL。為了實現這些目標,您可以指定一個serviceId帶有靜態服務器列表的,如下所示:

application.yml zuul:routes:echo:path: /myusers/**serviceId: myusers-servicestripPrefix: truehystrix:command:myusers-service:execution:isolation:thread:timeoutInMilliseconds: ...myusers-service:ribbon:NIWSServerListClassName: com.netflix.loadbalancer.ConfigurationBasedServerListlistOfServers: https://example1.com,http://example2.comConnectTimeout: 1000ReadTimeout: 3000MaxTotalHttpConnections: 500MaxConnectionsPerHost: 100

另一種方法是指定服務路由并配置一個Ribbon客戶端serviceId(這樣做需要在Ribbon中禁用Eureka支持-有關更多信息,請參見上文),如以下示例所示:

application.yml zuul:routes:users:path: /myusers/**serviceId: usersribbon:eureka:enabled: falseusers:ribbon:listOfServers: example.com,google.com

(3)PatternServiceRouteMapper?

您可以使用來提供serviceId和之間的約定正則映射。它使用正則表達式命名組從中提取變量serviceId并將其注入路由模式,如以下示例所示:

ApplicationConfiguration.java @Bean public PatternServiceRouteMapper serviceRouteMapper() {return new PatternServiceRouteMapper("(?<name>^.+)-(?<version>v.+$)","${version}/${name}"); }

上面的示例指的是serviceId的myusers-v1被映射到路線/v1/myusers/**。可以接受任何正則表達式,但所有命名組都必須同時存在于servicePattern和中routePattern。如果servicePattern與不匹配serviceId,則使用默認行為。在前面的示例中,serviceIdofmyusers映射到“ / myusers / **”路由(未檢測到版本)。默認情況下,此功能是禁用的,僅適用于發現的服務。

(4)zuul.prefix

要為所有映射添加前綴,請設置zuul.prefix一個值,例如/api。默認情況下,代理前綴會從請求中剝離,然后再轉發請求(您可以使用來關閉此行為zuul.stripPrefix=false)。您還可以關閉從單個路由中剝離特定于服務的前綴,如以下示例所示:

application.yml zuul:routes:users:path: /myusers/**stripPrefix: false 注:zuul.stripPrefix僅適用于中設置的前綴zuul.prefix。它對給定路由中定義的前綴沒有任何影響path。 (5)zuul.retryable 在前面的例子中,請求到/myusers/101轉發到/myusers/101在users服務。

這些zuul.routes條目實際上綁定到類型的對象ZuulProperties。如果查看該對象的屬性,則可以看到它也有一個retryable標志。設置該標志以true使功能區客戶端自動重試失敗的請求。您還可以將該標志設置為何true時需要修改使用功能區客戶端配置的重試操作的參數。

(6)zuul.addProxyHeaders

默認情況下,X-Forwarded-Host標頭被添加到轉發的請求中。要關閉它,請設置zuul.addProxyHeaders = false。默認情況下,前綴路徑被剝離,并且后端的請求選擇一個X-Forwarded-Prefix標頭(/myusers在前面顯示的示例中)。

(7)默認路由(/)

如果設置默認路由(/),則具有的應用程序@EnableZuulProxy可以充當獨立服務器。例如,zuul.route.home: /將所有流量(“ / **”)路由到“ home”服務。

如果需要更細粒度的忽略,則可以指定要忽略的特定模式。這些模式在路線定位過程開始時進行評估,這意味著模式中應包含前綴以保證匹配。被忽略的模式跨越所有服務,并取代任何其他路由規范。以下示例顯示了如何創建忽略的模式:

application.yml zuul:ignoredPatterns: /**/admin/**routes:users: /myusers/**

前面的示例意味著所有呼叫(例如/myusers/101)都被轉發到/101該users服務上。但是,包括在內的呼叫/admin/無法解決。

注:如果需要保留路由的順序,則需要使用YAML文件,因為使用properties文件時順序會丟失。

以下示例顯示了這樣的YAML文件:

application.yml zuul:routes:users:path: /myusers/**legacy:path: /**

如果要使用properties?文件,則該legacy路徑可能會終止于該users?路徑的前面,從而導致該users路徑不可訪問。

?

?

?

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的SpringCloud Zuul(二)之简单用法的全部內容,希望文章能夠幫你解決所遇到的問題。

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