【動態路由】系統Web URL資源整合系列(后端技術實現)【apisix實現】

需求說明

軟件功能需求:反向代理功能(描述:apollo、eureka控、apisix、sentinel、普米、kibana、timetask、grafana、hbase、skywalking-ui、pinpoint、cmak界面、kafka-map、nacos、gateway、elasticsearch、 oa-portal 業務應用等多個web資源等只能通過有限個代理地址訪問),不考慮SSO。

軟件質量需求:滿足基本的性能要求:頁面響應耗時:3s內(頁面本身不走代理就慢的情況除外)

約束條件:內部web資源權限控制的原因,可申請的web資源數量有限制,成百上千的web應用地址只能通過有限個(10個以內)代理地址訪問

原型界面【Axuare】

原型界面視頻講解

系統URL整合系列視頻二(界面原型)【axure原型界面】_系統url整合系列視頻二(界面原型)-配套文檔-CSDN博客

原型設計稿下載

https://download.csdn.net/download/jjk_02027/90335900

前端代碼實現【d3js】

前端代碼視頻講解

系統URL整合系列視頻三(前端代碼實現) 【d3js版本】-CSDN博客

前端代碼下載

https://download.csdn.net/download/jjk_02027/90335919

后端技術實現【apisix實現】

配置基于請求頭的路由

你可以根據請求中的 HTTP 頭來決定路由到哪個后端服務。例如,假設你有一個請求頭?X-Service-Type,根據這個頭部的值來決定轉發到不同的后端服務。

首先,確保你已經安裝并配置了 APISIX。

然后,你可以使用 APISIX Dashboard 或者 APISIX Admin API 來添加路由規則。以下是通過 APISIX Admin API 添加路由的示例:

curl http://127.0.0.1:9080/apisix/admin/routes/1 -X PUT -d '
{"uri": "/*","hosts": {"example.com": "v1"},"upstream": {"type": "roundrobin","nodes": {"httpbin.org:80": 1}},"plugins": {"serverless-pre-function": {"functions": ["function() if ngx.var.http_x_service_type == 'serviceA' then return {upstream = {nodes = {'http://serviceA:80'}}} end return nil end"],"phase": "rewrite"}}
}
'

apisix dashboard對應界面

配置基于請求參數的路由

類似地,如果你需要根據查詢參數來決定路由,可以修改?serverless-pre-function?中的邏輯

curl http://127.0.0.1:9080/apisix/admin/routes/1 -X PUT -d '
{"uri": "/*","hosts": {"example.com": "v1"},"upstream": {"type": "roundrobin","nodes": {"httpbin.org:80": 1}},"plugins": {"serverless-pre-function": {"functions": ["function() if ngx.req.get_uri_args()['paramName'] == 'value' then return {upstream = {nodes = {'http://serviceB:80'}}} end return nil end"],"phase": "rewrite"}}
}
'

在這個例子中,如果請求包含查詢參數?paramName=value,則請求會被轉發到?http://serviceB:80。否則,它會按照默認的上游設置處理。

apisix dashboard對應界面

總結

通過使用 APISIX 的?serverless-pre-function?插件和 Lua 腳本,你可以非常靈活地根據請求的各種屬性(如 HTTP 頭、查詢參數等)來決定如何路由請求到不同的后端服務。這種方法提供了極高的靈活性和動態性,非常適合需要復雜路由邏輯的場景。

附件一:apisix官方網站

Apache APISIX? -- Cloud-Native API Gateway

附件二:APISIX 安裝指南

https://apisix.incubator.apache.org/zh/docs/apisix/3.9/installation-guide/

附件三:?Apisix路由功能

APISIX的路由功能是其核心組件之一,主要用于定義規則來匹配客戶端請求,并根據匹配結果將請求轉發到指定的上游服務??。APISIX通過路由功能實現了動態、實時的流量管理,支持多種協議和插件擴展,適用于云原生環境中的微服務架構。

APISIX路由功能的具體實現方式

APISIX的路由功能通過以下步驟實現:

  1. ?客戶端向APISIX發起請求?:客戶端向APISIX發送請求,請求中包含各種信息,如URL、方法、請求頭等。
  2. ?APISIX根據預設的路由規則匹配請求?:APISIX根據請求的URL、方法、參數等條件進行匹配。匹配規則可以基于路徑、方法、主機名、請求參數等多種維度?。
  3. ?轉發請求到上游服務?:匹配成功后,APISIX將請求轉發到相應的上游服務。上游服務是一組后端服務節點,APISIX支持對這些節點進行負載均衡和健康檢查?。

