最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringCloud?GateWay網(wǎng)關(guān)示例代碼詳解

 更新時(shí)間:2022年04月30日 17:21:17   作者:Kk_Chosen1  
這篇文章主要介紹了SpringCloud?GateWay網(wǎng)關(guān),Spring?cloud?Gateway的功能很多很強(qiáng)大,文中提到了Spring?Cloud?Gateway中幾個(gè)重要的概念,結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧

一、網(wǎng)關(guān)基本概念

1、API網(wǎng)關(guān)介紹

API 網(wǎng)關(guān)出現(xiàn)的原因是微服務(wù)架構(gòu)的出現(xiàn),不同的微服務(wù)一般會(huì)有不同的網(wǎng)絡(luò)地址,而外部客戶端可能需要調(diào)用多個(gè)服務(wù)的接口才能完成一個(gè)業(yè)務(wù)需求,如果讓客戶端直接與各個(gè)微服務(wù)通信,會(huì)有以下的問題:
(1)客戶端會(huì)多次請(qǐng)求不同的微服務(wù),增加了客戶端的復(fù)雜性。
(2)存在跨域請(qǐng)求,在一定場(chǎng)景下處理相對(duì)復(fù)雜。
(3)認(rèn)證復(fù)雜,每個(gè)服務(wù)都需要獨(dú)立認(rèn)證。
(4)難以重構(gòu),隨著項(xiàng)目的迭代,可能需要重新劃分微服務(wù)。例如,可能將多個(gè)服務(wù)合并成一個(gè)或者將一個(gè)服務(wù)拆分成多個(gè)。如果客戶端直接與微服務(wù)通信,那么重構(gòu)將會(huì)很難實(shí)施。
(5)某些微服務(wù)可能使用了防火墻 / 瀏覽器不友好的協(xié)議,直接訪問會(huì)有一定的困難。
以上這些問題可以借助 API 網(wǎng)關(guān)解決。API 網(wǎng)關(guān)是介于客戶端和服務(wù)器端之間的中間層,所有的外部請(qǐng)求都會(huì)先經(jīng)過 API 網(wǎng)關(guān)這一層。也就是說,API 的實(shí)現(xiàn)方面更多的考慮業(yè)務(wù)邏輯,而安全、性能、監(jiān)控可以交由 API 網(wǎng)關(guān)來做,這樣既提高業(yè)務(wù)靈活性又不缺安全性

2、Spring Cloud Gateway

Spring cloud gateway是spring官方基于Spring 5.0、Spring Boot2.0和Project Reactor等技術(shù)開發(fā)的網(wǎng)關(guān),Spring Cloud Gateway旨在為微服務(wù)架構(gòu)提供簡(jiǎn)單、有效和統(tǒng)一的API路由管理方式,Spring Cloud Gateway作為Spring Cloud生態(tài)系統(tǒng)中的網(wǎng)關(guān),目標(biāo)是替代Netflix Zuul,其不僅提供統(tǒng)一的路由方式,并且還基于Filer鏈的方式提供了網(wǎng)關(guān)基本的功能,例如:安全、監(jiān)控/埋點(diǎn)、限流等。

在這里插入圖片描述

3、Spring Cloud Gateway核心概念

網(wǎng)關(guān)提供API全托管服務(wù),豐富的API管理功能,輔助企業(yè)管理大規(guī)模的API,以降低管理成本和安全風(fēng)險(xiǎn),包括協(xié)議適配、協(xié)議轉(zhuǎn)發(fā)、安全策略、防刷、流量、監(jiān)控日志等貢呢。一般來說網(wǎng)關(guān)對(duì)外暴露的URL或者接口信息,我們統(tǒng)稱為路由信息。如果研發(fā)過網(wǎng)關(guān)中間件或者使用過Zuul的人,會(huì)知道網(wǎng)關(guān)的核心是Filter以及Filter Chain(Filter責(zé)任鏈)。Sprig Cloud Gateway也具有路由和Filter的概念。
下面介紹一下Spring Cloud Gateway中幾個(gè)重要的概念。
(1)路由。路由是網(wǎng)關(guān)最基礎(chǔ)的部分,路由信息有一個(gè)ID、一個(gè)目的URL、一組斷言和一組Filter組成。如果斷言路由為真,則說明請(qǐng)求的URL和配置匹配
(2)斷言。Java8中的斷言函數(shù)。Spring Cloud Gateway中的斷言函數(shù)輸入類型是Spring5.0框架中的ServerWebExchange。Spring Cloud Gateway中的斷言函數(shù)允許開發(fā)者去定義匹配來自于http
request中的任何信息,比如請(qǐng)求頭和參數(shù)等。
(3)過濾器。一個(gè)標(biāo)準(zhǔn)的Spring webFilter。Spring cloud gateway中的filter分為兩種類型的Filter,分別是Gateway Filter和Global Filter。過濾器Filter將會(huì)對(duì)請(qǐng)求和響應(yīng)進(jìn)行修改處理

