CN113595925A - 一种智能网关动态限流实现方法 - Google Patents
一种智能网关动态限流实现方法 Download PDFInfo
- Publication number
- CN113595925A CN113595925A CN202110769964.2A CN202110769964A CN113595925A CN 113595925 A CN113595925 A CN 113595925A CN 202110769964 A CN202110769964 A CN 202110769964A CN 113595925 A CN113595925 A CN 113595925A
- Authority
- CN
- China
- Prior art keywords
- intelligent gateway
- request
- current limiting
- cache
- gateway
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 59
- 238000013507 mapping Methods 0.000 claims abstract description 51
- 230000004044 response Effects 0.000 claims abstract description 25
- 230000007774 longterm Effects 0.000 claims abstract description 11
- 238000012795 verification Methods 0.000 claims abstract description 9
- 238000012545 processing Methods 0.000 claims abstract description 5
- 235000014510 cooky Nutrition 0.000 claims description 18
- 241000700189 Hystrix <Rodentia> Species 0.000 claims description 6
- 238000005516 engineering process Methods 0.000 claims description 6
- 230000008569 process Effects 0.000 claims description 5
- 238000004364 calculation method Methods 0.000 claims description 4
- 241000508269 Psidium Species 0.000 claims description 3
- 238000006243 chemical reaction Methods 0.000 claims description 3
- 238000002955 isolation Methods 0.000 claims description 3
- 238000007726 management method Methods 0.000 claims description 2
- 238000004891 communication Methods 0.000 abstract description 3
- 230000006870 function Effects 0.000 description 6
- 230000003993 interaction Effects 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 3
- 238000013475 authorization Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000015556 catabolic process Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002035 prolonged effect Effects 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/12—Avoiding congestion; Recovering from congestion
- H04L47/125—Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0803—Configuration setting
- H04L41/0813—Configuration setting characterised by the conditions triggering a change of settings
- H04L41/082—Configuration setting characterised by the conditions triggering a change of settings the condition being updates or upgrades of network functionality
-
- 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/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0428—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
-
- 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/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/0807—Network architectures or network communication protocols for network security for authentication of entities using tickets, e.g. Kerberos
-
- 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/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
- H04L67/5682—Policies or rules for updating, deleting or replacing the stored data
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种智能网关动态限流实现方法,包括:启动智能网关,接收到服务请求,缓存智能网关的配置信息加载至内存中;自动刷新内存缓存,同时将缓存过期时间重新计算;读取配置信息;进行黑白名单校验,进行登录校验和权限校验,登录成功,从长期缓存中获取请求体改写映射规则,执行请求体改写;进行智能网关分布式集群限流控制,配置网关的本地限流大小,当流量过大时返回限流响应码;进行本地熔断控制;转发服务请求至智能网关集群,处理请求,实现负载均衡。本发明部署架构简单,解耦数据库与网关,实现了个性化动态限流与熔断,提供一个分布式部署、高可用性、高并发能力的智能网关实现方法,增加通讯异常的容错率,扩大使用场景。
Description
技术领域
本发明内容涉及网关技术领域,尤其涉及一种智能网关动态限流实现方法。
背景技术
随着互联网的发展,网络访问流量越来越大,对服务的稳定性和可用性要求越来越高,高可用已经作为衡量一个服务性能的重要标准。
网关通常作为API的统一出入口,同时提供负载均衡、服务降级、限流、熔断等功能。虽然这些功能的存在能够降低后端服务宕机的风险,在后端服务宕机时也可以返回固定的内容,但是这些功能不能保证在后端服务宕机后继续提供稳定准确的输出,严重降低了用户体验。
网关是一个服务,是系统的唯一入口,它封装了系统内部架构,为客户端统一提供服务,在微服务架构中以微服务网关的身份存在,将外部与内部服务进行隔离,把用户的请求转发给后台服务,后台服务再把结果交给网关、向后台响应。
网关本身没有逻辑,能够承受的压力比后台服务大很多,但是现有技术方案中存在的问题包括:
(1)请求过多时用户等待时间变长,超出用户容量时网关无法继续提供可用服务;
(2)目前的高并发请求网关,与数据库交互压力大,即使通过缓存数据库信息也是短期缓存,无法长期脱离数据库运行,造成数据库频繁使用,稳定性低;
(3)目前的网关限流方案,无法实现对请求体的每个请求参数实现可调节的个性化动态限流。
因此需要解决上述技术中的问题,改进技术方案,从而达到提高系统和服务的可用性的效果。
发明内容
本发明内容所要解决的技术问题是针对背景技术中所涉及到的缺陷,提供一种智能网关动态限流实现方法,解决了网关与数据库交互过于频繁的问题,动态修改配置信息,实现动态负载均衡。
本发明内容的目的及解决的技术问题是采用以下技术方案来实现的:
一种智能网关动态限流实现方法,包括:
S1:预先配置限流、熔断、登录相关参数,启动智能网关,接收到服务请求后,缓存智能网关的预设周期内所有配置信息,将其加载至内存中;
S2:通过本地定时任务按周期自动刷新内存缓存,同时将缓存过期时间重新计算,所述缓存过期时间计算为当前时间的预设周期天数后;
或,修改配置信息成功后,发送指令刷新内存缓存,同时将缓存过期时间重新计算,所述缓存过期时间计算为刷新指令发出后;
S3:读取配置信息;
S4:智能网关根据请求方法路径获取登录token信息,进行黑白名单校验,判断请求类型后进行登录校验和权限校验,校验不通过登录失败,则token信息失效,返回限流响应码;
校验通过后登录成功,从长期缓存中获取请求体改写映射规则,执行请求体改写;
S5:进行智能网关分布式集群限流控制,根据配置的参数名和参数值,以及网关集群数量,配置每台网关的本地限流大小,当流量过大时返回限流响应码;
S6:配置熔断参数,进行本地熔断控制;
S7:根据获取的服务信息,转发请求至智能网关集群,将请求改写后的报文发送至处理器处理请求,实现负载均衡。
优选的,所述读取配置信息包括:
所述配置信息不存在于内存缓存中时,从数据库中查询配置信息,查询到所述配置信息,则保存在内存缓存中,查询不到所述配置信息则保存所有内容均为空的对象。
优选的,所述智能网关可通过配置控制模块,动态修改数据库和缓存记录的信息,更新网关集群内存缓存中的配置信息。
优选的,所述缓存智能网关配置信息时使用google guava缓存技术。
优选的,所述智能网关按照请求方法路径从缓存中匹配处理链路,若智能网关缓存中和数据库中不存在该请求方法路径,返回错误信息。
优选的,所述智能网关支持加解密报文,动态配置加密参数信息。
优选的,从长期缓存中获取请求体改写映射规则还包括:
1.登录令牌的传递:用户将登录的账号密码和验证码发送到智能网关,智能网关调用登录接口,验证登录成功后生成token作为登录令牌存入响应对象的cookie中,将此token对应的用户详细信息存入缓存,网页在接收到响应信息后,将cookie存入页面缓存中,后续请求放入响应对象的cookie中;
2.登录用户的用户详细信息获取:登录成功后,用户请求其它接口,前端服务将cookie的内容放入响应对象的cookie,智能网关根据关键字查询取出token登录令牌,将用户的token登录令牌同步发送用户管理服务,返回用户详细信息,无效用户返回登陆失败;
3.原始请求体获取:智能网关根据响应对象参数匹配识别请求协议和报文格式,网关按照对应格式解析字符串报文,解析报文后统一存储解析后的内容;
4.执行转换逻辑,进行原始请求体改写。
优选的,所述请求体改写包括:
1.从用户详细信息中获取,且不修改名称:所述智能网关网关根据映射规则,若映射规则是从用户详细信息中获取原始数据,则智能网关根据映射规则在用户详细信息中筛选需要的数据,若映射规则的映射名与原始数据的字段名相同,智能网关在bodymap对象中增加筛选的数据且不改变字段名称,字段名已存在则覆盖原始值将其改写,将bodymap报文封装成原始报文相同格式的字符串;
2.从用户详细信息中获取,且修改名称:网关根据映射规则,若映射规则是从用户详细信息中获取原始数据,,则智能网关根据映射规则在用户详细信息中筛选需要的数据,若映射规则是字段名一对一或一对多的映射成其他参数名称,智能网关在bodymap对象中增加筛选的数据且改变字段名称,字段名已存在则覆盖原始值将其改写,将bodymap报文封装成原始报文相同格式的字符串;
3.从映射规则中获取常量,且不修改名称:所述智能网关根据映射规则,若映射规则是从映射规则中获取常量,则智能网关根据映射规则在bodymap对象中增加常量数据且不改变字段名称,字段名已存在则覆盖原始值将其改写,将bodymap报文封装成原始报文相同格式的字符串;
4.从原始报文中获取,且修改名称:所述智能网关根据映射规则,若映射规则是从原始报文体中获取原始数据,,则智能网关根据映射规则在原始报文体中筛选需要的数据,若映射规则是字段名一对一或一对多的映射成其他参数名称,智能网关在bodymap对象中增加筛选的数据且改变字段名称,将bodymap报文封装成原始报文相同格式的字符串。
优选的,配置熔断参数,进行本地熔断控制中,熔断规则通过长期缓存获取,所述智能网关采用hystrix技术本地熔断,通过配置每个请求路径的最大错误率、最大错误数,时间窗口长度、请求路径的隔离线程池大小、半开时间、熔断时间,动态创建每个方法独立的熔断器,在下游请求错误率或错误数到达阈值后,依赖hystrix实现熔断控制。
优选的,所述根据获取的服务信息,转发请求至智能网关集群,将请求改写后的报文发送至处理器处理请求,实现负载均衡包括:
对每台智能网关进行基于流量权重的负载均衡计算,根据请求方法路径匹配地址信息,返回响应码,实现负载均衡。
本发明的有益效果包括:解决了网络传输安全性的问题,通过多种加密方式避免请求报文被网络抓包,被外部不明身份人员解析盗用,保证了信息安全;
将网关与数据库的交互降低到最低,可在配置时间内长期脱离数据库运行,解决了网关与数据库交互过于频繁的问题;同时网关的请求参数需要改写,可以同时在请求体中添加常量,修改请求参数名称,增加从其他服务获取的参数,增加从其他服务获取的参数并改名,动态修改请求参数改写的映射关系;
实现了对请求体的每个请求参数可调节的个性化动态限流与熔断,解决了响应慢、错误次数多导致整个服务熔断的问题,保护核心功能,扩展网关的高并发能力;
部署架构简单,依赖单一,解耦数据库与网关,提供一个分布式部署、高可用性、高并发能力的智能网关实现方法,增加通讯异常的容错率,扩大使用场景。
附图说明
图1为一种智能网关动态限流实现方法的步骤流程图。
具体实施方式
下面结合附图对本发明内容的技术方案做进一步的详细说明。显然,所描述的实施例仅仅是本发明内容一部分实施例,而不是全部的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本发明内容保护的范围。
应当理解,尽管这里可以使用术语第一、第二、第三等描述各个元件、组件和/或部分,但这些元件、组件和/或部分不受这些术语限制。
如图1所示,一种智能网关动态限流实现方法,包括:
S1:预先配置限流、熔断、登录相关参数,启动智能网关,接收到服务请求后,缓存智能网关的预设周期内所有配置信息,将其加载至内存中;
S2:通过本地定时任务按周期自动刷新内存缓存,同时将缓存过期时间重新计算,所述缓存过期时间计算为当前时间的预设周期天数后;
或,修改配置信息成功后,发送指令刷新内存缓存,同时将缓存过期时间重新计算,所述缓存过期时间计算为刷新指令发出后;
S3:读取配置信息;
S4:智能网关根据请求方法路径获取登录token信息,进行黑白名单校验,判断请求类型后进行登录校验,校验通过后登录成功,从长期缓存中获取请求体改写映射规则,执行请求体改写;
智能网关先获取token信息,同时获取请求方法路径、真实IP、请求类型,生成全局追踪号,验证tokenkey的合法性和方法访问权限,获取tokenvalue返回智能网关,将分布式登录校验的责任下发到权限服务;进行黑白名单校验时,格努真实IP判断白名单,对配置的IP执行放行、禁止,进行全局放行和全局拦截;
S5:进行智能网关分布式集群限流控制,根据配置的参数名和参数值,以及网关集群数量,配置每台网关的本地限流大小,当流量过大时返回限流响应码;
S6:配置熔断参数,进行本地熔断控制;
S7:根据获取的服务信息,转发请求至智能网关集群,将请求改写后的报文发送至处理器处理请求,实现负载均衡。
当所述智能网关启动时,自动加载所有数据库的配置信息到本地内存缓存中,智能网关支持加解密报文,动态配置加密参数,通过多种加密方式解决了网络传输安全性的问题,避免请求报文被网络抓包以及被企业外部不明身份人员解析和盗用。
在一个实施例中,所述读取配置信息包括:
所述配置信息不存在于内存缓存中时,从数据库中查询配置信息,查询到所述配置信息,则保存在内存缓存中,查询不到所述配置信息则保存所有内容均为空的对象。
在一个实施例中,所述智能网关可通过配置控制模块,动态修改数据库和缓存记录的信息,更新网关集群内存缓存中的配置信息。
在一个实施例中,所述缓存智能网关配置信息时使用google guava缓存技术。
在一个实施例中,所述智能网关按照请求方法路径从缓存中匹配处理链路,若智能网关缓存中和数据库中不存在该请求方法路径,返回错误信息。
在一个实施例中,所述智能网关支持加解密报文,动态配置加密参数信息。
在一个实施例中,从长期缓存中获取请求体改写映射规则还包括:
1.登录令牌的传递:用户将登录的账号密码和验证码发送到智能网关,智能网关调用登录接口,在验证登录成功后生成token作为登录令牌存入响应对象ServerHttpResponse的cookie中,将此token对应的用户详细信息存入缓存,网页在接收到响应信息后,将cookie存入页面缓存中,在后续请求中会将此cookie的内容放入ServerHttpRequest对象的cookie中;
2.登录用户的用户详细信息获取:登录成功后,用户请求其它接口,端会将cookie的内容放入ServerHttpRequest对象的cookie,智能网关按照Authorization关键字取出token登录令牌,将用户的token登录令牌同步发送给用户中心,用户中心返回用户详细信息,无效用户返回登陆失败;
3.原始请求体获取:端会将cookie的内容放入ServerHttpRequest对象的cookie,智能网关按照Authorization关键字取出token登录令牌,将用户的token登录令牌同步发送给用户中心,用户中心返回用户详细信息,无效用户返回登陆失败;
4.执行转换逻辑,进行原始请求体改写:
1)从用户详细信息中获取,且不修改名称:所述智能网关网关根据映射规则,若映射规则是从用户详细信息中获取原始数据,则智能网关根据映射规则在用户详细信息中筛选需要的数据,若映射规则的映射名与原始数据的字段名相同,智能网关在bodymap对象中增加筛选的数据且不改变字段名称,字段名已存在则覆盖原始值将其改写,将bodymap报文封装成原始报文相同格式的字符串;
2)从用户详细信息中获取,且修改名称:网关根据映射规则,若映射规则是从用户详细信息中获取原始数据,,则智能网关根据映射规则在用户详细信息中筛选需要的数据,若映射规则是字段名一对一或一对多的映射成其他参数名称,智能网关在bodymap对象中增加筛选的数据且改变字段名称,字段名已存在则覆盖原始值将其改写,将bodymap报文封装成原始报文相同格式的字符串;
3)从映射规则中获取常量,且不修改名称:所述智能网关根据映射规则,若映射规则是从映射规则中获取常量,则智能网关根据映射规则在bodymap对象中增加常量数据且不改变字段名称,字段名已存在则覆盖原始值将其改写,将bodymap报文封装成原始报文相同格式的字符串;
4)从原始报文中获取,且修改名称:所述智能网关根据映射规则,若映射规则是从原始报文体中获取原始数据,,则智能网关根据映射规则在原始报文体中筛选需要的数据,若映射规则是字段名一对一或一对多的映射成其他参数名称,智能网关在bodymap对象中增加筛选的数据且改变字段名称,将bodymap报文封装成原始报文相同格式的字符串。解决了多种场景的请求改写需求。
在一个实施例中,分布式限流的限流规则通过长期缓存获取,限流实施方法包括:
1)redis集群限流:智能网关连接redis集群,采用redis限流脚本限流,网关读取配置通过限流脚本对每个请求路径的每秒最大访问量进行动态调节;
限流脚本输入参数:令牌桶标识,最大容量,时间窗口的最大请求总量,时间窗口秒数长度,每次请求消耗的令牌数量,在第一次调用redis时拼接限流脚本,保存在在redis限流第一次请求时创建令牌桶,计算从上次生成到现在这段时间应该生成的令牌数,根据限流脚本输入参数,可在每次调用动态传入参数,从而动态调整容量和令牌生成速率计算完剩余令牌后,组装返回信息包含输入参数和剩余令牌数和本次请求是否获取到令牌,组装信息从redis集群返回智能网关,若本次请求成功获取到令牌,智能网关对请求放行,否则直接返回限流响应码和限流提示信息"请求到达上限请稍后重试",通过在限流脚本中加入redis.call("expire",key,s),指定redis的限流脚本的有效时间为s秒,每次调用都传入redis限流脚本,在脚本过期后,redis自动更新限流脚本。
2)根据请求参数限流,令牌桶标识包含请求路径和请求参数名称和请求参数值,通过匹配每个请求路径的限流配置列表,限流配置列表的每个对象都包含请求路径、请求参数名称、请求参数值最大容量、时间窗口的最大请求总量、时间窗口秒数长度、每次请求消耗的令牌数量,将上述数据拼接成限流脚本,调用redis执行限脚本流,实现每个请求参数的个性化动态限流。
通过在限流脚本中加入redis.call("expire",key,s),指定redis的限流脚本的有效时间为s秒,每次调用都传入redis限流脚本,在脚本过期后,redis自动更新限流脚本。使得智能网关的高并发能力可以无限扩展。
在一个实施例中,配置熔断参数,进行本地熔断控制中,熔断规则通过长期缓存获取,所述智能网关采用hystrix技术本地熔断,通过配置每个请求路径的最大错误率、最大错误数,时间窗口长度、请求路径的隔离线程池大小、半开时间、熔断时间,动态创建每个方法独立的熔断器,在下游请求错误率或错误数到达阈值后,依赖hystrix实现熔断控制。避免整个服务直接熔断,导致其他所有可访问方法全部不可访问,保护核心功能,解决了响应慢、错误次数多导致整个服务熔断的问题。
在一个实施例中,所述根据获取的服务信息,转发请求至智能网关集群,将请求改写后的报文发送至处理器处理请求,实现负载均衡包括:
对每台智能网关进行基于流量权重的负载均衡计算,将拉取的服务保存在本地数据库内,将上游nginx的负载均衡后发送到智能网关集群的请求,在本地进行基于流量权重的负载均衡的计算,根据请求方法路径查找所属的服务名,根据服务名匹配多个IP和PORT,按照权重选择其中一个发送请求,根据请求方法路径匹配地址信息,返回响应码,实现负载均衡。
本发明的有益效果包括:解决了网络传输安全性的问题,通过多种加密方式避免请求报文被网络抓包,被外部不明身份人员解析盗用,保证了信息安全;
将网关与数据库的交互降低到最低,可在配置时间内长期脱离数据库运行,解决了网关与数据库交互过于频繁的问题;同时网关的请求参数需要改写,可以同时在请求体中添加常量,修改请求参数名称,增加从其他服务获取的参数,增加从其他服务获取的参数并改名,动态修改请求参数改写的映射关系;
实现了对请求体的每个请求参数可调节的个性化动态限流与熔断,解决了响应慢、错误次数多导致整个服务熔断的问题,保护核心功能,扩展网关的高并发能力;
部署架构简单,依赖单一,解耦数据库与网关,提供一个分布式部署、高可用性、高并发能力的智能网关实现方法,增加通讯异常的容错率,扩大使用场景。以上公开的本说明书优选实施例只是用于帮助阐述本说明书。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本说明书的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本说明书。本说明书仅受权利要求书及其全部范围和等效物的限制。
Claims (10)
1.一种智能网关动态限流实现方法,其特征在于,包括:
S1:预先配置限流、熔断、登录相关参数,启动智能网关,接收到服务请求后,缓存智能网关的预设周期内所有配置信息,将其加载至内存中;
S2:通过本地定时任务按周期自动刷新内存缓存,同时将缓存过期时间重新计算,所述缓存过期时间计算为当前时间的预设周期天数后;
或,修改配置信息成功后,发送指令刷新内存缓存,同时将缓存过期时间重新计算,所述缓存过期时间计算为刷新指令发出后;
S3:读取配置信息;
S4:智能网关根据请求方法路径获取登录token信息,进行黑白名单校验,判断请求类型后进行登录校验和权限校验,校验不通过登录失败,则token信息失效,返回限流响应码;
校验通过后登录成功,从长期缓存中获取请求体改写映射规则,执行请求体改写;
S5:进行智能网关分布式集群限流控制,根据配置的参数名和参数值,以及网关集群数量,配置每台网关的本地限流大小,当流量过大时返回限流响应码;
S6:配置熔断参数,进行本地熔断控制;
S7:根据获取的服务信息,转发请求至智能网关集群,将请求改写后的报文发送至处理器处理请求,实现负载均衡。
2.根据权利要求1所述的一种智能网关动态限流实现方法,其特征在于,所述读取配置信息包括:
所述配置信息不存在于内存缓存中时,从数据库中查询配置信息,查询到所述配置信息,则保存在内存缓存中,查询不到所述配置信息则保存所有内容均为空的对象。
3.根据权利要求1所述的一种智能网关动态限流实现方法,其特征在于,所述智能网关可通过配置控制模块,动态修改数据库和缓存记录的信息,更新网关集群内存缓存中的配置信息。
4.根据权利要求1所述的一种智能网关动态限流实现方法,其特征在于,所述缓存智能网关配置信息时使用google guava缓存技术。
5.根据权利要求1所述的一种智能网关动态限流实现方法,其特征在于,所述智能网关按照请求方法路径从缓存中匹配处理链路,若智能网关缓存中和数据库中不存在该请求方法路径,返回错误信息。
6.根据权利要求1所述的一种智能网关动态限流实现方法,其特征在于,所述智能网关支持加解密报文,动态配置加密参数信息。
7.根据权利要求1所述的一种智能网关动态限流实现方法,其特征在于,从长期缓存中获取请求体改写映射规则还包括:
(1)登录令牌的传递:用户将登录的账号密码和验证码发送到智能网关,智能网关调用登录接口,验证登录成功后生成token作为登录令牌存入响应对象的cookie中,将此token对应的用户详细信息存入缓存,网页在接收到响应信息后,将cookie存入页面缓存中,后续请求放入响应对象的cookie中;
(2)登录用户的用户详细信息获取:登录成功后,用户请求其它接口,前端服务将cookie的内容放入响应对象的cookie,智能网关根据关键字查询取出token登录令牌,将用户的token登录令牌同步发送用户管理服务,返回用户详细信息,无效用户返回登陆失败;
(3)原始请求体获取:智能网关根据响应对象参数匹配识别请求协议和报文格式,网关按照对应格式解析字符串报文,解析报文后统一存储解析后的内容;
(4)执行转换逻辑,进行原始请求体改写。
8.根据权利要求7所述的一种智能网关动态限流实现方法,其特征在于,所述请求体改写包括:
(1)从用户详细信息中获取,且不修改名称:所述智能网关网关根据映射规则,若映射规则是从用户详细信息中获取原始数据,则智能网关根据映射规则在用户详细信息中筛选需要的数据,若映射规则的映射名与原始数据的字段名相同,智能网关在bodymap对象中增加筛选的数据且不改变字段名称,字段名已存在则覆盖原始值将其改写,将bodymap报文封装成原始报文相同格式的字符串;
(2)从用户详细信息中获取,且修改名称:网关根据映射规则,若映射规则是从用户详细信息中获取原始数据,,则智能网关根据映射规则在用户详细信息中筛选需要的数据,若映射规则是字段名一对一或一对多的映射成其他参数名称,智能网关在bodymap对象中增加筛选的数据且改变字段名称,字段名已存在则覆盖原始值将其改写,将bodymap报文封装成原始报文相同格式的字符串;
(3)从映射规则中获取常量,且不修改名称:所述智能网关根据映射规则,若映射规则是从映射规则中获取常量,则智能网关根据映射规则在bodymap对象中增加常量数据且不改变字段名称,字段名已存在则覆盖原始值将其改写,将bodymap报文封装成原始报文相同格式的字符串;
(4)从原始报文中获取,且修改名称:所述智能网关根据映射规则,若映射规则是从原始报文体中获取原始数据,,则智能网关根据映射规则在原始报文体中筛选需要的数据,若映射规则是字段名一对一或一对多的映射成其他参数名称,智能网关在bodymap对象中增加筛选的数据且改变字段名称,将bodymap报文封装成原始报文相同格式的字符串。
9.根据权利要求1所述的一种智能网关动态限流实现方法,其特征在于,配置熔断参数,进行本地熔断控制中,熔断规则通过长期缓存获取,所述智能网关采用hystrix技术本地熔断,通过配置每个请求路径的最大错误率、最大错误数,时间窗口长度、请求路径的隔离线程池大小、半开时间、熔断时间,动态创建每个方法独立的熔断器,在下游请求错误率或错误数到达阈值后,依赖hystrix实现熔断控制。
10.根据权利要求1所述的一种智能网关动态限流实现方法,其特征在于,所述根据获取的服务信息,转发请求至智能网关集群,将请求改写后的报文发送至处理器处理请求,实现负载均衡包括:
对每台智能网关进行基于流量权重的负载均衡计算,根据请求方法路径匹配地址信息,返回响应码,实现负载均衡。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110769964.2A CN113595925B (zh) | 2021-07-06 | 2021-07-06 | 一种智能网关动态限流实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110769964.2A CN113595925B (zh) | 2021-07-06 | 2021-07-06 | 一种智能网关动态限流实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113595925A true CN113595925A (zh) | 2021-11-02 |
CN113595925B CN113595925B (zh) | 2024-01-30 |
Family
ID=78246340
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110769964.2A Active CN113595925B (zh) | 2021-07-06 | 2021-07-06 | 一种智能网关动态限流实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113595925B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114221908A (zh) * | 2021-12-14 | 2022-03-22 | 平安银行股份有限公司 | 动态限流熔断处理方法、装置、计算机设备及存储介质 |
CN114422259A (zh) * | 2022-01-26 | 2022-04-29 | 宋舒涵 | 一种面向高并发数据请求的互联网资源监测及分配方法 |
CN114615203A (zh) * | 2022-01-30 | 2022-06-10 | 阿里云计算有限公司 | 访问控制方法、装置、存储介质及处理器 |
CN115296959A (zh) * | 2022-07-25 | 2022-11-04 | 紫光云技术有限公司 | 一种使用Nginx+Lua脚本替代SpringCloudGateway网关的方法 |
CN116708293A (zh) * | 2023-08-07 | 2023-09-05 | 浙江鹏信信息科技股份有限公司 | 基于内存数据库的高并发路由封堵系统及方法 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190250859A1 (en) * | 2018-02-09 | 2019-08-15 | Plex Systems, Inc. | Embedded architecture using inter-processor communication and in memory database for rapid creation of industrial protocol converters |
CN110413543A (zh) * | 2019-06-17 | 2019-11-05 | 中国科学院信息工程研究所 | 一种基于熔断和二级缓存的api网关保障服务高可用方法及系统 |
CN111324477A (zh) * | 2020-02-03 | 2020-06-23 | 北京同邦卓益科技有限公司 | 一种分布式熔断的处理方法及装置 |
CN111610979A (zh) * | 2020-04-15 | 2020-09-01 | 河南大学 | 一种经过持久化和耦合度优化的api网关及其方法 |
CN111669292A (zh) * | 2020-06-19 | 2020-09-15 | 普元信息技术股份有限公司 | 微服务架构下实现网关动态路由控制的方法 |
CN111865920A (zh) * | 2020-06-18 | 2020-10-30 | 多加网络科技(北京)有限公司 | 一种网关认证和身份鉴权的平台及其方法 |
CN112565093A (zh) * | 2020-12-11 | 2021-03-26 | 山东大学 | 一种基于内存数据库实现微服务路由动态变更的方法、存储介质 |
CN113032432A (zh) * | 2021-02-22 | 2021-06-25 | 北京齐尔布莱特科技有限公司 | 一种数据缓存处理方法、系统、计算设备及可读存储介质 |
-
2021
- 2021-07-06 CN CN202110769964.2A patent/CN113595925B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190250859A1 (en) * | 2018-02-09 | 2019-08-15 | Plex Systems, Inc. | Embedded architecture using inter-processor communication and in memory database for rapid creation of industrial protocol converters |
CN110413543A (zh) * | 2019-06-17 | 2019-11-05 | 中国科学院信息工程研究所 | 一种基于熔断和二级缓存的api网关保障服务高可用方法及系统 |
CN111324477A (zh) * | 2020-02-03 | 2020-06-23 | 北京同邦卓益科技有限公司 | 一种分布式熔断的处理方法及装置 |
CN111610979A (zh) * | 2020-04-15 | 2020-09-01 | 河南大学 | 一种经过持久化和耦合度优化的api网关及其方法 |
CN111865920A (zh) * | 2020-06-18 | 2020-10-30 | 多加网络科技(北京)有限公司 | 一种网关认证和身份鉴权的平台及其方法 |
CN111669292A (zh) * | 2020-06-19 | 2020-09-15 | 普元信息技术股份有限公司 | 微服务架构下实现网关动态路由控制的方法 |
CN112565093A (zh) * | 2020-12-11 | 2021-03-26 | 山东大学 | 一种基于内存数据库实现微服务路由动态变更的方法、存储介质 |
CN113032432A (zh) * | 2021-02-22 | 2021-06-25 | 北京齐尔布莱特科技有限公司 | 一种数据缓存处理方法、系统、计算设备及可读存储介质 |
Non-Patent Citations (6)
Title |
---|
AKHAN AKBULUT: ""Software Versioning with Microservices through the API Gateway Design Pattern"", 《IEEE》 * |
X ZHOU: ""Research on Session Sharing of Distributed Application Service Technology"", 《IEEE》 * |
Y GONG: ""The design and implementation of a campus web information system based on micro-service architecture"", 《IOPSCIENCE》 * |
林乐健;王映彤;孙薇薇;郭杰;: "民航旅客服务系统统一接口网关设计与实现", 数字通信世界, no. 09 * |
程庆华;: "基于API服务网关技术的水文数据共享系统的构建", 河南水利与南水北调, no. 09 * |
蒋勇;: "基于微服务架构的基础设施设计", 软件, no. 05 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114221908A (zh) * | 2021-12-14 | 2022-03-22 | 平安银行股份有限公司 | 动态限流熔断处理方法、装置、计算机设备及存储介质 |
CN114221908B (zh) * | 2021-12-14 | 2023-07-21 | 平安银行股份有限公司 | 动态限流熔断处理方法、装置、计算机设备及存储介质 |
CN114422259A (zh) * | 2022-01-26 | 2022-04-29 | 宋舒涵 | 一种面向高并发数据请求的互联网资源监测及分配方法 |
CN114422259B (zh) * | 2022-01-26 | 2022-10-28 | 宋舒涵 | 一种面向高并发数据请求的互联网资源监测及分配方法 |
CN114615203A (zh) * | 2022-01-30 | 2022-06-10 | 阿里云计算有限公司 | 访问控制方法、装置、存储介质及处理器 |
CN115296959A (zh) * | 2022-07-25 | 2022-11-04 | 紫光云技术有限公司 | 一种使用Nginx+Lua脚本替代SpringCloudGateway网关的方法 |
CN116708293A (zh) * | 2023-08-07 | 2023-09-05 | 浙江鹏信信息科技股份有限公司 | 基于内存数据库的高并发路由封堵系统及方法 |
CN116708293B (zh) * | 2023-08-07 | 2023-10-31 | 浙江鹏信信息科技股份有限公司 | 基于内存数据库的高并发路由封堵系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113595925B (zh) | 2024-01-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113595925A (zh) | 一种智能网关动态限流实现方法 | |
US11848998B2 (en) | Cross-cloud workload identity virtualization | |
KR101953942B1 (ko) | 전용 캐시 관리 시스템 및 방법 | |
CN103329113B (zh) | 配置用于分级高速缓存的代理服务器以及动态站点加速和自定义对象和相关的方法 | |
US7296297B2 (en) | System and method for using web-based applications to validate data with validation functions | |
US10148727B2 (en) | Methods and systems for an end-to-end solution to deliver content in a network | |
US20040216147A1 (en) | Component based application middleware framework | |
US20110060812A1 (en) | Cache server with extensible programming framework | |
US20090254707A1 (en) | Partial Content Caching | |
CN110191063A (zh) | 服务请求的处理方法、装置、设备及存储介质 | |
JP2006502465A (ja) | コンテンツ配信ネットワーク(CDN)で使用するためのJavaアプリケーションフレームワーク | |
US7237235B2 (en) | Application distribution system, and distribution server and distribution method thereof | |
CN110083338B (zh) | 基于智能网关的服务系统 | |
CN111258627A (zh) | 一种接口文档生成方法和装置 | |
CN107315972A (zh) | 一种大数据非结构化文件动态脱敏方法及系统 | |
CN113220723A (zh) | 一种流量控制方法、装置、计算机设备及存储介质 | |
AU2015369925A1 (en) | Computer readable storage media for dynamic service deployment and methods and systems for utilizing same | |
CN112350978A (zh) | 一种业务处理方法、系统、设备及存储介质 | |
CN115934202A (zh) | 一种数据管理方法、系统、数据服务网关及存储介质 | |
CN116232804A (zh) | 基于微服务架构的api网关 | |
CN112910947A (zh) | 一种基于lua的高并发限流秒杀技术 | |
CN114884964A (zh) | 基于Tuxedo架构的业务风控方法和系统 | |
WO2023024057A1 (zh) | 跨域授权处理方法及跨域调用处理方法 | |
CN115484045A (zh) | 一种基于api网关的统一身份认证方法及系统 | |
CN115378645A (zh) | 一种基于电力营销管理系统统一认证的验证方法及系统 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |