Zuul限流是通过引入spring-cloud-zuul-ratelimit依赖实现的。它提供了下面几种限流类型。
(1)用户(USER),根据认证用户或匿名用户限流。
(2)客户端IP地址(ORIGIN),根据客户端IP地址限流。 (
3)请求路径(URL),根据请求URL限流。
(4)根据服务限流。
下面我们来实现对商品微服务的限流。首先,引入spring-cloud-zuul-ratelimit依赖,如程序清单11-4所示。
然后,在application.yml中配置限流,如程序清单11-5所示。
其中enabled:true表示开启限流,
policies表示限流规则,这里配置了商品微服务的同时请求数量最多为10个。
没有添加type字段就表示使用上面介绍的第4种限流类型:根据服务限流。
如果想指定限流类型,则需添加type字段,值为上面括号中的大写单词,如根据用户限流则写USER。
最后,我们通过Postman来验证一下。我们创建一个包含12个相同请求的集合,如图所示。
然后,运行集合,可以看到有两个请求返回了429,如图所示,证明Zuul的确起到限流作用了。