目录
soul所有插件列表
- context_path插件
- divide插件
- dubbo插件
- springcloud插件
- sofa插件
- ratelimiter插件
- hystrix插件
- sentinel插件
- resilience4j插件
- monitor插件
- waf插件
- sign插件
- rewrite插件
- global插件
- webclient插件
- webclientresponse插件
- tars插件
介绍每个插件
context_path插件
什么是context_path,就是用户每次用一个url访问soul网关的时候,会根据context_path来进行匹配,然后截取真正后端的url来进行请求。如前面文章中我们的springcloud示例,设置的context-path: /springcloud,那么请求/springcloud/order/findById的时候,其实真正访问到后端服务的url是/order/findById,解析后跟我们直接请求后端服务的url完全一样。
soul网关在对目标服务调用的时候,容许用户使用 context_path
插件来重写请求路径的contextPath,使用如下:
-
在
soul-admin
--> 插件管理 -->context_path
设置为开启。 -
在网关的 pom.xml 文件中添加soul-spring-boot-starter-plugin-context-path。
具体使用参考:soul源码阅读(二)http入门示例运行
divide插件
divide插件是进行http正向代理的插件,所有http类型的请求,都是由该插件进行负载均衡的调用。如spring-boot http示例请求,spring mvc请求,都是通过该插件代理后交给webclient插件请求转发到后端服务。使用如下:
-
开启插件,
soul-admin
--> 插件管理-->divide
设置为启用。 -
divide插件,pom.xml中引入 soul-spring-boot-starter-plugin-divide,soul-spring-boot-starter-plugin-httpclient使用。
dubbo插件
dubbo插件是将http协议
转换成dubbo协议
的插件,也是网关实现dubbo泛化调用的关键。
springcloud插件
该插件是用来将http协议
转成springCloud协议
的核心。
使用参考:soul源码阅读(五)Spring Cloud应用示例运行,soul源码阅读(六)Spring Cloud应用示例运行续,soul源码阅读(七)Spring Cloud应用示例运行续2
sofa插件
sofa插件是将http协议
转换成sofa协议
的插件,也是网关实现sofa泛化调用的关键。
使用参考:soul源码阅读(四)Sofa RPC应用示例运行
ratelimiter插件
限流插件,是网关对流量管控限制核心的实现,不仅可以控制到接口级别,也可以控制到参数级别。该拆件采用redis令牌桶算法进行限流。
使用介绍:
(1)安装redis,目前支持redis的单机,哨兵,以及集群模式,如果是哨兵,集群等多节点的,在URL中的配置,请对每个实列使用 ;
分割. 如 192.168.1.1:6379;192.168.1.2:6379,redis安装链接参考:https://blog.csdn.net/weixin_31449201/article/details/105975902
(2)在 soul-admin
--> 插件管理--> rate_limiter
将其设置为开启,页面参数配置如下:
配置选择器以及规则,页面参数如下:
令牌桶实现简单,可靠性高,只需要按照恒定的速率往令牌桶里面添加令牌,请求过来之后去令牌桶里面获取令牌,如果令牌为空则拒绝访问。
capacity:令牌桶可以保存的最大令牌数,这里配置为2,意味着在没人请求情况下,令牌数最大可以为2,如果请求数过大,导致桶中无令牌,那么请求就会被拒绝。
rate:令牌桶的填充速率,这里配置为1,意味着每秒只放入一个令牌到桶中。
(3)在网关的 pom.xml 文件中添加soul-spring-boot-starter-plugin-ratelimiter的支持,启动网关。
(4)http发请求看结果,请求工具浏览器直接请求,postman,restclient工具均可。
不被限制情况下,正常访问,如下结果:
被限制情况下,则提示已经被限流,如下结果: