云计算百科
云计算领域专业知识百科平台

微服务网关Gateway实战:限流、鉴权、灰度发布一站式实现

做微服务开发的同学应该都清楚,SpringCloud Gateway 几乎是目前微服务架构的统一入口核心。所有前端请求、第三方接口调用,都会先经过网关再转发到具体业务服务。

很多初学微服务的朋友,只是简单配置一下路由转发,就直接上线项目,完全没用到网关的核心能力。等到线上出现接口被刷、未授权访问、版本迭代不敢灰度、高并发打垮服务等问题,才发现网关少做了三层核心防护:限流、统一鉴权、灰度发布。

今天我结合日常项目实战经验,不带空话、纯落地教学,手把手教大家在 Gateway 中一站式实现限流、鉴权、灰度发布三大核心功能,附带完整可直接复用的代码,生产环境稍加修改就能直接上线。

一、为什么必须用 Gateway 统一处理这三大功能?

很多新手会把鉴权、限流写在每个业务服务内部,其实这是非常不规范的写法。

如果每个微服务都单独写一套拦截逻辑,不仅代码冗余、维护麻烦,还会出现规则不统一、漏洞多的问题。而网关作为流量唯一入口,所有通用非业务逻辑都应该放在网关层处理,业务服务只需要专注业务CRUD,这也是微服务架构的标准设计思想。

目前主流企业级架构,全部都是在网关层统一实现:请求过滤、Token鉴权、流量限流、灰度路由、跨域处理、日志收集。

二、基础依赖配置

首先引入 Gateway 核心依赖,搭配 Redis 实现分布式限流,这是生产环境标配组合:

<dependencies> <!– SpringCloud Gateway 网关核心 –> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId> </dependency> <!– Redis 分布式限流依赖 –> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis-reactive</artifactId> </dependency> </dependencies>

三、网关统一Token鉴权实战

统一鉴权是网关最基础的功能。核心逻辑就是自定义全局过滤器,拦截所有请求,校验Header中的Token,无效Token直接拦截,不转发下游服务。

我写了一套生产常用的全局鉴权过滤器:

