阿里Sentinel整合Zuul网关详解

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

内容简介:前面我们讲解了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网关详解


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

查看所有标签

猜你喜欢:

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

超预期

超预期

[美] 莱昂纳多·因基莱里、迈卡·所罗门 / 杨波 / 后浪丨江西人民出版社 / 2017-11 / 45.00元

用户体验决定产品成败,只有超预期才能赢得好口碑! 互联网大佬一致推崇的打造爆款产品及服务的核心理念 ................... ※编辑推荐※ ☆ 超预期,才有用户体验,互联网大佬一致推崇的打造爆款产品及服务的核心理念 - 周鸿祎:“什么叫用户体验?超过用户预期才叫 体验!” - 雷军:“口碑的真谛是超越用户的期望值。” - 马化腾:“用户体验,......一起来看看 《超预期》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具