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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

(十)java springboot b2b2c shop 多用户商城系统源码:服务网关zuul初级篇

發(fā)布時(shí)間:2024/1/17 windows 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (十)java springboot b2b2c shop 多用户商城系统源码:服务网关zuul初级篇 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

為什么需要API Gateway

1、簡化客戶端調(diào)用復(fù)雜度

在微服務(wù)架構(gòu)模式下后端服務(wù)的實(shí)例數(shù)一般是動(dòng)態(tài)的,對于客戶端而言很難發(fā)現(xiàn)動(dòng)態(tài)改變的服務(wù)實(shí)例的訪問地址信息。因此在基于微服務(wù)的項(xiàng)目中為了簡化前端的調(diào)用邏輯,通常會(huì)引入API Gateway作為輕量級網(wǎng)關(guān),同時(shí)API Gateway中也會(huì)實(shí)現(xiàn)相關(guān)的認(rèn)證邏輯從而簡化內(nèi)部服務(wù)之間相互調(diào)用的復(fù)雜度。

2、數(shù)據(jù)裁剪以及聚合

通常而言不同的客戶端對于顯示時(shí)對于數(shù)據(jù)的需求是不一致的,比如手機(jī)端或者Web端又或者在低延遲的網(wǎng)絡(luò)環(huán)境或者高延遲的網(wǎng)絡(luò)環(huán)境。

因此為了優(yōu)化客戶端的使用體驗(yàn),API Gateway可以對通用性的響應(yīng)數(shù)據(jù)進(jìn)行裁剪以適應(yīng)不同客戶端的使用需求。同時(shí)還可以將多個(gè)API調(diào)用邏輯進(jìn)行聚合,從而減少客戶端的請求數(shù),優(yōu)化客戶端用戶體驗(yàn)

3、多渠道支持

當(dāng)然我們還可以針對不同的渠道和客戶端提供不同的API Gateway,對于該模式的使用由另外一個(gè)大家熟知的方式叫Backend for front-end, 在Backend for front-end模式當(dāng)中,我們可以針對不同的客戶端分別創(chuàng)建其BFF

4、遺留系統(tǒng)的微服務(wù)化改造

對于系統(tǒng)而言進(jìn)行微服務(wù)改造通常是由于原有的系統(tǒng)存在或多或少的問題,比如技術(shù)債務(wù),代碼質(zhì)量,可維護(hù)性,可擴(kuò)展性等等。API Gateway的模式同樣適用于這一類遺留系統(tǒng)的改造,通過微服務(wù)化的改造逐步實(shí)現(xiàn)對原有系統(tǒng)中的問題的修復(fù),從而提升對于原有業(yè)務(wù)響應(yīng)力的提升。通過引入抽象層,逐步使用新的實(shí)現(xiàn)替換舊的實(shí)現(xiàn)。

在Spring Cloud體系中, Spring Cloud Zuul就是提供負(fù)載均衡、反向代理、權(quán)限認(rèn)證的一個(gè)API gateway。

Spring Cloud Zuul

Spring Cloud Zuul路由是微服務(wù)架構(gòu)的不可或缺的一部分,提供動(dòng)態(tài)路由,監(jiān)控,彈性,安全等的邊緣服務(wù)。Zuul是Netflix出品的一個(gè)基于JVM路由和服務(wù)端的負(fù)載均衡器。

下面我們通過代碼來了解Zuul是如何工作的

簡單使用

1、添加依賴

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-zuul</artifactId> </dependency>復(fù)制代碼

引入spring-cloud-starter-zuul包

2、配置文件

spring.application.name=gateway-service-zuul server.port=8888#這里的配置表示,訪問/it/** 直接重定向到http://www.ityouknow.com/** zuul.routes.baidu.path=/it/** zuul.routes.baidu.url=http://www.ityouknow.com/復(fù)制代碼

3、啟動(dòng)類

@SpringBootApplication @EnableZuulProxy public class GatewayServiceZuulApplication {public static void main(String[] args) {SpringApplication.run(GatewayServiceZuulApplication.class, args);} }復(fù)制代碼

啟動(dòng)類添加@EnableZuulProxy,支持網(wǎng)關(guān)路由。

史上最簡單的zuul案例就配置完了

整體架構(gòu)如下:

服務(wù)化

