日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁(yè) > 科技  > 軟件

基于Spring Cloud Gateway,實(shí)現(xiàn)路由和負(fù)載均衡

來(lái)源: 責(zé)編: 時(shí)間:2024-05-16 09:08:04 208觀看
導(dǎo)讀Spring Cloud Gateway是基于Spring framework 5、Project Reactor和Spring Boot 2.0構(gòu)建的API網(wǎng)關(guān)實(shí)現(xiàn)。它取代了之前使用的spring-cloud-netflix-zuul。請(qǐng)?jiān)L問(wèn)下面的鏈接了解更多詳情。Spring Cloud Greenwich.RC1現(xiàn)

Spring Cloud Gateway是基于Spring framework 5、Project Reactor和Spring Boot 2.0構(gòu)建的API網(wǎng)關(guān)實(shí)現(xiàn)。它取代了之前使用的spring-cloud-netflix-zuul。請(qǐng)?jiān)L問(wèn)下面的鏈接了解更多詳情。DcC28資訊網(wǎng)——每日最新資訊28at.com

Spring Cloud Greenwich.RC1現(xiàn)已發(fā)布。(https://spring.io/blog/2018/12/12/spring-cloud-greenwich-rc1-available-now#spring-cloud-netflix-projects-entering-maintenance-mode)DcC28資訊網(wǎng)——每日最新資訊28at.com

還有一些其他的API網(wǎng)關(guān)實(shí)現(xiàn),如Kong、Tyk、Apigee等,它們并不基于Spring Cloud。但是本討論完全基于Spring團(tuán)隊(duì)創(chuàng)建的開(kāi)源Spring Cloud Gateway。DcC28資訊網(wǎng)——每日最新資訊28at.com

一、簡(jiǎn)介

Spring Cloud Gateway是非阻塞式的,即它的設(shè)計(jì)、編寫(xiě)方式絕不會(huì)阻塞主線程。相反,這些線程始終可以為請(qǐng)求提供服務(wù),并在后臺(tái)異步處理請(qǐng)求,一旦處理完成就返回響應(yīng)。DcC28資訊網(wǎng)——每日最新資訊28at.com

Spring Cloud Gateway提供以下幾個(gè)功能:DcC28資訊網(wǎng)——每日最新資訊28at.com

  • 將應(yīng)用程序中所有服務(wù)的路由映射到單個(gè)URL。
  • 構(gòu)建過(guò)濾器,可以檢查并處理通過(guò)網(wǎng)關(guān)發(fā)出的請(qǐng)求和響應(yīng)。
  • 構(gòu)建謂詞,這些對(duì)象允許我們?cè)趫?zhí)行或處理請(qǐng)求之前檢查請(qǐng)求是否滿足一組給定的條件。

Spring Cloud Gateway是一個(gè)反向代理。反向代理是位于試圖訪問(wèn)資源的客戶端和資源本身之間的中間服務(wù)器。客戶端甚至不知道自己正在與服務(wù)器通信。反向代理負(fù)責(zé)捕獲客戶端的請(qǐng)求,然后代表客戶端調(diào)用遠(yuǎn)程資源。簡(jiǎn)而言之,反向代理就像其他API網(wǎng)關(guān)一樣,充當(dāng)所有進(jìn)入系統(tǒng)的請(qǐng)求的單一入口點(diǎn),而系統(tǒng)則分為一個(gè)或多個(gè)微服務(wù)。DcC28資訊網(wǎng)——每日最新資訊28at.com

可以對(duì)網(wǎng)關(guān)進(jìn)行配置,以基于與DiscoveryClient兼容的服務(wù)注冊(cè)表中注冊(cè)的服務(wù)創(chuàng)建路由。要啟用此功能,我們需要在屬性文件中設(shè)置以下屬性,并確保DiscoveryClient實(shí)現(xiàn)位于類(lèi)路徑上并已啟用(例如Netflix Eureka、Consul或Zookeeper)。DcC28資訊網(wǎng)——每日最新資訊28at.com

spring.cloud.gateway.discovery.locator.enabled=true

Spring Cloud Gateway現(xiàn)在將自動(dòng)使用被調(diào)用服務(wù)的Eureka服務(wù)ID,并將其映射到下游服務(wù)實(shí)例。DcC28資訊網(wǎng)——每日最新資訊28at.com

二、路由

