国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【SpringCloud微服務項目實戰(zhàn)-mall4cloud項目(2)】——mall4cloud-gateway

這篇具有很好參考價值的文章主要介紹了【SpringCloud微服務項目實戰(zhàn)-mall4cloud項目(2)】——mall4cloud-gateway。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

代碼地址
github地址
fork自github原始項目
gitee地址
fork自gitee原始項目

系統(tǒng)架構(gòu)與網(wǎng)關(guān)介紹

mall4cloud,mall4cloud,SpringCloud,微服務,spring cloud,微服務,gateway
從圖中可以看到,在用戶端和靜態(tài)層通過接入層(nginx+防火墻)后就會到達后端服務中,首先要通過的便是網(wǎng)關(guān)層,網(wǎng)關(guān)層由springCloud gateway2+負載均衡去實現(xiàn)。

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

微服務架構(gòu)中的網(wǎng)關(guān)層充當了微服務體系結(jié)構(gòu)的門衛(wèi),負責處理請求、管理安全性、實施過濾和轉(zhuǎn)換、執(zhí)行路由和負載均衡等任務。通過集中管理這些功能,網(wǎng)關(guān)可以簡化微服務的客戶端訪問,并提供一些關(guān)鍵的非業(yè)務功能,以確保整個系統(tǒng)的高可用性、性能和安全性。

請求路由:網(wǎng)關(guān)充當了所有進入微服務系統(tǒng)的請求的入口點。它基于一些預定義的規(guī)則,將請求路由到適當?shù)奈⒎諏嵗?。這種路由可以基于請求的URI、HTTP方法、請求頭、查詢參數(shù)等條件進行。

負載均衡:網(wǎng)關(guān)可以與負載均衡器集成,以確保請求均勻地分發(fā)到多個微服務實例,從而提高系統(tǒng)的可用性和性能。這有助于避免單點故障,并有效地處理大量的請求。

安全性:網(wǎng)關(guān)層通常負責處理身份驗證和授權(quán),確保只有經(jīng)過身份驗證和授權(quán)的請求才能訪問受保護的微服務。它可以集成單點登錄(SSO)、OAuth、JWT驗證等安全機制。

監(jiān)控和日志:網(wǎng)關(guān)可以記錄請求和響應的信息,以便進行監(jiān)控和日志記錄。這有助于跟蹤系統(tǒng)性能問題、故障排除和安全審計。

過濾和轉(zhuǎn)換:網(wǎng)關(guān)可以通過過濾器來處理請求和響應,執(zhí)行一些非業(yè)務功能,例如請求和響應轉(zhuǎn)換、請求重試、限流、緩存、數(shù)據(jù)加密等。這些過濾器可以在請求處理過程中添加、修改或刪除請求和響應的部分內(nèi)容。

版本控制和路由策略:網(wǎng)關(guān)層允許實施版本控制策略,使得不同版本的微服務可以并存,并且請求可以根據(jù)版本號路由到適當?shù)奈⒎瞻姹尽?/p>

錯誤處理:網(wǎng)關(guān)可以處理微服務中的錯誤,并提供有意義的錯誤響應,而不是將內(nèi)部錯誤暴露給客戶端。

緩存:網(wǎng)關(guān)可以緩存常用的響應,從而減輕后端微服務的負擔,提高響應時間。

限流:網(wǎng)關(guān)可以控制流量并限制對微服務的請求速率,以防止過多的請求導致系統(tǒng)過載。

網(wǎng)關(guān)層代碼

依賴引入

在代碼中的pom文件下??梢钥吹揭肓巳缦轮饕蕾?br>mall4cloud,mall4cloud,SpringCloud,微服務,spring cloud,微服務,gateway
①③:引入nacos的注冊中心和配置中心依賴
②:引入loadbalancer依賴
④:引入gateway網(wǎng)關(guān)依賴

bootstrap配置

mall4cloud,mall4cloud,SpringCloud,微服務,spring cloud,微服務,gateway
①:端口為8000
②:應用名稱:從maven配置中讀取為mall4cloud-gateway,在指定了名稱后,如果不做配置,默認的配置文件名是mall4cloud-gateway.yaml,連接上配置中心后,會自動去獲取這個默認的配置文件。
③:nacos的注冊中心地址,端口8848
④:配置中心地址,引入了上一步的同樣地址
⑤:使用默認的命名空間,
⑥:用于上面的shared-configs:application-dev.yml,從nacos獲取這個配置
接下來看一下nacos的配置

nacos配置

application-dev.yml配置都是一些公共連接信息,就不說明了,以下是網(wǎng)關(guān)單獨的配置。

