阿里Sentinel整合Zuul网关详解

栏目: 编程工具 · 发布时间: 5年前

内容简介:前面我们讲解了Sentinel整合Spring Cloud Gateway,详细请查看文章:目前来说,大部分公司线上的网关应该是Zuul,所以今天我们就来看看如何在Zuul中整合Sentinel。本来想基于Spring Cloud Alibaba来进行整合讲解,整合的时候发现目前还没更新版本,依赖还是之前的版本,咱们就以最原生的方式进行整合吧,等Spring Cloud Alibaba更新之后,Sentinel的整合只会变得更简单。

前面我们讲解了Sentinel整合Spring Cloud Gateway,详细请查看文章: 阿里Sentinel支持Spring Cloud Gateway啦!

目前来说,大部分公司线上的网关应该是Zuul,所以今天我们就来看看如何在Zuul中整合Sentinel。

本来想基于Spring Cloud Alibaba来进行整合讲解,整合的时候发现目前还没更新版本,依赖还是之前的版本,咱们就以最原生的方式进行整合吧,等Spring Cloud Alibaba更新之后,Sentinel的整合只会变得更简单。

加入zuul-adapter依赖:

配置Sentinel提供的限流过滤器和限流规则:

  • SentinelZuulPreFilter pre过滤器,在请求路由之前匹配routeId和api,进行限流操作

  • SentinelZuulPostFilter post过滤器,路由之后恢复资源

  • SentinelZuulErrorFilter error过滤器,异常后的处理

最后再配置一个简单的路由,路由名称yinjihuan,跟上面规则中的名称一致:

触发限流后会返回固定的提示:

如果想修改提示内容可以自己实现ZuulBlockFallbackProvider接口,框架默认提供的实现是DefaultBlockFallbackProvider,源码如下:

用法其实跟Zuul中的FallbackProvider一致,但是FallbackProvider比较好的是返回的ClientHttpResponse,我们可以自定义响应内容。

Sentinel提供的ZuulBlockFallbackProvider接口中定义的返回对象是BlockResponse ,也就意味着限制了响应的字段,BlockResponse中有code,message,route三个字段,如果我想返回status, msg这两个字段目前我没找到其它的方式,不知道后续会不会支持,其实最好的是也返回ClientHttpResponse,这样就可以自定义响应内容了。

这边有个小插曲,就是我们自定义fallbackResponse的时候如果用中文message的话,响应内容是乱码,如下:

我看了下SentinelZuulPreFilter中的代码,如下: 阿里Sentinel整合Zuul网关详解

这边是构造了BlockResponse,然后设置到ResponseBody中,但是没有进行编码设置,我自己改了下源码,加了一行代码:

加了上面的代码后,中文就不会乱码了,效果如下:

不说了,我还是去提个issues吧: https://github.com/alibaba/Sentinel/issues/733

彩蛋来了:发文当天加入星球前三位的小伙伴,将获取神秘大礼

加入星球特权

阿里Sentinel整合Zuul网关详解

1、从前端到后端玩转Spring Cloud

2、实战分库分表中间件Sharding-JDBC

3、实战分布式任务调度框架Elastic Job

4、配置中心Apollo实战

5、高并发解决方案之缓存

6、更多课程等你来解锁,20+课程

阿里Sentinel整合Zuul网关详解


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Modeling the Internet and the Web

Modeling the Internet and the Web

Pierre Baldi、Paolo Frasconi、Padhraic Smyth / Wiley / 2003-7-7 / USD 115.00

Modeling the Internet and the Web covers the most important aspects of modeling the Web using a modern mathematical and probabilistic treatment. It focuses on the information and application layers, a......一起来看看 《Modeling the Internet and the Web》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

MD5 加密
MD5 加密

MD5 加密工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试