統一網關Gateway的使用:

来源:https://www.cnblogs.com/andanlife/archive/2022/09/13/16689478.html
-Advertisement-
Play Games

一、argparse簡介 argparse 是 python 自帶的命令行參數解析包,可以用來方便的服務命令行參數,使用之前需要先導入包 import argparse 二、簡單案例 簡單使用,創建一個名為test.py的文件 # 導入 argparse 模塊 import argparse # 創 ...


為什麼需要網關?

Gateway網關是我們服務的守門神,所有微服務的統一入口

網關的核心功能特性:

  • 網關的功能:身份認證和許可權校驗
  • 服務路由,負載均衡
  • 請求限流

在SpringCloud中網關的實現包括兩種:

  • geteway
  • zuul

image

搭建網關服務

  1. 創建新的module(模塊),引入SpringCloudGateway的依賴和nacos的服務發現依賴:image

  2. 編寫啟動類 :

    package cn.itcast.gateway;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    @SpringBootApplication
    public class GatewayApplication {
    
    	public static void main(String[] args) {
    		SpringApplication.run(GatewayApplication.class, args);
    	}
    }
    
  3. 編寫路由配置及nacos地址image

搭建網關服務:image

總結:

網關搭建步驟:

  1. 創建項目,引入nacos服務發現和gateway依賴

  2. 配置application.yml,包括服務基本信息、nacos地址、路由

路由配置包括:

  1. 路由id:路由的唯一標示

  2. 路由目標(uri):路由的目標地址,http代表固定地址,lb代表根據服務名負載均衡

  3. 路由斷言(predicates):判斷路由的規則,

  4. 路由過濾器(filters):對請求或響應做處理

路由斷言工廠:

image

路由過濾器 GatewayFilter:

還有一個配置 filters :路由過濾器:對請求或響應做處理

image

會先經過過濾器 Spring提供了31種不同的過濾器工廠

預設過濾器   default-filters 會對所有的路由請求都生效

image

全局過濾器 GlobaFilter:

image

exchange 請求上下文 從請求進入開始一直到結束為止 可以拿到請求相關的信息,響應相關的信息 甚至 存東西和取東西也是可以的

chain 過濾器鏈 放行用的 交給下一個過濾器

自定義一個全局過濾器:

  • 參數中是否有token,

  • token參數值是否為admin

如果同時滿足則放行,否則攔截

@Component
@Order(1)
public class AuthorizeFilter implements GlobalFilter {

    @Override
    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
//        1.獲取請求參數
        ServerHttpRequest request = exchange.getRequest();
        MultiValueMap<String, String> params = request.getQueryParams();
//        2.獲取參數中的authorization參數
        String auth = params.getFirst("token");

//        3.判斷參數值是否等於admin
        if ("admin".equals(auth)) {
            // 4.是 放行
            return chain.filter(exchange);
        }

//        5.否 攔截
//        設置狀態碼
        exchange.getResponse().setStatusCode(
                HttpStatus.UNAUTHORIZED);
        return exchange.getResponse().setComplete();

    }
}
  • 全局過濾器的作用是什麼:

    對所有路由都生效的過濾器,並且可以自定義處理邏輯

  • 實現全局過濾器的步驟:

    1. 實現GlobalFilter介面
    2. 添加@order註解或者實現Ordered介面 數值越小 優先順序越高
    3. 編寫處理邏輯

過濾器執行順序:

  • 當過濾器的order值一樣,會按照defaultFilter > 路由過濾器 > GlobalFilter的順序執行

image

跨域問題處理:

域的組成:協議,ip,埠

  • 同域:協議,ip,埠 都相同
  • 跨域:協議,ip,埠 有一個不同

網管跨域處理的方法 CORS方案 並且只需要簡單的配置就能實現

