欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

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

2、Spring Cloud Gateway

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

在這里插入圖片描述

3、Spring Cloud Gateway核心概念

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

在這里插入圖片描述

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

Spring cloud Gateway的功能很多很強大,下面簡單實現(xiàn)一下負載均衡以及服務發(fā)現(xià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>
<!--服務調(diào)用-->
<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

添加配置文件

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

記得在啟動類上添加上@EnableDiscoveryClient 注解因為gateway需要結(jié)合nacos一起使用
確保gateway網(wǎng)關模塊和其他模塊都在nacos中注冊了,如

在這里插入圖片描述

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

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

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

相關文章

  • IDEA插件指南之Mybatis?log插件安裝及使用方法

    IDEA插件指南之Mybatis?log插件安裝及使用方法

    這篇文章主要給大家介紹了關于IDEA插件指南之Mybatis?log插件安裝及使用的相關資料,文中通過圖文介紹的非常詳細,對大家的學習或者工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2024-02-02
  • 使用Java完成Socket文件傳輸方式

    使用Java完成Socket文件傳輸方式

    這篇文章主要介紹了使用Java完成Socket文件傳輸方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Java面試題 從源碼角度分析HashSet實現(xiàn)原理

    Java面試題 從源碼角度分析HashSet實現(xiàn)原理

    這篇文章主要介紹了Java面試題 從源碼角度分析HashSet實現(xiàn)原理?,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-07-07
  • MyBatis 中使用 Mapper 簡化代碼的方法

    MyBatis 中使用 Mapper 簡化代碼的方法

    這篇文章主要介紹了MyBatis 中使用 Mapper 簡化代碼的方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • 淺談spring-boot 允許接口跨域并實現(xiàn)攔截(CORS)

    淺談spring-boot 允許接口跨域并實現(xiàn)攔截(CORS)

    本篇文章主要介紹了淺談spring-boot 允許接口跨域并實現(xiàn)攔截(CORS),具有一定的參考價值,有興趣的可以了解一下
    2017-08-08
  • Spring Security中用JWT退出登錄時遇到的坑

    Spring Security中用JWT退出登錄時遇到的坑

    使用了JWT后,每次請求都要攜帶 Bearer Token 并且被專門的過濾器攔截解析之后才能將用戶認證信息保存到 SecurityContext 中去,接下來通過本文給大家介紹Spring Security中用JWT退出登錄時遇到的坑,感興趣的朋友一起看看吧
    2021-10-10
  • 詳解Java如何實現(xiàn)百萬數(shù)據(jù)excel導出功能

    詳解Java如何實現(xiàn)百萬數(shù)據(jù)excel導出功能

    這篇文章主要為大家詳細介紹了Java如何實現(xiàn)百萬數(shù)據(jù)excel導出功能,文中的示例代碼講解詳細,具有一定的借鑒價值,需要的可以參考一下
    2023-02-02
  • Java 文件傳輸助手的實現(xiàn)(單機版)

    Java 文件傳輸助手的實現(xiàn)(單機版)

    這篇文章主要介紹了Java 文件傳輸助手的實現(xiàn)(單機版),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-05-05
  • 使用svn管理Maven項目的方法步驟

    使用svn管理Maven項目的方法步驟

    這篇文章主要介紹了使用svn管理Maven項目的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-08-08
  • 從HelloWorld和文檔注釋開始入門Java編程

    從HelloWorld和文檔注釋開始入門Java編程

    這篇文章主要介紹了從HelloWorld和文檔注釋開始入門Java編程,涉及到Javadoc工具的使用,需要的朋友可以參考下
    2015-10-10

最新評論