三、soul源码学习-http-divide插件学习

2021-01-17  本文已影响0人  风洛洛

上一节我们学习了http项目本地启动的整体流程,并跑通http请求网关转发到自己服务,这节我们学习下divide插件

一、插件数据库设计:

首先我们关注下soul的插件数据库的设计,soul的插件是持久化在数据库中的。

  1. 对应关系:
    一个插件对应多个选择器,一个选择器对应多个规则
    一个选择器和规则都对应多个匹配条件
    每个规则在对应插件下,不同的处理表现为handler字段
  2. 数据库表UML(早期版本,现在可能有些出入)
image.png

二、什么是选择器?什么是规则?

选择器和规则是soul中最核心的东西

  1. 插件中有许多的选择器,一个选择器有对应多种规则
  2. 选择器会对流量做第一次的筛选,规则在做最终的筛选
  3. 选择器和规则要做的就是为了让流量能够在满足特定的条件下,才取执行我们的想要的

选择器:

image.png

选择器配置详解:

image.png image.png

规则:

image.png

当流量经过选择器匹配成功之后,会进入规则来进行最终的流量匹配。

规则详解:

条件详解:

二、divide插件

divide插件是网关处理http协议请求的核心处理插件

插件设置,访问http://127.0.0.1:9095/#/system/plugin,保证divide插件是开启状态。(默认开启)

image.png

网关如果想支持divide插件,需要在我们的网关项目soul-bootstrap中引入如下依赖:

  <!--if you use http proxy start this-->
   <dependency>
       <groupId>org.dromara</groupId>
       <artifactId>soul-spring-boot-starter-plugin-divide</artifactId>
       <version>${last.version}</version>
   </dependency>

   <dependency>
       <groupId>org.dromara</groupId>
       <artifactId>soul-spring-boot-starter-plugin-httpclient</artifactId>
       <version>${last.version}</version>
   </dependency>

插件详解:

divide插件是进行http正向代理的插件,所有的http类型的请求,都是由该插件进行负载均衡调用的

想要了解什么是正向代理和反向代理,可以看这篇文章:https://cloud.tencent.com/developer/article/1418457

image.png

http配置,是网关匹配到流量以后,真实调用的http配置,可以配置多个,设置负载均衡权重,具体的负载均衡策略,在规则中指定

配置详解:

ip + port 检测:

在soul-admin 会有一个定时任务来扫描 配置的ip端口,如果发现下线,则会除该 ip + port

可以进行如下配置 :

soul.upstream.check:true  默认为 ture,设置为false,不检测
soul.upstream.scheduledTime:10  定时检测时间间隔,默认10秒
上一篇下一篇

猜你喜欢

热点阅读