路由可以通過(guò)Java配置或通過(guò)在屬性/YAML文件中配置來(lái)定義。在這里,為了簡(jiǎn)單起見(jiàn),我們將使用第二種方法,因?yàn)樗梢愿鶕?jù)需求進(jìn)行外部化。DcC28資訊網(wǎng)——每日最新資訊28at.com

spring.cloud.gateway.routes[0].id=product-servicespring.cloud.gateway.routes[0].uri=lb://product-servicespring.cloud.gateway.routes[0].predicates[0]=Path=/product/**spring.cloud.gateway.routes[1].id=inventory-servicespring.cloud.gateway.routes[1].uri=lb://inventory-servicespring.cloud.gateway.routes[1].predicates[0]=Path=/inventory/**

三、負(fù)載均衡

當(dāng)存在多個(gè)可用實(shí)例時(shí),Spring Cloud Gateway將智能地在Discovery客戶端中的可用實(shí)例之間平衡傳入請(qǐng)求的負(fù)載。DcC28資訊網(wǎng)——每日最新資訊28at.com

它內(nèi)部使用spring-cloud-loadbalancer來(lái)分發(fā)請(qǐng)求流量。它使用其中一種算法來(lái)完成相同的操作,但是負(fù)載均衡算法的內(nèi)部實(shí)現(xiàn)超出了本討論的范圍,我們將在演示結(jié)束后的幾分鐘內(nèi)更詳細(xì)地討論它是如何實(shí)現(xiàn)的。DcC28資訊網(wǎng)——每日最新資訊28at.com

注意:這不能與使用Spring-cloud-loadbalancer的客戶端負(fù)載均衡混淆,后者需要在服務(wù)通過(guò)基于Spring的不同同步/異步Rest客戶端(如RestTemplate、WebClient等)相互通信時(shí)使用,與Spring Cloud的Open Feign不同,這些客戶端默認(rèn)情況下不進(jìn)行負(fù)載均衡。此外,當(dāng)請(qǐng)求到達(dá)單個(gè)服務(wù)之一時(shí),需要客戶端負(fù)載均衡,而在Spring Cloud Gateway中,請(qǐng)求仍在API Gateway層,不需要客戶端負(fù)載均衡。DcC28資訊網(wǎng)——每日最新資訊28at.com

好了,現(xiàn)在讓我們通過(guò)一個(gè)快速演示來(lái)說(shuō)明這一點(diǎn)吧。DcC28資訊網(wǎng)——每日最新資訊28at.com

四、演示

在這個(gè)演示中,我們將創(chuàng)建兩個(gè)服務(wù),一個(gè)是產(chǎn)品服務(wù)(product service),一個(gè)是庫(kù)存服務(wù)(inventory service),并將它們的多個(gè)實(shí)例注冊(cè)到Netflix Eureka Discovery Server上。完成后,我們將創(chuàng)建API Gateway服務(wù)器,并將其注冊(cè)到Eureka Client中。DcC28資訊網(wǎng)——每日最新資訊28at.com

所有的服務(wù)都是使用Spring Boot 3.2.4和Spring Cloud 2023.0.0創(chuàng)建的。DcC28資訊網(wǎng)——每日最新資訊28at.com

所有服務(wù)啟動(dòng)并正常運(yùn)行后,我們可以在下面的Eureka儀表板上看到注冊(cè)的所有服務(wù),它們運(yùn)行在8761端口上,每個(gè)服務(wù)有多個(gè)(2個(gè))實(shí)例。DcC28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片DcC28資訊網(wǎng)——每日最新資訊28at.com

Eureka儀表板顯示所有已注冊(cè)服務(wù),運(yùn)行在8761端口上。DcC28資訊網(wǎng)——每日最新資訊28at.com

現(xiàn)在讓我們深入了解各個(gè)服務(wù)。為了展示Spring Cloud Gateway的路由和負(fù)載均衡功能,我們將盡量保持業(yè)務(wù)邏輯的最小化。DcC28資訊網(wǎng)——每日最新資訊28at.com

我們?cè)诿總€(gè)服務(wù)中創(chuàng)建了一個(gè)/greet端點(diǎn),它是一個(gè)HTTP GET請(qǐng)求。為了展示負(fù)載均衡功能,我們?cè)陧憫?yīng)體中發(fā)送以下字段:DcC28資訊網(wǎng)——每日最新資訊28at.com

  1. greeting:一個(gè)簡(jiǎn)單的硬編碼問(wèn)候消息。
  2. instanceid:實(shí)際注冊(cè)到Eureka Server的實(shí)例ID。
  3. port:實(shí)例的實(shí)際端口號(hào)(由Spring Boot Embedded Tomcat動(dòng)態(tài)創(chuàng)建)。
  4. url:端點(diǎn)的完整URL。