通過url映射的方式來實(shí)現(xiàn)zull的轉(zhuǎn)發(fā)有局限性,比如每增加一個(gè)服務(wù)就需要配置一條內(nèi)容,另外后端的服務(wù)如果是動(dòng)態(tài)來提供,就不能采用這種方案來配置了。實(shí)際上在實(shí)現(xiàn)微服務(wù)架構(gòu)時(shí),服務(wù)名與服務(wù)實(shí)例地址的關(guān)系在eureka server中已經(jīng)存在了,所以只需要將Zuul注冊到eureka server上去發(fā)現(xiàn)其他服務(wù),就可以實(shí)現(xiàn)對serviceId的映射。

我們結(jié)合示例來說明,在上面示例項(xiàng)目gateway-service-zuul-simple的基礎(chǔ)上來改造。

1、添加依賴

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-eureka</artifactId> </dependency>復(fù)制代碼

增加spring-cloud-starter-eureka包,添加對eureka的支持。

2、配置文件

配置修改為:

spring.application.name=gateway-service-zuul server.port=8888zuul.routes.api-a.path=/producer/** zuul.routes.api-a.serviceId=spring-cloud-producereureka.client.serviceUrl.defaultZone=http://localhost:8000/eureka/復(fù)制代碼

3、測試

依次啟動(dòng) spring-cloud-eureka、 spring-cloud-producer、gateway-service-zuul-eureka,訪問:http://localhost:8888/producer/hello?name=%E5%B0%8F%E6%98%8E,返回:hello 小明,this is first messge

說明訪問gateway-service-zuul-eureka的請求自動(dòng)轉(zhuǎn)發(fā)到了spring-cloud-producer,并且將結(jié)果返回。

為了更好的模擬服務(wù)集群,我們復(fù)制spring-cloud-producer項(xiàng)目改為spring-cloud-producer-2,修改spring-cloud-producer-2項(xiàng)目端口為9001,controller代碼修改如下:

@RestController public class HelloController {@RequestMapping("/hello")public String index(@RequestParam String name) {return "hello "+name+",this is two messge";} }復(fù)制代碼

修改完成后啟動(dòng)spring-cloud-producer-2,重啟gateway-service-zuul-eureka。測試多次訪問http://localhost:8888/producer/hello?name=%E5%B0%8F%E6%98%8E,依次返回:

hello 小明,this is first messge hello 小明,this is two messge hello 小明,this is first messge hello 小明,this is two messge ...復(fù)制代碼

說明通過zuul成功調(diào)用了producer服務(wù)并且做了均衡負(fù)載。

網(wǎng)關(guān)的默認(rèn)路由規(guī)則

但是如果后端服務(wù)多達(dá)十幾個(gè)的時(shí)候,每一個(gè)都這樣配置也挺麻煩的,spring cloud zuul已經(jīng)幫我們做了默認(rèn)配置。默認(rèn)情況下,Zuul會(huì)代理所有注冊到Eureka Server的微服務(wù),并且Zuul的路由規(guī)則如下:http://ZUUL_HOST:ZUUL_PORT/微服務(wù)在Eureka上的serviceId/**會(huì)被轉(zhuǎn)發(fā)到serviceId對應(yīng)的微服務(wù)。

我們注銷掉gateway-service-zuul-eureka項(xiàng)目中關(guān)于路由的配置:

#zuul.routes.api-a.path=/producer/** #zuul.routes.api-a.serviceId=spring-cloud-producer復(fù)制代碼

重新啟動(dòng)后,訪問http://localhost:8888/spring-cloud-producer/hello?name=%E5%B0%8F%E6%98%8E,測試返回結(jié)果和上述示例相同,說明Spring cloud zuul默認(rèn)已經(jīng)提供了轉(zhuǎn)發(fā)功能。

到此zuul的基本使用我們就介紹完了。關(guān)于zuul更高級使用,我們下篇再來介紹。

完整項(xiàng)目的源碼來源

Spring Cloud大型企業(yè)分布式微服務(wù)云構(gòu)建的B2B2C電子商務(wù)平臺源碼請加企鵝求求:一零三八七七四六二六


轉(zhuǎn)載于:https://juejin.im/post/5c491f6d51882523995e1ca6

總結(jié)

以上是生活随笔為你收集整理的(十)java springboot b2b2c shop 多用户商城系统源码:服务网关zuul初级篇的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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