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

歡迎訪問 生活随笔!

生活随笔

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

javascript

SpringCloud Zuul(二)之简单用法

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

一、引用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應(yīng)用程序要對一個或多個后端服務(wù)進行代理調(diào)用的常見用例的開發(fā)。此功能對于用戶界面代理所需的后端服務(wù)很有用,從而避免了為所有后端獨立管理CORS和身份驗證問題的需求。

要啟用它,請使用注釋Spring Boot主類@EnableZuulProxy。這樣做會導(dǎo)致將本地請求轉(zhuǎn)發(fā)到適當?shù)姆?wù)。

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

注:

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

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

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

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

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

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

前面的示例意味著HTTP調(diào)用要/myusers轉(zhuǎn)發(fā)到users服務(wù)(例如/myusers/101轉(zhuǎn)發(fā)到/101)。

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

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

前面的示例意味著HTTP調(diào)用將/myusers轉(zhuǎn)發(fā)到該users_service服務(wù)。路由必須具有path可以指定為ant風(fēng)格模式的,因此/myusers/*只能匹配一個級別,但可以/myusers/**分層匹配。

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

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

(2)?hystrix.command和ribbon

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

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

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

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 / **”路由(未檢測到版本)。默認情況下,此功能是禁用的,僅適用于發(fā)現(xiàn)的服務(wù)。

(4)zuul.prefix

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

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

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

(6)zuul.addProxyHeaders

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

(7)默認路由(/)

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

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

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

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

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

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

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

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

?

?

?

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。