当前位置: 首页 > news >正文

【动态路由】系统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.mrgr.cn/news/91557.html

相关文章:

  • Jmeter断言、关联、录制脚本
  • Navicat16安装教程(附安装包)2025最新版详细图文安装教程
  • 【动态路由】系统Web URL资源整合系列(后端技术实现)【nodejs实现】
  • 小胡说技书博客分类(部分目录):服务治理、数据治理与安全治理对比表格
  • 【Linux】命令操作、打jar包、项目部署
  • 如何简单的去使用jconsloe 查看线程 (多线程编程篇1)
  • 某大型业务系统技术栈介绍【应对面试】
  • 轻松搭建本地大语言模型(二)Open-WebUI安装与使用
  • 浏览器报错:无法访问此网站 无法找到xxx.xxx.net的DNS地址。正在诊断该问题。尝试运行Windows网络诊断。DNS_PROBE_STARTED
  • 23. AI-大语言模型-DeepSeek赋能开发-Spring AI集成
  • 二、几何体BufferGeometry顶点笔记
  • docker 部署JAR
  • java框架--Mybatis 1
  • Java和SQL测试、性能监控中常用工具
  • 代码随想录算法【Day49】
  • 【SQL】SQL多表查询
  • Django 美化使用ModelForm的输入框
  • java听书项目
  • SolidWorks速成教程P3-7【零件 | 第七节】——3D设计打印手机支架+草图文本草图图片材质与质量属性测量
  • uni-app发起网络请求的三种方式