APISIX路由功能的優勢和特點

  1. ?高性能和可擴展性?:APISIX作為開源API網關,具有高性能和可擴展性,能夠處理高并發請求?。
  2. ?多協議支持?:支持HTTP(S)、HTTP2、Dubbo、QUIC、MQTT、TCP/UDP等多種協議,適用于不同的應用場景?。
  3. ?插件機制?:通過插件機制提供豐富的功能,如身份驗證、限流、監控、日志記錄等。插件可以在不同的請求階段執行,且可以動態加載和熱更新,無需重啟服務?。
  4. ?動態路由和熱加載?:APISIX支持動態路由和熱加載配置,避免了配置后的reload操作,提高了系統的靈活性和維護性?。
  5. ?運維友好?:支持與多種監控和日志系統集成,如Prometheus、Apache SkyWalking等,便于運維和問題排查?。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/70314.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/70314.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/70314.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Vue2 中使用 UniApp 時,生命周期鉤子函數總結

在 Vue2 中使用 UniApp 時,生命周期鉤子函數是一個重要的概念。它允許開發者在特定的時間點運行代碼,管理組件的生命周期。以下是 Vue2 中 UniApp 常用的生命周期鉤子函數總結: 1. beforeCreate 說明: 組件實例剛被創建,此時數據…

在Ubuntu24.04上安裝Stable-Diffusion1.10.1版本