但是其中最重要的是端口,因?yàn)樗怯脕?lái)識(shí)別負(fù)載均衡功能的。為了獲取該值,我們可以在控制器層添加以下代碼片段,如下所示:DcC28資訊網(wǎng)——每日最新資訊28at.com

@Value("${spring.application.name}")private String appName;// 只有當(dāng)發(fā)現(xiàn)客戶端是Eureka時(shí)才有效private EurekaClient eurekaClient;// 連接Eureka客戶端public ProductController(EurekaClient eurekaClient) {  this.eurekaClient = eurekaClient; }@GetMapping("/greet")public ResponseEntity<GreetingResponse> getProduct(HttpServletRequest request) {   InstanceInfo service = eurekaClient.getApplication(appName).getInstances().get(0);   response.setPort(service.getPort());   return new ResponseEntity<>(response, HttpStatus.OK);}

接下來(lái),我們需要在API Gateway中配置路由。路由配置已在本文的路由部分中提到過(guò)。DcC28資訊網(wǎng)——每日最新資訊28at.com

一切就緒后,讓我們測(cè)試一下應(yīng)用程序。DcC28資訊網(wǎng)——每日最新資訊28at.com

五、測(cè)試

我們將需要一些REST API測(cè)試工具,如Postman或Insomnia。在這里使用了Insomnia。DcC28資訊網(wǎng)——每日最新資訊28at.com

Spring Cloud Gateway運(yùn)行在Spring Boot的默認(rèn)端口8080上。我們將訪問(wèn)API Gateway,而不是直接調(diào)用產(chǎn)品/庫(kù)存服務(wù),這也是本演示的目的所在,看看我們是否能夠獲得響應(yīng)。DcC28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片DcC28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片DcC28資訊網(wǎng)——每日最新資訊28at.com

由于我們能夠獲得正確的響應(yīng),說(shuō)明路由功能正常工作。DcC28資訊網(wǎng)——每日最新資訊28at.com

現(xiàn)在,讓我們來(lái)看看負(fù)載均衡方面的內(nèi)容。我們只選取庫(kù)存服務(wù)實(shí)例進(jìn)行演示。DcC28資訊網(wǎng)——每日最新資訊28at.com

在上面的截圖中,我們看到庫(kù)存服務(wù)的端口是58464,這意味著請(qǐng)求是從58464端口提供的。讓我們?cè)俅伟l(fā)出請(qǐng)求,看看我們是否會(huì)一直獲得相同的端口。DcC28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片DcC28資訊網(wǎng)——每日最新資訊28at.com

在多次訪問(wèn)端點(diǎn)后,我們發(fā)現(xiàn)一些不同的端口號(hào)58436和一些不同的實(shí)例ID,這意味著請(qǐng)求是從另一個(gè)實(shí)例提供的,而不是同一個(gè)實(shí)例。這意味著它成功地分發(fā)了請(qǐng)求。DcC28資訊網(wǎng)——每日最新資訊28at.com

六、深入了解負(fù)載均衡

完成上述工作后,讓我們?cè)囍钊胙芯恳幌隆N覀儚腁PI Gateway服務(wù)器的日志開(kāi)始,通過(guò)將日志級(jí)別設(shè)置為T(mén)RACE來(lái)查看發(fā)生了什么。DcC28資訊網(wǎng)——每日最新資訊28at.com

日志有很多,但最重要的是下面的內(nèi)容,它可以幫助我們窺探框架層的幕后運(yùn)行狀況。DcC28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片DcC28資訊網(wǎng)——每日最新資訊28at.com

因此,基本上,負(fù)載均衡的實(shí)際URL是在Spring Cloud Gateway jar文件的以下類(lèi)中解析的:DcC28資訊網(wǎng)——每日最新資訊28at.com

https://github.com/spring-cloud/spring-cloud-gateway/blob/main/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/ReactiveLoadBalancerClientFilter.javaDcC28資訊網(wǎng)——每日最新資訊28at.com

