一种嵌入式网关路由处理方法、系统和设备与流程
本技术属于网关路由,尤其涉及一种嵌入式网关路由处理方法、系统和设备。
背景技术:
1、随着微服务与前后端分离架构在web应用中的广泛普及,api网关已成为后端系统事实上的统一流量入口,通常负责路由分发、协议适配、统一鉴权、限流熔断、日志采集等公共职责。
2、目前,业界主流的api网关实现方案多采用通用型、市场化的独立网关中间件,如nginx、kong、envoy、springcloud gateway等,该类网关中间件一般以独立进程或独立服务的形式部署,通过领域专用语言(dsl)或二进制插件来装配请求处理链,在下游转发过程中执行内容改写、鉴权等操作。此类方案与业务应用的语言运行时相互隔离,因此在部署时需要额外部署组件、维护独立的日志与缓存驱动。在实际应用中,请求在到达业务应用之前,必须先经由外部网关进程进行转译与转发处理,导致整个调用链路中缺少面向业务应用的统一抽象层,由此,难以直接复用业务应用框架内建的服务发现、配置缓存、限流器及中间件体系等能力,容易造成配置冗余、策略不一致以及框架内上下文信息丢失等问题,从而降低了分布式 web 后端在开发、部署及运行维护阶段的整体效率与稳定性。
3、因此,亟需一种能够将网关能力嵌入业务应用生命周期、减少独立部署与维护成本。
技术实现思路
1、本技术实施例提供了一种嵌入式网关路由处理方法、系统和设备,可以解决上述现有技术问题之一。
2、第一方面,本技术实施例提供了一种嵌入式网关路由处理方法,包括:
3、构建网关组件并生成声明式配置文件,将所述网关组件嵌入web应用框架的应用生命周期;
4、获取所述声明式配置文件的路由声明集合,为所述路由声明集合中的各路由注册应用路由;
5、通过所述网关组件,以客户端发起代理请求,或以后端应用发起调用请求。进一步的,所述网关组件包括服务注册装配模块、声明式配置解析与缓存模块、代理请求控制模块和服务发现模块;
6、所述服务注册装配模块,与所述配置解析与缓存模块、所述代理请求控制模块及所述服务发现模块数据关联,用于协调各模块生效;
7、所述声明式配置解析与缓存模块,用于配置以及缓存声明式配置文件,所述声明式配置文件通过预设的读取接口向所述服务注册装配模块及服务发现接口提供;
8、所述代理请求控制模块,用于接收调用方的应用请求,并反查启动应用的路由声明以及依序进行请求调度,以临时客户端发起对所述启动应用的转发;
9、所述服务发现模块,用于接收调用方的服务发现请求,并向所述调用方返回被调用方的寻址信息及访问凭证。
10、进一步的,所述代理请求控制模块包括代理中间件链装配模块、请求体形态透传模块、按应用维度熔断隔离模块以及访问与错误日志模块;
11、所述代理中间件链装配模块,用于声明代理中间件并进行反射实例化,生成可调用对象,将所述可调用对象按需装配至客户端处理器堆栈;
12、所述请求体形态透传模块,用于根据应用请求的请求类型,分配相应的请求体透传策略;
13、所述按应用维度熔断隔离模块,用于将应用标识作为熔断隔离键,获取相应的熔断参数进行熔断检测;
14、所述访问与错误日志模块,用于将应用标识作为分流维度,独立分流访问日志与错误日志。
15、进一步的,所述为所述路由声明集合中的各路由注册应用路由,包括:
16、遍历所述路由声明集合,对每一条路由声明动态调用路由注册接口注册应用路由,每一所述应用路由以应用标识为键,并指向代理控制器;
17、为各所述应用路由关联受身份签名保护的服务发现接口;
18、每一路由声明均配置有应用标识、前缀路径模板、后端路径模板、代理中间件链、超时时长以及熔断参数,不同应用拥有不同的代理中间件链。
19、进一步的,所述以客户端发起代理请求,包括:
20、根据启动应用的应用标识,反查所述应用路由的路由声明,获得前缀路径模板、后端路径模板、代理中间件链、超时时长以及熔断参数;
21、查询启动应用是否存在熔断冷却键,若存在则返回错误状态,若不存在,则通过代理请求控制模块对所述代理中间件链进行反射实例化,并进行请求调度,以临时客户端发起对所述启动应用的转发。
22、进一步的,所述通过代理请求控制模块对所述代理中间件链进行反射实例化,并进行请求调度,以临时客户端发起对所述启动应用的转发,包括:
23、获取所述代理中间件链中各代理中间件的预定义配置项,并进行解析,提取类标识符及参数列表;
24、对所述类标识符反射构造中间件实例,将所述参数列表中的参数传递至所述中间件实例,并以应用请求的请求对象作为上下文,生成可调用对象;
25、将所述可调用对象按序添加至客户端处理器堆栈,形成客户端中间件管道;
26、将所述客户端中间件管道作为临时客户端,提交至请求体形态透传模块,选择相应的请求体透传策略,并基于所述超时时长发起代理请求;
27、若请求成功,则返回请求结果至调用方,若请求失败,则记录错误日志、更新熔断参数并返回网关错误状态。
28、进一步的,所述以后端应用发起调用请求,包括:
29、获取调用方的初始互信凭证,查询调用方的凭证缓存文件是否存在被调用方的有效条目;
30、若存在,则获取被调用方的寻址信息及访问凭证;
31、若不存在,则构建服务发现请求,并发送至所述服务发现模块,获得被调用方的寻址信息及访问凭证,并将寻址信息及访问凭证存储至所述凭证缓存文件;
32、基于所述寻址信息及所述访问凭证,通过国密签名互信子模块,生成被调用方的国密签名,并生成请求头向被调用方发起服务请求。
33、进一步的,所述国密签名互信子模块,用于基于应用标识、访问凭证以及时间戳,生成国密签名,所述国密签名作为身份标识注入代理请求或服务请求;
34、所述国密签名互信子模块在所述网关组件中作为一代理中间件接入代理中间件链,通过配置声明进行启用、禁用或执行顺序调整。
35、第二方面,本技术实施例提供了一种嵌入式网关路由分发系统,包括:
36、第一处理模块:构建网关组件并生成声明式配置文件,将所述网关组件嵌入web应用框架的应用生命周期;
37、第二处理模块:用于获取所述声明式配置文件的路由声明集合,为所述路由声明集合中的各路由注册应用路由;
38、第三处理模块:用于通过所述网关组件,以客户端发起代理请求,或以后端应用发起调用请求。
39、第三方面,本技术实施例提供了一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述嵌入式网关路由处理方法。
40、本技术实施例与现有技术相比存在的有益效果是:
41、本技术公开了一种嵌入式网关路由处理方法,通过将网关组件嵌入web应用框架的应用生命周期,而后根据所启动应用的应用标识反查其路由声明,进行请求调度,以执行客户端或后端应用的请求转发,由此,网关组件不作为独立进程运行,通过laravel的serviceprovider在应用启动阶段将其能力挂载至laravel的路由体系、中间件体系、缓存与限流器等。此外,采用声明式的、可动态编排的方法,进行代理中间件链装配,进而无需修改代码也可实现编排网关行为。同时,以国密sm3摘要算法在网关组件与后端应用之间设置互信通道,并将其作为一个可插拔的代理中间件承载身份签名,而后以规范化头部承载应用标识、时间戳与签名,保障安全性与可信性。
版权声明:本站专利文献数据主要来源于国家知识产权局等公开渠道,由 技术新讯 进行整理汇编。页面设计及数据汇编的著作权归本站所有。全部内容仅供个人学习、科研评估与技术交流参考,严禁用于任何商业用途(包括但不限于直接生产制造、技术转让、倒卖数据等)。
免责条款:专利技术具有时效性,本站不对资料的绝对准确性、完整性和可实施性提供任何明示或暗示的担保。因参考本站内容造成的直接或间接损失,本站不承担相关法律责任。若您认为本站内容有侵权问题,请及时提供权属证明与我们联系,本站将在核实后依法处理。反馈意见:yyfuon@163.com