本发明专利技术涉及一种可在zuul网关动态配置多协议下游服务转发的方法。该方法:首先,通过自定义路由定位器,改变拦截分发服务根路径,同时修改刷新策略以及路由的加载初始化和刷新策略;而后,通过自定义过滤器,实现包括签名、路由请求包装、协议分发控制、异常处理、结果处理对应的操作。本发明专利技术通过对zuul的深度扩展,提供了zuul动态转发下游协议的支持,包括如何进行数据库配置和代码改造的说明,极大地简化了我们实际开发中所遇到的问题。
A method of dynamically configuring multi protocol downstream service forwarding in zuul gateway
【技术实现步骤摘要】
一种可在zuul网关动态配置多协议下游服务转发的方法
本专利技术涉及微服务系统
,尤其涉及一种可在zuul网关动态配置多协议下游服务转发的方法。
技术介绍
通常使用zuul网关时,可以很方便帮我们把请求根据路由转发到下游springclound服务上,但部分项目可能有接口为rpc调用,则会将rpc接口封装一层,暴露出http接口再进行转发,这样操作无疑会带来更大工作量,同时也使得微服务变的笨重。本专利技术将对网关进行改造,使得可动态的根据设定的配置,进行对应下游接口的协议服务转发而不需要进行其他业务代码方面改造。
技术实现思路
本专利技术的目的在于提供一种可在zuul网关动态配置多协议下游服务转发的方法,旨在提高微服务系统网关动态配置转发的灵活性。为实现上述目的,本专利技术的技术方案是:一种可在zuul网关动态配置多协议下游服务转发的方法,首先,通过自定义路由定位器,改变拦截分发服务根路径,同时修改刷新策略以及路由的加载初始化和刷新策略;而后,通过自定义过滤器,实现包括签名、路由请求包装、协议分发控制、异常处理、结果处理对应的操作。在本专利技术一实施例中,该方法实现步骤如下:步骤S1、设计数据库:进行数据库中路由表、参数表的设计,实现包括路由信息、下游服务信息的配置;步骤S2、改变拦截分发服务根路径,同时修改刷新策略以及路由的加载初始化和刷新策略;S21、改写拦截分发服务根路径:将zuul的servlet扫描根路径/zuul修改为/;S22、改写获取路由的接口:自定义路由加载器,覆盖zuul默认的从配合文件读取改为数据库读取的操作,从而实现将zuul改为从数据库中读取在路由表和参数表中配置好的路由信息,并返回zuul要求的实体格式,初始加载所有路由表配置的路由,缓存在内存中;S23、改写路由匹配规则:重写zuul匹配寻找路由方法为拦截请求参数中的action参数,与缓存的路由表匹配找到对应的路由实体;步骤S3、自定义过滤器:通过自定义签名过滤器、前置路由器、策略过滤器、相应的结果处理过滤器,实现重复攻击网关过滤、转发控制处理器的识别、下游服务协议的选择以及结果、异常的处理。相较于现有技术,本专利技术具有以下有益效果:本专利技术方法不干扰正常业务代码的情况下面,做到了最简化配置。通过该方案,我们可以进行接口的参数转换,协议的转换以及协议配置。这样既能保证zuul的高效性,又不需要对下游服务进行改造,可以更好的让zuul为我们服务;本专利技术方法使得在用户在使用zuul时,可以更加方便的定义下游服务的协议类型;有些旧项目使用的协议可以不需要二次包装成springclound服务暴露出来,只需要进行简单的数据库配置和服务转发操作;这样可以很好的兼容新旧服务,对于项目上也可以节省时间专注于业务。附图说明图1为本专利技术方法流程示意图。具体实施方式下面结合附图,对本专利技术的技术方案进行具体说明。本专利技术提供了一种可在zuul网关动态配置多协议下游服务转发的方法,首先,通过自定义路由定位器,改变拦截分发服务根路径,同时修改刷新策略以及路由的加载初始化和刷新策略;而后,通过自定义过滤器,实现包括签名、路由请求包装、协议分发控制、异常处理、结果处理对应的操作。该方法实现步骤如下:步骤S1、设计数据库:进行数据库中路由表、参数表的设计,实现包括路由信息、下游服务信息的配置;步骤S2、改变拦截分发服务根路径,同时修改刷新策略以及路由的加载初始化和刷新策略;S21、改写拦截分发服务根路径:将zuul的servlet扫描根路径/zuul修改为/;S22、改写获取路由的接口:自定义路由加载器,覆盖zuul默认的从配合文件读取改为数据库读取的操作,从而实现将zuul改为从数据库中读取在路由表和参数表中配置好的路由信息,并返回zuul要求的实体格式,初始加载所有路由表配置的路由,缓存在内存中;S23、改写路由匹配规则:重写zuul匹配寻找路由方法为拦截请求参数中的action参数,与缓存的路由表匹配找到对应的路由实体;步骤S3、自定义过滤器:通过自定义签名过滤器、前置路由器、策略过滤器、相应的结果处理过滤器,实现重复攻击网关过滤、转发控制处理器的识别、下游服务协议的选择以及结果、异常的处理。以下为本专利技术一具体实例。如图1所示,本专利技术的一种可在网关动态配置多协议下游服务转发的方法,实现如下:1、数据库设计(1)设计路由表路由表关键字段为:路由标识、请求路劲、下游服务名、下游方法请求方式、下游接口类型。(2)设计参数表主要用于接口参数替换,比如占位符之类的。关键字段为路由表id、参数类型、是否替换。2、继承zuul自带的简单路由定位器实现以及实现刷新路由定位器接口。(1)改写拦截请求的根路径。具体操作为修改zuul的servlet扫描根路径/zuul为/,这样所有请求都会被zuul代理进行处理而不会丢给spring的路由匹配器进行处理。因zuul本身默认的拦截只会拦截已配置的路由规则,但在实际开发中,并不会将规则直接暴露,而是会拦截所有请求并进行处理。(2)改写获取路由的接口。具体操作为自定义路由加载器,实现刷新路由定位器中的加载方法和刷新路由方法,覆盖zuul默认的从配合文件读取改为数据库读取的操作。通过这样实现将其改为从数据库中读取我们在路由表和参数表中配置好的路由信息,并返回zuul要求的实体格式,进行初始加载所有路由表配置的路由,缓存在内存中。通过这些操作zuul的上下文中就会缓存一份路由表配置用于匹配我们的http请求路径。(3)改写路由匹配规则。zuul默认匹配规则为全匹配,既请求的路径与配置中的路由表中的有相同则进行转发。这样我们将其改成我们自定义的匹配规则,重写zuul默认匹配寻找路由方法为拦截我们请求参数中的action参数与上下文缓存的路由表匹配找到对应的路由实体。如果找不到与之匹配的则抛出异常。3、自定义过滤器进行相关操作(1)签名过滤器通过签名过滤器,重复攻击网关等过滤操作。签名过滤器可根据情况进行。定义get/post请求包装类。通过定义get/post的请求包装类,从而进行请求的封装。所述通过签名的请求进入到这一层,是指进行参数解析后,再从路由缓存中取到对应的路由实体配置。因为get/post的参数体来源不一致,尤其post请求,java若请求参数被读取后io流将关闭。所以为能多次读取该请求而进行相应的重写操作。此时占位符替换和参数替换的操作也很关键,若请求路径有占位符或需要替换参数,所述可从参数表找出并进行相应的替换操作,当然所有操作都是基于路由体存在;若从缓存中没有取到当前请求的路由配置,则将抛出异常。(2)定义转发的前置路由器所述进行接收已重新包装的请求,当前主要工作为识别下游转发体和转发服务。因在路由表中已定义了下游接口的本文档来自技高网...
【技术保护点】
1.一种可在zuul网关动态配置多协议下游服务转发的方法,其特征在于,首先,通过自定义路由定位器,改变拦截分发服务根路径,同时修改刷新策略以及路由的加载初始化和刷新策略;而后,通过自定义过滤器,实现包括签名、路由请求包装、协议分发控制、异常处理、结果处理对应的操作。/n
【技术特征摘要】
1.一种可在zuul网关动态配置多协议下游服务转发的方法,其特征在于,首先,通过自定义路由定位器,改变拦截分发服务根路径,同时修改刷新策略以及路由的加载初始化和刷新策略;而后,通过自定义过滤器,实现包括签名、路由请求包装、协议分发控制、异常处理、结果处理对应的操作。
2.根据权利要求1所述的一种可在zuul网关动态配置多协议下游服务转发的方法,其特征在于,该方法实现步骤如下:
步骤S1、设计数据库:
进行数据库中路由表、参数表的设计,实现包括路由信息、下游服务信息的配置;
步骤S2、改变拦截分发服务根路径,同时修改刷新策略以及路由的加载初始化和刷新策略;
S21、改写拦截分发服务根路径...
【专利技术属性】
技术研发人员:李海峰,肖金华,江琳,
申请(专利权)人:厦门靠谱云股份有限公司,
类型:发明
国别省市:福建;35
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。