日志分別來(lái)自第108行和第143行。現(xiàn)在,在所有的方法中,choose()方法是最重要的,它創(chuàng)建了負(fù)載均衡器的實(shí)例ReactLoadBalancer。ReactLoadBalancer是一個(gè)接口,來(lái)自于spring cloud loadbalancer,它為實(shí)際的負(fù)載均衡實(shí)現(xiàn)算法提供了一個(gè)抽象。目前有兩種可用的實(shí)現(xiàn)方式,即RandomLoadBalancer和RoundRobinLoadBalancer。關(guān)于它的工作原理和算法實(shí)現(xiàn)的更多內(nèi)部細(xì)節(jié)對(duì)于開(kāi)發(fā)者來(lái)說(shuō)并不重要,因?yàn)镾pring Cloud Gateway框架已經(jīng)在開(kāi)箱即用時(shí)處理了這些細(xì)節(jié)。DcC28資訊網(wǎng)——每日最新資訊28at.com

但需要理解的一點(diǎn)是,如果沒(méi)有l(wèi)b方案,負(fù)載均衡將無(wú)法工作。在路由部分,我們?cè)趯傩晕募腁PI Gateway服務(wù)中定義了以下配置。DcC28資訊網(wǎng)——每日最新資訊28at.com

spring.cloud.gateway.routes[1].uri=lb://inventory-service