在這里插入圖片描述

如上圖所示,Spring cloud Gateway發(fā)出請(qǐng)求。然后再由Gateway Handler Mapping中找到與請(qǐng)求相匹配的路由,將其發(fā)送到Gateway web handler。Handler再通過指定的過濾器鏈將請(qǐng)求發(fā)送到我們實(shí)際的服務(wù)執(zhí)行業(yè)務(wù)邏輯,然后返回。

Spring cloud Gateway的功能很多很強(qiáng)大,下面簡(jiǎn)單實(shí)現(xiàn)一下負(fù)載均衡以及服務(wù)發(fā)現(xiàn)
引入相關(guān)依賴

<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<!--gson-->
<dependency>
	<groupId>com.google.code.gson</groupId>
	<artifactId>gson</artifactId>
</dependency>
<!--服務(wù)調(diào)用-->
<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

添加配置文件

# 服務(wù)端口
server.port=8222
# 服務(wù)名
spring.application.name=service-gateway
# nacos服務(wù)地址
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
#使用服務(wù)發(fā)現(xiàn)路由
spring.cloud.gateway.discovery.locator.enabled=true
#設(shè)置路由id 0代表第一個(gè)服務(wù)
spring.cloud.gateway.routes[0].id=service-edu
#設(shè)置路由的uri lb://nacos注冊(cè)的服務(wù)名稱
spring.cloud.gateway.routes[0].uri=lb://service-edu
#設(shè)置路由斷言,代理servicerId為auth-service的/auth/路徑
spring.cloud.gateway.routes[0].predicates= Path=/eduservice/**
#設(shè)置路由id
spring.cloud.gateway.routes[1].id=service-msm
#設(shè)置路由的uri lb://nacos注冊(cè)的服務(wù)名稱
spring.cloud.gateway.routes[1].uri=lb://service-msm
#設(shè)置路由斷言,代理servicerId為auth-service的/auth/路徑
spring.cloud.gateway.routes[1].predicates= Path=/edumsm/**

記得在啟動(dòng)類上添加上@EnableDiscoveryClient 注解因?yàn)間ateway需要結(jié)合nacos一起使用
確保gateway網(wǎng)關(guān)模塊和其他模塊都在nacos中注冊(cè)了,如

在這里插入圖片描述

原本edu模塊的端口號(hào)是8001,現(xiàn)在去訪問gateway模塊的8222端口也能訪問到edu的服務(wù)了,這樣就實(shí)現(xiàn)了服務(wù)發(fā)現(xiàn) 負(fù)載均衡(gateway能自動(dòng)幫助我們負(fù)載均衡,無需再做其他的配置)。這樣是不是就覺得能拋棄nginx了呢?
其實(shí)實(shí)際項(xiàng)目中更多是是nginx和gateway結(jié)合一起使用的,主要是因?yàn)間ateway相當(dāng)于還是業(yè)務(wù)系統(tǒng)的一部分,一旦發(fā)生宕機(jī)整個(gè)系統(tǒng)將不可訪問。在gateway前面一定要再加nginx。nginx后端對(duì)應(yīng)多個(gè)gateway,nginx只是代理流量轉(zhuǎn)發(fā)沒有任何業(yè)務(wù)邏輯,這樣既能保證穩(wěn)定,又能實(shí)現(xiàn)橫向負(fù)載均衡。
即:Nginx先將客戶端的請(qǐng)求負(fù)載均衡到SpringGateway,然后SpringGateway再通過服務(wù)發(fā)現(xiàn),將請(qǐng)求負(fù)載均衡到各個(gè)業(yè)務(wù)微服務(wù)上。

此外nignx與gateway結(jié)合還能實(shí)現(xiàn)動(dòng)靜分離
在實(shí)際的開發(fā)中,有些請(qǐng)求需要通過后臺(tái)處理,有些請(qǐng)求則不需要。需要后臺(tái)處理的文件稱之為動(dòng)態(tài)資源,不要后臺(tái)處理的稱之為靜態(tài)資源。那么我們可以將靜態(tài)資源部署在nginx上,將動(dòng)態(tài)資源部署在微服務(wù)集群上,這樣能提高資源的響應(yīng)速度。

到此這篇關(guān)于SpringCloud GateWay網(wǎng)關(guān)的文章就介紹到這了,更多相關(guān)SpringCloud GateWay網(wǎng)關(guān)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot Pom文件依賴及Starter啟動(dòng)器詳細(xì)介紹

    SpringBoot Pom文件依賴及Starter啟動(dòng)器詳細(xì)介紹

    這篇文章主要介紹了SpringBoot Pom文件的依賴與starter啟動(dòng)器的作用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-09-09
  • Springboot中LocalDateTime對(duì)象返回給前端格式化解決方案

    Springboot中LocalDateTime對(duì)象返回給前端格式化解決方案

    在項(xiàng)目開發(fā)當(dāng)中前后端使用什么樣的時(shí)間格式,是一個(gè)值得關(guān)注的問題,這篇文章主要給大家介紹了關(guān)于Springboot中LocalDateTime對(duì)象返回給前端格式化的解決方案,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-04-04
  • SpringCloud使用Zookeeper作為配置中心的示例

    SpringCloud使用Zookeeper作為配置中心的示例

    這篇文章主要介紹了SpringCloud使用Zookeeper作為配置中心的示例,幫助大家更好的理解和學(xué)習(xí)使用SpringCloud,感興趣的朋友可以了解下
    2021-04-04
  • SpringMVC自定義日期轉(zhuǎn)換器方式

    SpringMVC自定義日期轉(zhuǎn)換器方式

    這篇文章主要介紹了SpringMVC如何自定義日期轉(zhuǎn)換器問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Spring?AOP底層原理及代理模式

    Spring?AOP底層原理及代理模式

    這篇文章主要為大家介紹了Spring?AOP底層原理及代理模式詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • java?Executors常用線程池

    java?Executors常用線程池

    這篇文章主要為大家介紹了java?Executors中提供的幾種常用的線程池使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • MyBatis Generator 自定義生成注釋的方法

    MyBatis Generator 自定義生成注釋的方法

    這篇文章主要介紹了MyBatis Generator 自定義生成注釋的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-09-09
  • SpringCloud 搭建企業(yè)級(jí)開發(fā)框架之實(shí)現(xiàn)多租戶多平臺(tái)短信通知服務(wù)(微服務(wù)實(shí)戰(zhàn))

    SpringCloud 搭建企業(yè)級(jí)開發(fā)框架之實(shí)現(xiàn)多租戶多平臺(tái)短信通知服務(wù)(微服務(wù)實(shí)戰(zhàn))

    這篇文章主要介紹了SpringCloud 搭建企業(yè)級(jí)開發(fā)框架之實(shí)現(xiàn)多租戶多平臺(tái)短信通知服務(wù),系統(tǒng)可以支持多家云平臺(tái)提供的短信服務(wù)。這里以阿里云和騰訊云為例,集成短信通知服務(wù),需要的朋友可以參考下
    2021-11-11
  • JAVA使用隨機(jī)數(shù)實(shí)現(xiàn)概率抽獎(jiǎng)

    JAVA使用隨機(jī)數(shù)實(shí)現(xiàn)概率抽獎(jiǎng)

    這篇文章主要為大家詳細(xì)介紹了JAVA使用隨機(jī)數(shù)實(shí)現(xiàn)概率抽獎(jiǎng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • 學(xué)習(xí)Java之Java中的異常處理機(jī)制詳解

    學(xué)習(xí)Java之Java中的異常處理機(jī)制詳解

    在本文中,小編將帶領(lǐng)大家來學(xué)習(xí)Java的異常處理機(jī)制,包括異常機(jī)制、異常類型、如何捕獲異常、如何拋出異常以及如何創(chuàng)建自定義異常等核心內(nèi)容,感興趣的同學(xué)跟著小編一起來看看吧
    2023-08-08

最新評(píng)論

扬中市| 富川| 桑植县| 利川市| 塘沽区| 龙口市| 株洲市| 深水埗区| 正镶白旗| 桑植县| 江永县| 灵台县| 高台县| 遵义县| 镇远县| 望奎县| 闻喜县| 乌审旗| 湟中县| 西乌珠穆沁旗| 灵丘县| 巴彦淖尔市| 增城市| 临武县| 潢川县| 冷水江市| 南丰县| 延寿县| 永州市| 耿马| 郓城县| 东至县| 蒲江县| 乌拉特前旗| 怀远县| 陆川县| 正宁县| 高邮市| 光泽县| 灌南县| 全椒县|