CN111314226A - 一种可在zuul网关动态配置多协议下游服务转发的方法 - Google Patents
一种可在zuul网关动态配置多协议下游服务转发的方法 Download PDFInfo
- Publication number
- CN111314226A CN111314226A CN202010141276.7A CN202010141276A CN111314226A CN 111314226 A CN111314226 A CN 111314226A CN 202010141276 A CN202010141276 A CN 202010141276A CN 111314226 A CN111314226 A CN 111314226A
- Authority
- CN
- China
- Prior art keywords
- zuul
- route
- routing
- protocol
- strategy
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/02—Topology update or discovery
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
- H04L63/0227—Filtering policies
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/30—Network architectures or network communication protocols for network security for supporting lawful interception, monitoring or retaining of communications or communication related information
- H04L63/306—Network architectures or network communication protocols for network security for supporting lawful interception, monitoring or retaining of communications or communication related information intercepting packet switched data communications, e.g. Web, Internet or IMS communications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/133—Protocols for remote procedure calls [RPC]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Technology Law (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明涉及一种可在zuul网关动态配置多协议下游服务转发的方法。该方法:首先,通过自定义路由定位器,改变拦截分发服务根路径,同时修改刷新策略以及路由的加载初始化和刷新策略;而后,通过自定义过滤器,实现包括签名、路由请求包装、协议分发控制、异常处理、结果处理对应的操作。本发明通过对zuul的深度扩展,提供了zuul动态转发下游协议的支持,包括如何进行数据库配置和代码改造的说明,极大地简化了我们实际开发中所遇到的问题。
Description
技术领域
本发明涉及微服务系统技术领域,尤其涉及一种可在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)定义转发的前置路由器
所述进行接收已重新包装的请求,当前主要工作为识别下游转发体和转发服务。因在路由表中已定义了下游接口的类型,所以可准确识别到当前请求路由的转发类型。如识别到rpc,在策略上下文中找对应的转发控制处理器。若能找到则调用对应相应的策略进行处理,若无法找到则抛出异常。
(3)定义策略过滤器
通过定义策略接口,并根据系统复杂性进行相应类型的下游服务协议的策略实现。定义一个上下文用于获取所有的实现类,提供方法用于获取指定策略,。所述此处用到的是spring的依赖注入,只需bean的名字和数据库配置的一样即可取到实现类,如没有取到则抛出异常。
(4)相应的结果处理过滤器
定义post过滤器和error过滤器进行结果处理和异常处理,日志记录等。
以上是本发明的较佳实施例,凡依本发明技术方案所作的改变,所产生的功能作用未超出本发明技术方案的范围时,均属于本发明的保护范围。
Claims (2)
1.一种可在zuul网关动态配置多协议下游服务转发的方法,其特征在于,首先,通过自定义路由定位器,改变拦截分发服务根路径,同时修改刷新策略以及路由的加载初始化和刷新策略;而后,通过自定义过滤器,实现包括签名、路由请求包装、协议分发控制、异常处理、结果处理对应的操作。
2.根据权利要求1所述的一种可在zuul网关动态配置多协议下游服务转发的方法,其特征在于,该方法实现步骤如下:
步骤S1、设计数据库:
进行数据库中路由表、参数表的设计,实现包括路由信息、下游服务信息的配置;
步骤S2、改变拦截分发服务根路径,同时修改刷新策略以及路由的加载初始化和刷新策略;
S21、改写拦截分发服务根路径:将zuul的servlet扫描根路径/zuul修改为/;
S22、改写获取路由的接口:自定义路由加载器,覆盖zuul默认的从配合文件读取改为数据库读取的操作,从而实现将zuul改为从数据库中读取在路由表和参数表中配置好的路由信息,并返回zuul要求的实体格式,初始加载所有路由表配置的路由,缓存在内存中;
S23、改写路由匹配规则:重写zuul匹配寻找路由方法为拦截请求参数中的action参数,与缓存的路由表匹配找到对应的路由实体;
步骤S3、自定义过滤器:
通过自定义签名过滤器、前置路由器、策略过滤器、相应的结果处理过滤器,实现重复攻击网关过滤、转发控制处理器的识别、下游服务协议的选择以及结果、异常的处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010141276.7A CN111314226A (zh) | 2020-03-04 | 2020-03-04 | 一种可在zuul网关动态配置多协议下游服务转发的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010141276.7A CN111314226A (zh) | 2020-03-04 | 2020-03-04 | 一种可在zuul网关动态配置多协议下游服务转发的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111314226A true CN111314226A (zh) | 2020-06-19 |
Family
ID=71148085
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010141276.7A Pending CN111314226A (zh) | 2020-03-04 | 2020-03-04 | 一种可在zuul网关动态配置多协议下游服务转发的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111314226A (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111884917A (zh) * | 2020-07-28 | 2020-11-03 | 浪潮云信息技术股份公司 | 基于微服务的网关系统及网关动态路由方法 |
CN111901238A (zh) * | 2020-07-09 | 2020-11-06 | 中移(杭州)信息技术有限公司 | 动态路由服务方法、装置、电子设备及存储介质 |
CN112039780A (zh) * | 2020-09-01 | 2020-12-04 | 浪潮云信息技术股份公司 | 基于Zuul的持久化动态路由实现方法、电子设备及存储介质 |
CN112636992A (zh) * | 2021-03-10 | 2021-04-09 | 腾讯科技(深圳)有限公司 | 一种动态路由方法、装置、设备及存储介质 |
CN114205191A (zh) * | 2021-12-13 | 2022-03-18 | 四川启睿克科技有限公司 | 一种api网关系统及运行方法 |
CN114567586A (zh) * | 2022-03-04 | 2022-05-31 | 中国农业银行股份有限公司 | 网关路由动态添加方法、装置、电子设备以及存储介质 |
CN116186079A (zh) * | 2023-04-27 | 2023-05-30 | 江苏博云科技股份有限公司 | 一种sql批量查询自动改写和优化方法 |
CN117724869A (zh) * | 2023-12-19 | 2024-03-19 | 成都九天智信科技有限公司 | 一种基于web的自定义的系统流程编辑器 |
-
2020
- 2020-03-04 CN CN202010141276.7A patent/CN111314226A/zh active Pending
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111901238A (zh) * | 2020-07-09 | 2020-11-06 | 中移(杭州)信息技术有限公司 | 动态路由服务方法、装置、电子设备及存储介质 |
CN111884917A (zh) * | 2020-07-28 | 2020-11-03 | 浪潮云信息技术股份公司 | 基于微服务的网关系统及网关动态路由方法 |
CN112039780A (zh) * | 2020-09-01 | 2020-12-04 | 浪潮云信息技术股份公司 | 基于Zuul的持久化动态路由实现方法、电子设备及存储介质 |
CN112636992A (zh) * | 2021-03-10 | 2021-04-09 | 腾讯科技(深圳)有限公司 | 一种动态路由方法、装置、设备及存储介质 |
CN114205191A (zh) * | 2021-12-13 | 2022-03-18 | 四川启睿克科技有限公司 | 一种api网关系统及运行方法 |
CN114205191B (zh) * | 2021-12-13 | 2023-09-15 | 四川启睿克科技有限公司 | 一种api网关系统及运行方法 |
CN114567586A (zh) * | 2022-03-04 | 2022-05-31 | 中国农业银行股份有限公司 | 网关路由动态添加方法、装置、电子设备以及存储介质 |
CN116186079A (zh) * | 2023-04-27 | 2023-05-30 | 江苏博云科技股份有限公司 | 一种sql批量查询自动改写和优化方法 |
CN116186079B (zh) * | 2023-04-27 | 2023-07-04 | 江苏博云科技股份有限公司 | 一种sql批量查询自动改写和优化方法 |
CN117724869A (zh) * | 2023-12-19 | 2024-03-19 | 成都九天智信科技有限公司 | 一种基于web的自定义的系统流程编辑器 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111314226A (zh) | 一种可在zuul网关动态配置多协议下游服务转发的方法 | |
AU761247B2 (en) | Object gateway | |
US9742668B1 (en) | Packet forwarding path programming using a high-level description language | |
US9954873B2 (en) | Mobile device-based intrusion prevention system | |
CN102763368B (zh) | 用于跨站点伪造保护的方法和系统 | |
US8590034B2 (en) | Method, system and apparatus for providing stateful information redaction | |
US8332948B2 (en) | Intelligent integrated network security device | |
US11968178B2 (en) | Reduction and acceleration of a deterministic finite automaton | |
CN107070674B (zh) | 处理数据包的方法和网络装置 | |
US20060123479A1 (en) | Network and application attack protection based on application layer message inspection | |
US20090055930A1 (en) | Content Security by Network Switch | |
US8904000B2 (en) | Provision of services over a common delivery platform such as a mobile telephony network | |
GB2422218A (en) | A system for providing services | |
WO2001097451A2 (en) | System, method and computer program product for reading, correlating, processing, categorizing and aggregating events of any type | |
CN110035006A (zh) | 转发平面重置的单独网络设备 | |
US20060161616A1 (en) | Provision of services over a common delivery platform such as a mobile telephony network | |
US11818099B2 (en) | Efficient matching of feature-rich security policy with dynamic content using user group matching | |
US20030115253A1 (en) | Framework for service personalization | |
Cheng et al. | Design and Implementation of TLS Traffic Packet Filtering Technology Based on Netfilter Framework | |
US20200145379A1 (en) | Efficient matching of feature-rich security policy with dynamic content using incremental precondition changes | |
US10965647B2 (en) | Efficient matching of feature-rich security policy with dynamic content | |
US7475096B2 (en) | System for distributed communications | |
Jiang et al. | High-speed discrete content Sensitive pattern match algorithm for deep packet filtering | |
CN118075033A (zh) | 一种网络安全防护方法及系统 | |
Zaheer | Eztrust: Network Independent Perimeterization for Microservices |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200619 |