需求說明
軟件功能需求:反向代理功能(描述: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的路由功能通過以下步驟實現:
- ?客戶端向APISIX發起請求?:客戶端向APISIX發送請求,請求中包含各種信息,如URL、方法、請求頭等。
- ?APISIX根據預設的路由規則匹配請求?:APISIX根據請求的URL、方法、參數等條件進行匹配。匹配規則可以基于路徑、方法、主機名、請求參數等多種維度?。
- ?轉發請求到上游服務?:匹配成功后,APISIX將請求轉發到相應的上游服務。上游服務是一組后端服務節點,APISIX支持對這些節點進行負載均衡和健康檢查?。
APISIX路由功能的優勢和特點
- ?高性能和可擴展性?:APISIX作為開源API網關,具有高性能和可擴展性,能夠處理高并發請求?。
- ?多協議支持?:支持HTTP(S)、HTTP2、Dubbo、QUIC、MQTT、TCP/UDP等多種協議,適用于不同的應用場景?。
- ?插件機制?:通過插件機制提供豐富的功能,如身份驗證、限流、監控、日志記錄等。插件可以在不同的請求階段執行,且可以動態加載和熱更新,無需重啟服務?。
- ?動態路由和熱加載?:APISIX支持動態路由和熱加載配置,避免了配置后的reload操作,提高了系統的靈活性和維護性?。
- ?運維友好?:支持與多種監控和日志系統集成,如Prometheus、Apache SkyWalking等,便于運維和問題排查?。