如果URL具有l(wèi)b方案(即lb://myservice),它將使用Spring Cloud ReactorLoadBalancer將名稱(chēng)解析為實(shí)際的主機(jī)和端口。因此,如果不添加lb方案,負(fù)載均衡將無(wú)法工作。DcC28資訊網(wǎng)——每日最新資訊28at.com

七、結(jié)語(yǔ)

這就是關(guān)于Spring Cloud Gateway中路由和負(fù)載均衡的討論。完整的代碼可以在以下的GitHub鏈接中找到。DcC28資訊網(wǎng)——每日最新資訊28at.com

https://github.com/purbarunc/Spring-Cloud-Microservice/tree/gateway-loadbalancingDcC28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-88355-0.html基于Spring Cloud Gateway,實(shí)現(xiàn)路由和負(fù)載均衡

聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: 更新大的 JSON 對(duì)象,也能用上增量更新!

下一篇: 字節(jié)面試:說(shuō)說(shuō)Java中的鎖機(jī)制?

標(biāo)簽:
  • 熱門(mén)焦點(diǎn)
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
久久精品国产欧美亚洲人人爽| 影音先锋成人资源站| 欧美日本在线| 欧美日韩在线另类| 国产农村妇女精品| 国内偷自视频区视频综合| 亚洲国产日韩综合一区| 在线一区二区三区四区五区| 亚洲欧美日韩精品久久奇米色影视| 欧美在线三区| 欧美.www| 欧美亚洲第一页| 国产一区二区三区在线观看免费| 亚洲高清自拍| 亚洲一级黄色片| 毛片基地黄久久久久久天堂| 欧美日韩一二三四五区| 国产片一区二区| 最新日韩精品| 性欧美18~19sex高清播放| 欧美成人激情视频| 国产精品中文字幕在线观看| 亚洲国产一区视频| 亚洲综合视频网| 免费看亚洲片| 国产精品一二三视频| 亚洲精品偷拍| 欧美一区二区视频在线| 欧美国产综合视频| 国产精品永久免费在线| 亚洲人体1000| 久久国产精品毛片| 欧美色精品在线视频| 在线观看成人网| 性8sex亚洲区入口| 欧美日韩免费在线| 在线播放一区| 亚洲已满18点击进入久久| 美日韩精品免费| 国产日韩欧美中文| 99riav久久精品riav| 久久婷婷国产综合精品青草| 国产精品久久久久久久午夜片| 久久综合五月天婷婷伊人| 国产精品网站在线观看| 日韩视频二区| 老司机免费视频一区二区| 国产日韩欧美不卡| 国产精品99久久不卡二区| 久久综合九色综合久99| 国产精品最新自拍| 中文国产亚洲喷潮| 欧美国产先锋| 在线不卡亚洲| 欧美一区二区| 国产精品超碰97尤物18| 亚洲精品一区二区三| 老司机凹凸av亚洲导航| 国产亚洲精品bt天堂精选| 一区二区三区欧美在线观看| 欧美成人午夜免费视在线看片| 国产一区在线播放| 欧美亚洲日本国产| 国产精品蜜臀在线观看| 亚洲手机视频| 欧美日韩国产成人| 亚洲精品国产精品国自产在线 | 久热精品在线视频| 国产亚洲一区在线| 亚洲欧美制服另类日韩| 国产精品v一区二区三区| 日韩视频一区二区三区在线播放免费观看 | 在线一区观看| 欧美日韩亚洲国产精品| 亚洲精品免费网站| 欧美国产乱视频| 亚洲电影免费在线观看| 巨胸喷奶水www久久久免费动漫| 国内一区二区在线视频观看| 欧美专区在线播放| 国产一区二区av| 久久精品一区二区三区不卡牛牛| 国产欧美综合在线| 久久国产精品黑丝| 国内久久婷婷综合| 久久午夜激情| 亚洲国产人成综合网站| 欧美黄色小视频| 99视频热这里只有精品免费| 欧美日韩国产在线一区| 亚洲网站在线看| 国产精品尤物| 久久全国免费视频| 亚洲人久久久| 欧美日韩视频在线| 亚洲一区亚洲二区| 国产视频在线观看一区| 久久免费国产精品1| 亚洲国产美女精品久久久久∴| 欧美国产日韩精品免费观看| 99国产一区二区三精品乱码| 国产精品二区影院| 黄色成人av网| 欧美va天堂va视频va在线| 亚洲精选国产| 国产精品日韩在线播放| 久久精品成人一区二区三区蜜臀 | 欧美高清视频一二三区| 亚洲乱码国产乱码精品精98午夜| 欧美日韩一区二区免费视频| 亚洲一区区二区| 国产在线欧美日韩| 欧美成人小视频| 亚洲性人人天天夜夜摸| 国产一区二区三区日韩| 男女av一区三区二区色多| av成人手机在线| 国产区精品在线观看| 麻豆乱码国产一区二区三区| 99re66热这里只有精品3直播| 国产精品欧美日韩| 久久亚洲欧美| 亚洲最新中文字幕| 国产三级欧美三级日产三级99| 久久亚洲综合网| 亚洲视频久久| 国内激情久久| 欧美日韩视频第一区| 欧美资源在线观看| 亚洲精品久久久久| 国产精品影视天天线| 欧美国产日韩免费| 午夜在线一区| 亚洲精品一二三| 国产情侣一区| 欧美日韩成人综合| 久久精品亚洲一区二区三区浴池 | 久久久精品日韩欧美| 亚洲精品乱码久久久久| 国产精品一区二区久久久久| 美女视频黄 久久| 亚洲综合精品自拍| 亚洲电影免费观看高清| 国产精品国产三级国产aⅴ9色| 久久免费视频观看| 亚洲一区二区三区午夜| 亚洲国产成人午夜在线一区| 国产精品影片在线观看| 欧美精品一区二区三区高清aⅴ| 欧美一区三区三区高中清蜜桃| 亚洲乱码国产乱码精品精98午夜| 国产欧美一区二区精品仙草咪 | 久久久久成人精品| 亚洲网友自拍| 亚洲精品国产视频| 极品尤物av久久免费看| 国产精品久久久久毛片大屁完整版| 另类酷文…触手系列精品集v1小说| 亚洲女同在线| 日韩视频欧美视频| 伊人精品成人久久综合软件| 国产精品美女一区二区在线观看| 久久在线免费视频| 欧美一区二区三区播放老司机| 日韩午夜在线电影| 亚洲黄色成人| 极品尤物av久久免费看| 国产视频在线观看一区二区三区 | 欧美日韩少妇| 欧美大片免费观看| 久久久久久高潮国产精品视| 亚洲免费视频一区二区| 亚洲精品乱码久久久久久黑人| 激情久久久久久久久久久久久久久久| 国产精品区二区三区日本| 欧美日韩免费观看一区三区 | 午夜精品在线看| 亚洲图色在线| 夜夜夜精品看看| 91久久线看在观草草青青| 黄色综合网站| 黑人一区二区| 国产在线不卡精品| 国产三级精品三级| 国产免费亚洲高清| 国产欧美日韩综合| 国产日韩欧美在线看| 国产区二精品视| 国产精品午夜在线| 国产精品一级二级三级| 国产精品免费一区二区三区在线观看 | 国产一区二区三区高清播放| 国产精品影音先锋| 国产精品美女一区二区| 国产精品家庭影院| 欧美午夜不卡影院在线观看完整版免费| 欧美精品久久久久久久久老牛影院 | 西西人体一区二区| 先锋资源久久| 欧美在线观看一二区| 久久精品女人的天堂av| 久久久久久久久伊人| 久久人体大胆视频| 久久综合九色综合久99|