Soul源码阅读 体验http代理【第二天】

体验基础的http代理功能

1、启动 soul-examples 下面的 SoulTestHttpApplication

2、我们可以通过url直接访问 http://localhost:8188/order/findById?id=1

{"id":"1","name":"hello world findById"}

3、如果是通过 http代理访问的话,使用 soul-bootstrap 的http转发服务 http://localhost:9195/http/order/findById?id=1

{"id":"1","name":"hello world findById"}

返回如上的内容,说明http转发是已经成功了

4、可以看到 soul-admin 下面的 divide 插件新增了一些数据

image.png
image.png
  • 选择器:对应一个独立启动的应用
    • 名称:选择器名称
    • 类型:
      • customer:个性化匹配
      • full:全局匹配
    • 匹配方式(只有customer的时候有):
      • and:下面所有条件都要满足
      • or:下面所有条件满足其一即可
    • 条件:分为url,post,query,host,ip,header
      • 条件符号:match,=,regEx,like
    • 继续后续选择器:暂时不知道什么用
    • 打印日志:是否打印日志
    • 是否开启:明面上意思
    • 配置(映射后端被代理的配置):
      • host:被代理的host
      • protocol:协议
      • ip:port:对应映射的ip和端口
      • weight:权重
      • startupTime:启用延时
      • warmupTime:暂时不知道是什么
      • open/close:当前配置是否启用
    • 执行顺序:第几个执行
image.png
  • 规则(接口匹配):
    • 名称:规则名称
    • 匹配方式:
      • and:下面所有条件都要满足
      • or:下面所有条件满足其一即可
    • 条件
      • and:下面所有条件都要满足
      • or:下面所有条件满足其一即可
    • 负载均衡策略:
      • hash:hash(不知道默认hash是什么??)
      • random:随机
      • roundRobin:轮询
    • 打印日志:是否打印日志
    • 是否开启:当前规则是否开启
    • 执行顺序:多个规则的时候顺序

实验:

1、选择器类型 full,全部url都会通过该选择器,提示如下

image.png
{"code":-102,"message":"Rule not found!","data":null}

没有配置规则,我们配置下规则

image.png

老样子,访问 http://localhost:9195/httpfull/order/findById?id=1

{"id":"1","name":"hello world findById"}

代理成功

2、尝试权重规则

修改 soul-examples-http 可以运行多个,勾选下 allow parallel run

application.yml 新增运行端口 8189

server:
  port: 8189
  address: 0.0.0.0

增加配置,8189给99的权重,这样流量都会走8189过

image.png

因为之前加了全局的,执行顺序也是1,导致走httpfull那边过了,这个执行顺序之后是否考虑可以优化下;两个都是1的情况下好像暂时不知道调用的是哪个

调用的时候还有下面的警告,之后看看是什么原因

2021-01-15 23:30:17.511  INFO 3392 --- [-work-threads-1] o.d.soul.plugin.base.AbstractSoulPlugin  : divide selector success match , selector name :/http
2021-01-15 23:30:17.512  INFO 3392 --- [-work-threads-1] o.d.soul.plugin.base.AbstractSoulPlugin  : divide selector success match , selector name :/http/order/findById
2021-01-15 23:30:17.517  INFO 3392 --- [-work-threads-1] o.d.s.plugin.httpclient.WebClientPlugin  : The request urlPath is , retryTimes is 0
2021-01-15 23:30:17.639  WARN 3392 --- [-work-threads-1] io.netty.bootstrap.Bootstrap             : Unknown channel option 'SO_TIMEOUT' for channel '[id: 0x9cfe66f1]'

目前先这样,http调用了解了下,后续可以补充其他用法的尝试。

之后可以对http调用的整个流程进行debug。

疑问点:

以及关于上面权重的问题是否是一个可以优化的点?

startupTime:启用延时

warmupTime:暂时不知道是什么,调大是一下

继续后续选择器:暂时不知道什么用

负载均衡的hash规则是怎样的

你可能感兴趣的:(Soul源码阅读 体验http代理【第二天】)