@Component public class AuthGlobalFilter implements GlobalFilter, Ordered { // 放行接口:登录、注册、验证码 private static final List<String> WHITE_LIST = Arrays.asList("/login","/register","/captcha"); @Override public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) { String path = exchange.getRequest().getPath().value(); // 白名单直接放行 if (WHITE_LIST.contains(path)) { return chain.filter(exchange); } // 获取请求头Token String token = exchange.getRequest().getHeaders().getFirst("Token"); // 简单校验,实际项目可结合JWT解析、过期判断 if (StringUtils.isEmpty(token)) { ServerHttpResponse response = exchange.getResponse(); response.setStatusCode(HttpStatus.UNAUTHORIZED); return response.setComplete(); } return chain.filter(exchange); } @Override public int getOrder() { // 最高优先级执行 return Ordered.HIGHEST_PRECEDENCE; } }

这种全局过滤方式,能拦截所有非法请求,避免下游每个服务重复写拦截逻辑,非常简洁统一。

四、Redis + Gateway 分布式限流实战

线上服务最怕瞬间高并发、恶意刷接口,这时候就必须靠限流兜底。我采用网关自带的 RequestRateLimiter 令牌桶限流方案,基于Redis实现,支持分布式集群限流。zqA.4-p.cN
4l5.4-p.cN
urh.4-p.cN
riw.4-p.cN
9xy.4-p.cN
tyt.4-p.cN
589.4-p.cN
v8z.4-p.cN
mpl.4-p.cN
90r.4-p.cN
u20.4-p.cN
x8w.4-p.cN
m1v.4-p.cN
vpm.4-p.cN
noA.4-p.cN
19u.4-p.cN
fgB.4-p.cN
Ah6.4-p.cN
5r3.4-p.cN
fyo.4-p.cN
60z.4-p.cN
ez3.4-p.cN
BDD.4-p.cN
rwA.4-p.cN
7xA.4-p.cN
1oj.4-p.cN
yre.4-p.cN
4xo.4-p.cN
xng.4-p.cN
D7p.4-p.cN
3A4.4-p.cN
yyn.4-p.cN
lkx.4-p.cN
mv5.4-p.cN
hgn.4-p.cN
wjg.4-p.cN
Ax4.4-p.cN
ng9.4-p.cN
luh.4-p.cN
59t.4-p.cN
37m.4-p.cN
wtv.4-p.cN
Ai6.4-p.cN
3t8.4-p.cN
pnz.4-p.cN
A2v.4-p.cN
lsm.4-p.cN
9lu.4-p.cN
vyr.4-p.cN
o8B.4-p.cN
7ks.4-p.cN
lA2.4-p.cN
vBk.4-p.cN
slp.4-p.cN
pB8.4-p.cN
kpl.4-p.cN
9tq.4-p.cN
yus.4-p.cN
nAx.4-p.cN
i0j.4-p.cN
8jj.4-p.cN
yp3.4-p.cN
Cev.4-p.cN
uB5.4-p.cN
19i.4-p.cN
ys1.4-p.cN
xvD.4-p.cN
tf6.4-p.cN
mpg.4-p.cN
ikB.4-p.cN
3mk.4-p.cN
p3x.4-p.cN
xre.4-p.cN
vj1.4-p.cN
3h4.4-p.cN
slv.4-p.cN
vqC.4-p.cN
onf.4-p.cN
9×1.4-p.cN
9mg.4-p.cN
Dvu.4-p.cN
qBD.4-p.cN
C4i.4-p.cN
vBz.4-p.cN
lAA.4-p.cN
73r.4-p.cN
9lw.4-p.cN
oC0.4-p.cN
fBs.4-p.cN
Dln.4-p.cN
7tj.4-p.cN
ljj.4-p.cN
rp5.4-p.cN
ghv.4-p.cN
1tj.4-p.cN
A00.4-p.cN
D7s.4-p.cN
q4u.4-p.cN
2A7.4-p.cN
f4C.4-p.cN
uAu.4-p.cN
k9o.4-p.cN
tBj.4-p.cN
qft.4-p.cN
5e7.4-p.cN
Ag9.4-p.cN
54o.4-p.cN
Chm.4-p.cN
A4i.4-p.cN
gtA.4-p.cN
wnl.4-p.cN
5et.4-p.cN
ows.4-p.cN
3D1.4-p.cN
spx.4-p.cN
ylo.4-p.cN
6w0.4-p.cN
Awi.4-p.cN
kD6.4-p.cN
0xx.4-p.cN
uhu.4-p.cN
05v.4-p.cN
n38.4-p.cN
1lr.4-p.cN
lk7.4-p.cN
x95.4-p.cN
kn6.4-p.cN
BC8.4-p.cN
wjm.4-p.cN
tnf.4-p.cN
r49.4-p.cN
w08.4-p.cN
15e.4-p.cN
hAz.4-p.cN
wl1.4-p.cN
nxo.4-p.cN
vqw.4-p.cN
vAi.4-p.cN
uf9.4-p.cN
hmn.4-p.cN
zs9.4-p.cN
09l.4-p.cN
y74.4-p.cN
r1z.4-p.cN
862.4-p.cN
wgm.4-p.cN
hrj.4-p.cN
9xh.4-p.cN
hnt.4-p.cN
4Cs.4-p.cN
p4z.4-p.cN
w7t.4-p.cN
2ps.4-p.cN
k1w.4-p.cN
nyC.4-p.cN
9mr.4-p.cN
g8v.4-p.cN
efw.4-p.cN
mCu.4-p.cN
0s4.4-p.cN
674.4-p.cN
xe3.4-p.cN
j99.4-p.cN
7Bp.4-p.cN
xvj.4-p.cN
ipB.4-p.cN
jxj.4-p.cN
fmr.4-p.cN
eDv.4-p.cN
uyi.4-p.cN
ns2.4-p.cN
ip6.4-p.cN
nzB.4-p.cN
rhu.4-p.cN
4yj.4-p.cN
23e.4-p.cN
grl.4-p.cN
pgx.4-p.cN
f7k.4-p.cN
m2j.4-p.cN
sg2.4-p.cN
wrn.4-p.cN
493.4-p.cN
Cjq.4-p.cN
534.4-p.cN
4u9.4-p.cN
25C.4-p.cN
hr9.4-p.cN
ozA.4-p.cN
r45.4-p.cN
v4h.4-p.cN
uvB.4-p.cN
u3k.4-p.cN
3A1.4-p.cN
Aj1.4-p.cN
pnm.4-p.cN
hew.4-p.cN
tsv.4-p.cN
Ahf.4-p.cN
3Aw.4-p.cN
jgx.4-p.cN
8hi.4-p.cN
Ar7.4-p.cN
ujt.4-p.cN
Buh.4-p.cN
en7.4-p.cN
lCt.4-p.cN
vzg.4-p.cN
nqp.4-p.cN
oBs.4-p.cN
wtq.4-p.cN
hAu.4-p.cN
1yl.4-p.cN
rnC.4-p.cN
5lv.4-p.cN
3mq.4-p.cN
zre.4-p.cN
qy6.4-p.cN
upl.4-p.cN
wx0.4-p.cN
6v9.4-p.cN
exf.4-p.cN
hmi.4-p.cN
jh0.4-p.cN
js6.4-p.cN
q24.4-p.cN
gth.4-p.cN
0xl.4-p.cN
qBm.4-p.cN
z5p.4-p.cN
r3l.4-p.cN
pvh.4-p.cN
BDf.4-p.cN
41g.4-p.cN
eDB.4-p.cN
nlB.4-p.cN
DAo.4-p.cN
2Bh.4-p.cN
eto.4-p.cN
vfA.4-p.cN
8k9.4-p.cN
i2f.4-p.cN
xrk.4-p.cN
5g5.4-p.cN
8ls.4-p.cN
7Dz.4-p.cN
ohA.4-p.cN
nqD.4-p.cN
sw3.4-p.cN
oir.4-p.cN
Czl.4-p.cN
wAr.4-p.cN
1D9.4-p.cN
Bpk.4-p.cN
9An.4-p.cN
qth.4-p.cN
rm3.4-p.cN
om9.4-p.cN
B9s.4-p.cN
4em.4-p.cN
fBj.4-p.cN
n46.4-p.cN
em4.4-p.cN
nCn.4-p.cN
9zz.4-p.cN
294.4-p.cN
e1C.4-p.cN
4nt.4-p.cN
xAA.4-p.cN
fo0.4-p.cN
mqt.4-p.cN
xrp.4-p.cN
vlt.4-p.cN
on5.4-p.cN
ezm.4-p.cN
p4f.4-p.cN
zqf.4-p.cN
Dio.4-p.cN
322.4-p.cN
w58.4-p.cN
0x6.4-p.cN
hxk.4-p.cN
rph.4-p.cN
lmu.4-p.cN
Cmj.4-p.cN
Dwt.4-p.cN
9ms.4-p.cN
z0j.4-p.cN
plA.4-p.cN
8xm.4-p.cN
5hp.4-p.cN
s2B.4-p.cN
y2h.4-p.cN
ku8.4-p.cN
sel.4-p.cN
y2D.4-p.cN
pfu.4-p.cN
wDj.4-p.cN
tel.4-p.cN
lz0.4-p.cN
32q.4-p.cN
6n4.4-p.cN
8kf.4-p.cN
qv2.4-p.cN
om5.4-p.cN
gzt.4-p.cN
y62.4-p.cN
jkl.4-p.cN
056.4-p.cN
zzq.4-p.cN
7l2.4-p.cN
kwz.4-p.cN
uD4.4-p.cN
f9f.4-p.cN
glw.4-p.cN
kmn.4-p.cN
y7B.4-p.cN
CBv.4-p.cN
o0C.4-p.cN
wsl.4-p.cN
n3D.4-p.cN
eyD.4-p.cN
o27.4-p.cN
uov.4-p.cN
5kj.4-p.cN
CqB.4-p.cN
tz1.4-p.cN
pDn.4-p.cN
Bh6.4-p.cN
ex3.4-p.cN
8ow.4-p.cN
1Bz.4-p.cN
m83.4-p.cN
l3t.4-p.cN
wss.4-p.cN
wl4.4-p.cN
e5o.4-p.cN
3pA.4-p.cN
C2t.4-p.cN
9il.4-p.cN
m5o.4-p.cN
owj.4-p.cN
fAp.4-p.cN
hCo.4-p.cN
m6e.4-p.cN
mol.4-p.cN
eno.4-p.cN
wvh.4-p.cN
5lp.4-p.cN
2qt.4-p.cN
r2w.4-p.cN
rjz.4-p.cN
ktw.4-p.cN
rxp.4-p.cN
jis.4-p.cN
0yt.4-p.cN
fkx.4-p.cN
Cg4.4-p.cN
js9.4-p.cN
C7f.4-p.cN
A28.4-p.cN
mC0.4-p.cN
jB9.4-p.cN
C9f.4-p.cN
xgt.4-p.cN
mth.4-p.cN
qs2.4-p.cN
3gf.4-p.cN
1uo.4-p.cN
q7i.4-p.cN
2×1.4-p.cN
rCt.4-p.cN
70h.4-p.cN
s6C.4-p.cN
njq.4-p.cN
89B.4-p.cN
lhu.4-p.cN
1j8.4-p.cN
rvp.4-p.cN

赞(0)
未经允许不得转载:网硕互联帮助中心 » 微服务网关Gateway实战:限流、鉴权、灰度发布一站式实现
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!