spring:
  cloud:
    gateway:
      globalcors:
        cors-configurations:
          '[/**]':
            allow-credentials: true
            allowed-headers: "*"
            # 半個月內(nèi)都允許
            max-age: 1296000
            # 測試環(huán)境,全部允許
            allowedOriginPatterns: "*"
            # allowedOrigins:
              # - "http://localhost:9527"
              # - "http://localhost:9527"
              # - "http://localhost:9528"
              # - "http://localhost:9529"
              # - "http://:9527"
            allowedMethods:
              - GET
              - POST
              - PUT
              - OPTIONS
              - DELETE
      discovery:
        locator:
          # 開啟服務注冊和發(fā)現(xiàn)
          enabled: true
          # 不手動寫路由的話,swagger整合不了...

gateway配置處理跨域問題

spring.cloud.gateway.globalcors.cors-configurations: 這個配置項指定了CORS的配置信息,它是一個Map,其中鍵是URL匹配模式,值是CORS配置。
[/**]: 這是一個URL匹配模式,表示匹配所有的URL。這意味著這個CORS配置將應用于所有的請求路徑。
allow-credentials: true: 允許在CORS請求中包含憑據(jù)信息,例如cookies或HTTP認證信息。
allowedOriginPatterns: * 允許的來源(域)模式。在測試環(huán)境中,設置為 * 表示允許任何來源。通常情況下,也可以使用 allowedOrigins 屬性來指定具體的允許來源。
allowed-headers: * : 允許的請求頭。在這里,* 表示允許任何請求頭。
max-age: 1296000: 設置瀏覽器可以緩存CORS響應的時間,以秒為單位。在這里,設置為半個月(1296000秒)。也就是有效期內(nèi)可以不經(jīng)過cors請求直接訪問
allowedMethods: 允許的HTTP請求方法,包括GET、POST、PUT、OPTIONS和DELETE等。

這個配置用于在Spring Cloud Gateway中配置全局的CORS規(guī)則,允許前端應用程序從任何來源(在測試環(huán)境中)訪問網(wǎng)關(guān)的API,并允許包含憑據(jù)信息的請求。這有助于解決跨域請求的問題,使前端可以與后端的API進行跨域通信。

gateway路由斷言配置

	routes:
        - id: mall4cloud-rbac
          uri: lb://mall4cloud-rbac
          predicates:
            - Path=/mall4cloud_rbac/**
          filters:
            - RewritePath=/mall4cloud_rbac(?<segment>/?.*), $\{segment}
        - id: mall4cloud-auth
          uri: lb://mall4cloud-auth
          predicates:
            - Path=/mall4cloud_auth/**
          filters:
            - RewritePath=/mall4cloud_auth(?<segment>/?.*), $\{segment}

routes: 網(wǎng)關(guān)路由配置
舉例如下:
id為mall4cloud-rbac 的路由:為數(shù)組格式
id: mall4cloud-rbac:定義了這個路由的唯一標識符。
uri: lb://mall4cloud-rbac:指定了請求應該被路由到的目標服務的負載均衡地址。在這里,lb://mall4cloud-rbac 表示將請求路由到名為 mall4cloud-rbac 的服務,使用負載均衡器選擇具體的實例。
predicates:定義了請求匹配規(guī)則,這里使用 Path屬性,表示只有當請求的路徑匹配 /mall4cloud_rbac/** 時,才會應用這個路由規(guī)則。才會路由到目標服務 lb://mall4cloud-rbac

通過網(wǎng)關(guān)訪問登錄接口結(jié)果如下:
mall4cloud,mall4cloud,SpringCloud,微服務,spring cloud,微服務,gateway
與直接訪問登錄接口是一致的結(jié)果,也就是路由是成功的
mall4cloud,mall4cloud,SpringCloud,微服務,spring cloud,微服務,gateway
上面的結(jié)果可以理解為/mall4cloud_rbac/** 路由到lb://mall4cloud-rbac服務
這里介紹一下常用的路由斷言工廠,官網(wǎng)中有下面11中斷言方式
mall4cloud,mall4cloud,SpringCloud,微服務,spring cloud,微服務,gateway

gateway路由過濾配置

在Spring Cloud Gateway中,可以使用過濾器(Filters)來處理進入或離開網(wǎng)關(guān)的請求和響應。這些過濾器允許你在請求和響應的不同階段執(zhí)行各種操作,例如修改請求頭、響應頭、請求體,日志記錄等。過濾器可以用于全局配置,也可以用于特定的路由規(guī)則
下面為項目的過濾器配置
mall4cloud,mall4cloud,SpringCloud,微服務,spring cloud,微服務,gateway
filters:定義了一些路由過濾器,這里使用 RewritePath 過濾器,它將請求的路徑進行重寫。具體來說,它會將 /mall4cloud_rbac 后的路徑部分提取出來并附加到目標服務的URI中,以實現(xiàn)請求路徑的重寫。

  • RewritePath:指定了要使用的過濾器工廠的名稱,這里是重寫請求路徑的過濾器。
  • /mall4cloud_auth:這是要匹配的原始請求路徑的一部分。如果請求的路徑匹配這個部分,那么就會觸發(fā)這個過濾器。
    (?/?.*):這是一個正則表達式捕獲組,它用于捕獲請求路徑中 /mall4cloud_auth 后面的路徑部分,并將其存儲在一個名為 segment 的變量中。
  • ,${segment}:這是重寫的目標路徑的格式。它將原始請求路徑中 /mall4cloud_auth 后面的路徑部分添加到目標路徑中。

舉個例子,如果原始請求的路徑是 /mall4cloud_auth/users,那么這個過濾器將把請求路徑重寫為 /users,并將請求路由到相應的后端服務。這樣,請求路徑的 /mall4cloud_auth 部分被移除了。

此外,spring還提供了多種過濾器工廠,舉例如下:
mall4cloud,mall4cloud,SpringCloud,微服務,spring cloud,微服務,gateway
其他各種可以根據(jù)具體需求設置過濾器,文檔在gateway官方中查看:
mall4cloud,mall4cloud,SpringCloud,微服務,spring cloud,微服務,gateway
也可以添加全局的過濾器,例如:
創(chuàng)建一個名為 MyGlobalFilter 的全局過濾器類,并繼承GlobalFilter接口,實現(xiàn)filter方法來定義過濾邏輯,示例代碼如下:

import org.springframework.cloud.gateway.filter.GlobalFilter;
import org.springframework.core.Ordered;
import org.springframework.stereotype.Component;
import reactor.core.publisher.Mono;

@Component
public class MyGlobalFilter implements GlobalFilter, Ordered {

    @Override
    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
        // 這里可以編寫過濾邏輯,例如修改請求或響應
        return chain.filter(exchange); // 調(diào)用鏈中的下一個過濾器
    }

    @Override
    public int getOrder() {
        return 0; // 定義過濾器的執(zhí)行順序,0表示最高優(yōu)先級
    }
}

總結(jié)

通過gateway網(wǎng)關(guān),可以對項目進行處理請求、實施過濾和轉(zhuǎn)換、執(zhí)行路由和負載均衡,這些內(nèi)容中,通常配置較多。如果項目有需求使用到gateway,可以根據(jù)網(wǎng)關(guān)的功能選取合適的方案實現(xiàn)。文章來源地址http://www.zghlxwxcb.cn/news/detail-803545.html

到了這里,關(guān)于【SpringCloud微服務項目實戰(zhàn)-mall4cloud項目(2)】——mall4cloud-gateway的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關(guān)文章

  • SpringCloud_微服務基礎day1(走進微服務,認識springcloud,微服務(圖書管理)項目搭建(一))

    SpringCloud_微服務基礎day1(走進微服務,認識springcloud,微服務(圖書管理)項目搭建(一))

    官方網(wǎng)站:柏碼 - 讓每一行代碼都閃耀智慧的光芒! (itbaima.net) 注意: 此階段學習推薦的電腦配置,至少配備4核心CPU(主頻3.0Ghz以上)+16GB內(nèi)存,否則卡到你懷疑人生。 前面我們講解了SpringBoot框架,通過使用SpringBoot框架,我們的項目開發(fā)速度可以說是得到了質(zhì)的提升。同時

    2024年02月07日
    瀏覽(34)
  • Mall4j開源商城系統(tǒng)-基于SpringBoot+Vue系統(tǒng)開發(fā)介紹

    Mall4j開源商城系統(tǒng)-基于SpringBoot+Vue系統(tǒng)開發(fā)介紹

    Mall4j開源商城,一個基于spring boot、spring oauth2.0、mybatis、redis的輕量級、前后端分離、防范xss攻擊、擁有分布式鎖,為生產(chǎn)環(huán)境多實例完全準備,數(shù)據(jù)庫為b2b2c設計,擁有完整sku和下單流程的開源商城。 目錄 ?今天來介紹一款非常不錯的Mall4j開源商城系統(tǒng)?編輯 一、序言 二、

    2024年04月10日
    瀏覽(23)
  • Jenkins+Docker+SpringCloud微服務持續(xù)集成項目優(yōu)化和微服務集群

    Jenkins+Docker+SpringCloud微服務持續(xù)集成項目優(yōu)化和微服務集群

    基于 Jenkins+Docker+SpringCloud微服務持續(xù)集成 作優(yōu)化 上面部署方案存在的問題: 一次只能選擇一個微服務部署 只有一臺生產(chǎn)者部署服務器 每個微服務只有一個實例,容錯率低 優(yōu)化方案: 在一個Jenkins工程中可以選擇多個微服務同時發(fā)布 在一個Jenkins工程中可以選擇多臺生產(chǎn)服務

    2024年02月13日
    瀏覽(65)
  • 6個頂級SpringCloud微服務開源項目,企業(yè)開發(fā)必備

    6個頂級SpringCloud微服務開源項目,企業(yè)開發(fā)必備

    今天介紹六款比較熱門的SpringCloud微服務項目,感興趣的可以clone下來研究一下,相信對你學習微服務架構(gòu)很有幫助。 介紹 Cloud-Platform是國內(nèi)首個基于Spring Cloud微服務化開發(fā)平臺,具有統(tǒng)一授權(quán)、認證后臺管理系統(tǒng),其中包含具備用戶管理、資源權(quán)限管理、網(wǎng)關(guān)API 管理等多個

    2024年02月03日
    瀏覽(46)
  • 關(guān)于如何將一個springcloud項目部署至服務器

    關(guān)于如何將一個springcloud項目部署至服務器

    目錄 1.部署形式 2.Alibaba Cloud Toolkit的使用 3.一個springcloud項目的部署 4.運行jar包 5.后臺運行 一般我們在后端開發(fā)中,常常將整個springboot項目打包成war包,或是打包成一個jar包,再將其使用ssh工具傳輸至服務器中,執(zhí)行即可。 但是springcloud項目屬于微服務框架,是由一個父工程

    2023年04月16日
    瀏覽(26)
  • GitHub上最火的SpringCloud微服務商城系統(tǒng)項目,附全套教程

    GitHub上最火的SpringCloud微服務商城系統(tǒng)項目,附全套教程

    ├── mall-admin – 后臺管理系統(tǒng)服務 ├── mall-search – 基于Elasticsearch的商品搜索系統(tǒng)服務 ├── mall-portal – 移動端商城系統(tǒng)服務 └── mall-demo – 微服務遠程調(diào)用測試服務 項目地址及項目教程 ============= 轉(zhuǎn)發(fā)+關(guān)注,然后私信回復 “源碼” 即可獲得《項目地址及

    2024年04月11日
    瀏覽(32)
  • springcloud微服務項目,通過gateway+nacos實現(xiàn)灰度發(fā)布(系統(tǒng)不停機升級)

    springcloud微服務項目,通過gateway+nacos實現(xiàn)灰度發(fā)布(系統(tǒng)不停機升級)

    灰度發(fā)布的目的是保證系統(tǒng)的高可用,不停機,提升用戶體驗。在微服務系統(tǒng)中,原有系統(tǒng)不下線,新版系統(tǒng)與原有系統(tǒng)同時在線,通過訪問權(quán)重在線實時配置,可以讓少量用戶先應用新版本功能,如果用戶反饋存在問題,則下線新系統(tǒng);如果反饋良好,則逐步加大新系統(tǒng)的

    2024年04月28日
    瀏覽(33)
  • 《黑馬頭條》SpringBoot+SpringCloud+ Nacos等企業(yè)級微服務架構(gòu)項目

    《黑馬頭條》SpringBoot+SpringCloud+ Nacos等企業(yè)級微服務架構(gòu)項目

    各位爺,完整項目gitee如下,求star heima-leadnews-master: 《黑馬頭條》項目采用的是SpringBoot+springcloud當下最流行的微服務為項目架構(gòu),配合spring cloud alibaba nacos作為項目的注冊和配置中心。新課程采用快速開發(fā)的模式,主要解決真實企業(yè)開發(fā)的一些應用場景。詳情請看博客:htt

    2024年02月15日
    瀏覽(30)
  • 黑馬頭條 SpringBoot+SpringCloud+ Nacos等企業(yè)級微服務架構(gòu)項目

    黑馬頭條 SpringBoot+SpringCloud+ Nacos等企業(yè)級微服務架構(gòu)項目

    各位爺,完整項目gitee如下,求star heima-leadnews-master: 《黑馬頭條》項目采用的是SpringBoot+springcloud當下最流行的微服務為項目架構(gòu),配合spring cloud alibaba nacos作為項目的注冊和配置中心。新課程采用快速開發(fā)的模式,主要解決真實企業(yè)開發(fā)的一些應用場景。詳情請看博客:htt

    2024年02月08日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包