soul源码阅读(九)soul所有插件介绍

目录

soul所有插件列表

介绍每个插件

context_path插件

divide插件

dubbo插件

springcloud插件

sofa插件

ratelimiter插件


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泛化调用的关键。

使用参考:soul源码阅读(三)接入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工具均可。

不被限制情况下,正常访问,如下结果:

被限制情况下,则提示已经被限流,如下结果:

猜你喜欢

转载自blog.csdn.net/he_cha_bu/article/details/113040766