image


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 可用七種不同的方式將 const 關鍵字用於二級指針,如下所示: //方式一:所指一級指針指向的數據為常量,以下幾種為等效表示 const int ** pptc; //方式一 int const ** pptc; //方式二 //方式二:所指一級指針為常量 int *const* pcpt; // ...
  • 可用三種不同的方式將 const 關鍵字用於一級指針,如下所示: //方式一:指向常量數據的指針,以下幾種為等效表示 const int * ptc; //方式一 int const * ptc; //方式二 //方式二:指針本身為常量,需在聲明時初始化 int x = 55; int * cons ...
  • 前言 嗨嘍,大家好呀~這裡是愛看美女的茜茜吶 又到了學Python時刻~ 今天實現一下人臉識別。 先問大家一個問題什麼是百度Aip模塊? 百度AI平臺提供了很多的API介面供開發者快速的調用運用在項目中本文寫的是使用百度AI的線上介面SDK模塊(baidu-aip)進行實現人臉識別 除了人臉識別,其 ...
  • 本文詳細闡述了knn演算法,從開始介紹什麼事knn,到講解knn演算法的原理再到最後以實際例子來運用knn演算法的步驟,實際例子的代碼講解也十分詳細 ...
  • 為了在jupyter中使用pyTorch的虛擬環境,來記錄一下怎麼操作一、conda命令的使用因為使用的是jupyter,所有就使用Anaconda Prompt來創建虛擬環境(也可使用virtualenv,不過沒試過) conda create -n 環境名 # 創建的環境在預設路徑下,C盤位置不 ...
  • 摘要:本文主要講述如何進行圖像量化處理和採樣處理及局部馬賽克特效。 本文分享自華為雲社區《[Python圖像處理] 二十.圖像量化處理和採樣處理及局部馬賽克特效》,作者: eastmount。 本文主要講述如何進行圖像量化處理和採樣處理及局部馬賽克特效。 一.圖像量化處理 圖像通常是自然界景物的客觀 ...
  • 1.推導式套路 除了最簡單的列表推導式和生成器表達式,其實還有字典推導式、集合推導式等等。 下麵是一個以列表推導式為例的推導式詳細格式,同樣適用於其他推導式。 variable = [out_exp_res for out_exp in input_list if out_exp == 2] out ...
  • 當面試官問你,“什麼是令牌桶限流演算法”! 你知道要怎麼回答,才能獲得面試官的青睞嗎? 大家好,我是Mic,一個工作了14年的Java程式員。 關於這個問題,面試官想考察哪些緯度?我們又該怎麼回答呢? 問題解析 限流策略,是在高併發流量下保護系統穩定性的一種策略。 所以這個問題,主要是互聯網公司會去考 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 在我們開發過程中基本上不可或缺的用到一些敏感機密數據,比如SQL伺服器的連接串或者是OAuth2的Secret等,這些敏感數據在代碼中是不太安全的,我們不應該在源代碼中存儲密碼和其他的敏感數據,一種推薦的方式是通過Asp.Net Core的機密管理器。 機密管理器 在 ASP.NET Core ...
  • 新改進提供的Taurus Rpc 功能,可以簡化微服務間的調用,同時可以不用再手動輸出模塊名稱,或調用路徑,包括負載均衡,這一切,由框架實現並提供了。新的Taurus Rpc 功能,將使得服務間的調用,更加輕鬆、簡約、高效。 ...
  • 順序棧的介面程式 目錄順序棧的介面程式頭文件創建順序棧入棧出棧利用棧將10進位轉16進位數驗證 頭文件 #include <stdio.h> #include <stdbool.h> #include <stdlib.h> 創建順序棧 // 指的是順序棧中的元素的數據類型,用戶可以根據需要進行修改 ...
  • 前言 整理這個官方翻譯的系列,原因是網上大部分的 tomcat 版本比較舊,此版本為 v11 最新的版本。 開源項目 從零手寫實現 tomcat minicat 別稱【嗅虎】心有猛虎,輕嗅薔薇。 系列文章 web server apache tomcat11-01-官方文檔入門介紹 web serv ...
  • C總結與剖析:關鍵字篇 -- <<C語言深度解剖>> 目錄C總結與剖析:關鍵字篇 -- <<C語言深度解剖>>程式的本質:二進位文件變數1.變數:記憶體上的某個位置開闢的空間2.變數的初始化3.為什麼要有變數4.局部變數與全局變數5.變數的大小由類型決定6.任何一個變數,記憶體賦值都是從低地址開始往高地 ...
  • 如果讓你來做一個有狀態流式應用的故障恢復,你會如何來做呢? 單機和多機會遇到什麼不同的問題? Flink Checkpoint 是做什麼用的?原理是什麼? ...
  • C++ 多級繼承 多級繼承是一種面向對象編程(OOP)特性,允許一個類從多個基類繼承屬性和方法。它使代碼更易於組織和維護,並促進代碼重用。 多級繼承的語法 在 C++ 中,使用 : 符號來指定繼承關係。多級繼承的語法如下: class DerivedClass : public BaseClass1 ...
  • 前言 什麼是SpringCloud? Spring Cloud 是一系列框架的有序集合,它利用 Spring Boot 的開發便利性簡化了分散式系統的開發,比如服務註冊、服務發現、網關、路由、鏈路追蹤等。Spring Cloud 並不是重覆造輪子,而是將市面上開發得比較好的模塊集成進去,進行封裝,從 ...
  • class_template 類模板和函數模板的定義和使用類似,我們已經進行了介紹。有時,有兩個或多個類,其功能是相同的,僅僅是數據類型不同。類模板用於實現類所需數據的類型參數化 template<class NameType, class AgeType> class Person { publi ...
  • 目錄system v IPC簡介共用記憶體需要用到的函數介面shmget函數--獲取對象IDshmat函數--獲得映射空間shmctl函數--釋放資源共用記憶體實現思路註意 system v IPC簡介 消息隊列、共用記憶體和信號量統稱為system v IPC(進程間通信機制),V是羅馬數字5,是UNI ...