之前曾介紹過在Ubuntu22.04上安裝Stable-Diffusion: 在Ubuntu22.04上部署Stable Diffusion_ubuntu stable dif-CSDN博客 這個安裝我們使用conda python虛擬機。這次我們介紹的是在Ubuntu24.04安裝Stable-Diffusion的最新版本V1.10.1(截止到今天最新版&…

IIS asp.net權限不足

檢查應用程序池的權限 IIS 應用程序池默認使用一個低權限賬戶(如 IIS_IUSRS),這可能導致無法刪除某些文件或目錄。可以通過以下方式提升權限: 方法 1:修改應用程序池的標識 打開 IIS 管理器。 在左側導航樹中&#x…

MongoDB 常用命令速查表

以下是一份 MongoDB 常用命令速查表&#xff0c;涵蓋數據庫、集合、文檔的增刪改查、索引管理、聚合操作等場景&#xff1a; 1. 數據庫操作 命令說明show dbs查看所有數據庫use <db-name>切換/創建數據庫&#xff08;需插入數據后才會顯示&#xff09;db.dropDatabase()…

23種設計模式 - 模板方法

模式定義 模板方法模式&#xff08;Template Method Pattern&#xff09;是一種行為型設計模式&#xff0c;它通過定義算法的骨架&#xff08;固定步驟&#xff09;&#xff0c;允許子類在不改變算法結構的情況下重寫特定步驟。該模式的核心是將通用流程封裝在基類中&#xff…

使用Java爬蟲獲取1688自定義API操作接口

在電商領域&#xff0c;1688作為國內領先的B2B平臺&#xff0c;提供了豐富的API接口&#xff0c;允許開發者獲取商品信息、店鋪信息等。其中&#xff0c;custom 接口允許開發者進行自定義操作&#xff0c;獲取特定的數據。本文將詳細介紹如何使用Java爬蟲技術&#xff0c;通過1…

MVTEC數據集筆記

前言 網上的博客只有從論文里摘出的介紹&#xff0c;沒有數據集文件詳細的樣子&#xff0c;下載數據集之后&#xff0c;對數據集具體的構成做一個補充的筆記。 下載鏈接&#xff1a;https://ai-studio-online.bj.bcebos.com/v1/7d4a3cf558254bbaaf4778ea336cb14ed8bbb96a7f2a…

記一次滲透測試實戰之Sightless

信息收集 端口掃描 使用nmap進行端口探測&#xff0c;發現存在21、22、80端口開放。 FTP未授權訪問 嘗試21端口未授權訪問。 目錄爆破 使用工具進行爆破目錄。 未發現有用的路徑&#xff0c;接著嘗試訪問80端口。 Web網站 訪問主頁 發現存在一個數據庫調用頁面 右上角有一…

前端監控的具體實現細節

&#x1f90d; 前端開發工程師、技術日更博主、已過CET6 &#x1f368; 阿珊和她的貓_CSDN博客專家、23年度博客之星前端領域TOP1 &#x1f560; 牛客高級專題作者、打造專欄《前端面試必備》 、《2024面試高頻手撕題》 &#x1f35a; 藍橋云課簽約作者、上架課程《Vue.js 和 E…

【網絡安全 | 漏洞挖掘】我如何通過Cookie Manipulation發現主域上的關鍵PII?

未經許可,不得轉載。 文章目錄 正文正文 在分析 Example.com 的認證機制時,我注意到一個特定的 cookie,USER_ID,包含了一個具有預測性的會話標識符,其格式為: USER_ID="VYCVCDs-TZBI:XXXX-random-data"其中,XXXX 是由四個大寫字母組成的部分,我使用 Burp S…

PostgreSQL 的崛起與無服務器數據庫的新時代

根據 2023 年 Stack Overflow 開發人員調查 &#xff0c;PostgreSQL 超越 MySQL 成為最受開發人員推崇和期望的數據庫系統&#xff0c;這是一個重要的里程碑。這一轉變反映了開發人員社區對 PostgreSQL 強大的功能集、可靠性和可擴展性的日益認同。 這種不斷變化的格局激發了數…

計算機視覺+Numpy和OpenCV入門

Day 1&#xff1a;Python基礎Numpy和OpenCV入門 Python基礎 變量與數據類型、函數與類的定義、列表與字典操作文件讀寫操作&#xff08;讀寫圖像和數據文件&#xff09; 練習任務&#xff1a;寫一個Python腳本&#xff0c;讀取一個圖像并保存灰度圖像。 import cv2 img cv2.im…

cesium基礎設置

cesium官網下載&#xff1a;https://cesium.com/downloads/ 1.安裝cesium 選擇下載到本地使用&#xff0c;或者通過npm下載到項目中 2.代碼書寫 &#xff08;1&#xff09;創建容器 <div id"cesiumContainer" style"width: 100%; height: 100%"><…

C++ 實踐擴展(Qt Creator 聯動 Visual Studio 2022)

? 這里我們將在 VS 上實現 QT 編程&#xff0c;實現如下&#xff1a; 一、Vs 2022 配置&#xff08;若已安裝&#xff0c;可直接跳過&#xff09; 點擊鏈接&#xff1a;?????Visual Studio 2022 我們先去 Vs 官網下載&#xff0c;如下&#xff1a; 等待程序安裝完成之…

《解鎖自然語言處理:讓公眾正確擁抱AI語言魔法》

在當今數字化浪潮中&#xff0c;自然語言處理&#xff08;NLP&#xff09;技術作為人工智能領域的璀璨明珠&#xff0c;正以驚人的速度融入我們的生活。從智能語音助手到智能客服&#xff0c;從機器翻譯到內容創作輔助&#xff0c;NLP技術無處不在。然而&#xff0c;如同任何強…

uniapp webview嵌入外部h5網頁后的消息通知

最近開發了個oa系統&#xff0c;pc端的表單使用form-create開發&#xff0c;form-create 是一個可以通過 JSON 生成具有動態渲染、數據收集、驗證和提交功能的表單生成組件。移動端使用uniapp開發&#xff0c;但是因為form-create移動端只支持vant&#xff0c;不支持uniapp。官…

Python在網絡安全中的應用 python與網絡安全

前言 網絡安全是保護網絡、系統和程序免受數字攻擊的做法。據估計&#xff0c; 2019 年該行業價值 1120 億美元&#xff0c;到2021 年估計有 350 萬個職位空缺。 許多編程語言用于執行與網絡安全相關的日常任務&#xff0c;但其中一種已成為行業標準&#xff1a;Python&#…

設計模式15:中介者模式

系列總鏈接&#xff1a;《大話設計模式》學習記錄_net 大話設計-CSDN博客 1.概述 中介者模式&#xff08;Mediator Pattern&#xff09;是一種行為設計模式&#xff0c;旨在通過一個中介對象來封裝一系列對象之間的交互方式&#xff0c;從而減少這些對象間的直接依賴。在該模式…

golang常用庫之-swaggo/swag根據注釋生成接口文檔

golang常用庫之-swaggo/swag庫根據注釋生成接口文檔 什么是swaggo/swag github&#xff1a;https://github.com/swaggo/swag 參考文檔&#xff1a;https://golang.halfiisland.com/community/pkgs/web/swag.html#%E4%BD%BF%E7%94%A8 swaggo/swag 是 Swagger API 2.0 在 go 語…

爬取網站內容轉為markdown 和 html(通常模式)

我們遇到一些自己喜歡內容&#xff0c;想保存下來&#xff0c;手動復制粘貼很麻煩&#xff0c;我們使用 python 來爬取這些內容。 一、代碼 downlod.py import os import requests from bs4 import BeautifulSoup from urllib.parse import urljoin# 目標網頁&#xff08;可…