网关Gateway:限流10万QPS、跨域、过滤器、令牌桶算法
发布时间:2024-01-19 19:47:42 来源:kok竟彩体育类似
在构建微服务体系中,必不行少的技能便是网关了,从前期的Zuul,到现在的Spring Cloud Gateway,网关咱们用的不行少。
今日我就将沉积下来的一切与网关相关的常识,用一篇文章总结清楚,期望对爱学习的小伙伴们有所协助。
本篇文章首要介绍网关跨域装备,网关过滤器编写,网关的令牌桶算法限流【每秒10万QPS】
咱们运用gateway这个网关技能,无缝衔接到根据spring cloud的微服务开发中来。
不同的微服务一般会有不同的网络地址,而外部客户端在大多数情况下要调用多个服务的接口才干完结一个事务需求,假如让客户端直接与各个微服务通讯,会有以下的问题:
网关是介于客户端和服务器端之间的中间层,一切的外部恳求都会先经过 网关这一层。也便是说,API 的完成方面更多的考虑事务逻辑,而安全、功用、监控能够交由 网关来做,这样既进步事务灵活性又不缺安全性,典型的架构图如图所示:
微服务网关便是一个体系,经过露出该微服务网关体系,便利咱们进行相关的鉴权,安全操控,日志一致处理,易于监控的相关功用。
由于咱们开发的体系 有包含前台体系和后台体系,后台的体系给办理员运用。那么也需求调用各种微服务,所以咱们针对办理后台建立一个网关微服务。剖析如下:
咱们能够终究靠网关过滤器,完成一些逻辑的处理,比方ip是非名单阻拦、特定地址的阻拦等。下面的代码中做了两个过滤器,而且设定的先后顺序。
(1)在网关微服务中创立IpFilter,无需装备其他,注册到Spring容器即可收效
(2)在网关微服务中创立UrlFilter,无需装备其他,注册到Spring容器即可收效
咱们之前说过,网关能够做许多的工作,比方,限流,当咱们的体系 被频频的恳求的时分,就十分有或许 将体系压垮,所以 未处理这个问题,需求在每一个微服务中做限流操作,可是假如有了网关,那么就能够在网关体系做限流,由于一切的恳求都需求先经过网关体系才干路由到微服务中。
4)恳求到达后首先要获取令牌桶中的令牌,拿着令牌才干够直接进行其他的事务逻辑,处理完事务逻辑之后,将令牌直接删去;
5)令牌桶有最低限额,当桶中的令牌到达最低限额的时分,恳求处理完之后将不会删去令牌,以此确保满足的限流
这个算法的完成,有许多技能,Guava(读音: 瓜哇)是其中之一,redis客户端也有其完成。
需求:每个ip地址1秒内只能发送10万恳求,多出来的恳求回来429过错。
表明 一秒内,答应 一个恳求经过,令牌桶的填充速率也是一秒钟增加一个令牌。