当前位置: 代码迷 >> 综合 >> 试用 Soul divide 插件
  详细解决方案

试用 Soul divide 插件

热度:8   发布时间:2023-12-15 21:34:39.0

本次的文章我们将继续讨论 soul 的 divide 插件,也就是 http 服务的代理

在自己的 Spring Boot 项目中引入 soul

首先在 pom.xml 文件中引入如下依赖

<dependency><groupId>org.dromara</groupId><artifactId>soul-spring-boot-starter-client-springmvc</artifactId><version>${soul.version}</version>
</dependency>

在 yml 文件中引入如下配置

soul:http:adminUrl: http://localhost:9095port: 8188contextPath: /httpappName: httpfull: false# adminUrl: 为你启动的soul-admin 项目的ip + 端口,注意要加http://
# port: 你本项目的启动端口
# contextPath: 为你的这个mvc项目在soul网关的路由前缀,比如/order ,/product 等等,网关会根据你的这个前缀来进行路由.
# appName:你的应用名称,不配置的话,会默认取 `spring.application.name` 的值
# full: 设置true 代表代理你的整个服务,false表示代理你其中某几个controller

接下来,在 controller 层上面添加注解 @SoulSpringMvcClient ,可以注解在方法或者类上,
可以使用 path 参数进行前缀的配置,比如 example-http 模块中的如下示例:

@RestController
@RequestMapping("/test")
@SoulSpringMvcClient(path = "/test/**")
public class HttpTestController {
    
}

会将此类下的所有接口都交由 soul 代理,而如果写成

@RestController
@RequestMapping("/order")
@SoulSpringMvcClient(path = "/order")
public class OrderController {
    @PostMapping("/save")@SoulSpringMvcClient(path = "/save" , desc = "Save order")public OrderDTO save(@RequestBody final OrderDTO orderDTO) {
    orderDTO.setName("hello world save order");return orderDTO;}@GetMapping("/findById")public OrderDTO findById(@RequestParam("id") final String id) {
    OrderDTO orderDTO = new OrderDTO();orderDTO.setId(id);orderDTO.setName("hello world findById");return orderDTO;}
}

则只会代理 save 接口,而不代理 findById 接口。

负载均衡策略

我们修改一下端口再启动一个 web 服务,如果使用 IDEA 的话,注意先在设置中开启相应的支持,如下图:
图片: https://uploader.shimo.im/f/rFVyYOvh6KPnjlJa.png

将新的端口配置到选择器中
图片: https://uploader.shimo.im/f/iG2KJaaKBFvM3JGC.png

接下来我们先来测试轮询的策略
在其中一个规则中修改负载均衡策略为roundRobin
图片: https://uploader.shimo.im/f/dX7zxDHeeJElOuAx.png

请求几次后观察控制台,可以看到两个端口会被均匀的分配流量
图片: https://uploader.shimo.im/f/A0vlb492XVR1bmzY.png

再将负载均衡策略改为 random 并同样进行几次请求,注意,此时我们选择器中配置了两个端口的权重相同,均为 50,可以观察到如下结果
图片: https://uploader.shimo.im/f/qinRp7oYT7Ofjtqw.png

流量并未每次都均匀的分配,但是总体呈现权重相同的效果

接下来修改一下权重
图片: https://uploader.shimo.im/f/GYtuOdEWIyxyLrVv.png

再进行试验,可以看到8188端口的流量变多了
图片: https://uploader.shimo.im/f/UhKUbNSuPLCpUDUr.png

  相关解决方案