Soul网关02-使用divide插件实现http代理

本文介绍了Soul网关中Divide插件的使用,包括如何配置HTTP代理、实现负载均衡和请求过滤。通过运行examples下的HTTP服务,展示了Divide插件的配置和负载效果,分析了配置加载的源码流程,提供了简单的负载调整和请求过滤配置示例。同时,文中提到Soul网关支持更多功能,如熔断、限流等。
摘要由CSDN通过智能技术生成

 

概述

上一节我们大概的了解了Soul网关是什么,搭建了运行环境并成功的运行了其中的soul-admin、soul-bootstrap模块。

 

这一节主要从以下几个方面开始学习

  1. 学习divide插件的使用
  2. 运行examples下面的http服务
  3. 使用divide插件,配置http的转发。

 

divide插件的使用

 

查看文档

首先我们找到Soul官方文档中关于divide插件的使用介绍

文档地址:https://dromara.org/zh-cn/docs/soul/plugin-divide.html

从文档中可以知道:

  • divide插件是网关处理 http协议请求的核心处理插件。
  • 开启插件, soul-admin --> 插件管理--> divide 设置为启用。
  • divide插件,配合如下 starter一起才能生效,具体请看:http用户
  <!--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类型的请求,都是由该插件进行负载均衡的调用。
  • 选择器和规则,请详细看 : 选择器规则
  • http配置,是网关匹配到流量以后,真实调用的http配置,可以配置多个,设置负载均衡权重,具体的负载均衡策略,在规则中指定。
    • 配置详解 :
      • 第一个框:hostName,一般填写 localhost,该字段暂时没使用。
      • 第二个框:http协议,一般填写 http:// 或者 https:// ,不填写默认为:http://
      • 第三个框:ip与端口,这里填写你真实服务的 ip + 端口。
      • 第四个框:负载均衡权重。
    • ip + port 检测
      • 在soul-admin 会有一个定时任务来扫描 配置的ip端口,如果发现下线,则会除该 ip + port
      • 可以进行如下配置 :

 

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

 

 

运行examples下面的http服务

 

项目结构

 

 

配置

查看application.yml文件

 

查看pom

可以看到controller上加上了如下的注解

 

 

配置加载的源码分析

第一步:

加载 soul.http 的配置,初始化SoulSpringMvcConfig的bean

 

第二步:

SpringMvcClientBeanPostProcessor对bean进行后置处理

full参数为true直接返回bean

 

第三步:

初始化ContextRegisterListener bean,这时候会触发ContextRegisterListener 的onApplicationEvent事件

判断如果是full,构造请求参数注册到soul-admin

 

 

使用divide插件配置http代理

 

需要启动的服务

  • soul-admin 端口9095
  • soul-bootstrap 端口9195
  • examples下的http服务 端口8188

 

http代理

这时候我们访问soul-admin的管理页面可以看到如下配置:

我们正常访问的http服务的order地址应该是:http://localhost:8188/order/findById?id=1

 

现在我们可以通过访问:http://localhost:9195/http/order/findById?id=1

 

 

负载

修改idea的启动配置,配置允许并行

 

修改端口再启动一个http服务,端口号:8189

修改配置

 

这时候我们看soul-admin的页面点击修改,会发现有两个配置规则

 

 

权重默认都是50,我们可以通过修改权重来控制每个服务的流量达到负载的效果。

 

 

请求过滤

我们也可以通过修改条件去过滤比如header中name=admin的请求才会代理

 

 

总结

Soul当然还支持例如熔断、限流、拦截等等的功能,这一节我们通过使用divide插件,简单的实现了代理的负载和过滤的功能,并分析了配置加载的部分源码,Soul巧妙的利用了SpringMVC的一些功能特性,优雅的实现了加载和注册的功能,能看出Soul的设计之精巧。

下一节我们主要学习examples中的apache-dubbo服务,通过学习文档,结合dubbo插件,发起http请求soul网关,体验dubbo代理的功能。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值