soul网关学习day02

今日目标

运行examples下面的 http服务

学习文档,结合divde插件,发起http请求soul网关,体验http代理

环境运行

启动

soul-admin 管理端 http://localhost:9095/

soul-bootstrap 网关 http://localhost:9195/

soul-examples-http http服务 http://localhost:8188/ (在soul-examples模块下,将soul-examples添加到soul的pom.xml中使IDE可以识别)

 

soul-examples-http是soul自带的样例,如果是自己的项目如何集成呢,可以参考官方文档对http用户集成的介绍 https://dromara.org/zh-cn/docs/soul/user-http.html

功能测试

根据对网关的理解,本次启动的三个模块之间的关系应该是:

  • soul-examples-http提供原始http服务
  • soul-bootstrap提供了对soul-examples-http的代理,可以通过访问soul-bootstrap来访问soul-examples-http提供的服务
  • soul-admin提供了对网关的配置,应该包括了代理的规则

插件启用及配置

soul网关使用 divide 插件来处理http请求,访问管理端的插件配置(http://localhost:9095/#/system/plugin),启用divide插件

查看插件列表里divide的配置,有点神奇,昨天只启动soul-admin和soul-bootstrap的时候,这里还是没有配置的,应该是soul-examples-http启动的时候自动同步过来的,这个同步的机制后面再研究(遗留问题1)

 

请求访问

用户请求

说白了,你之前怎么请求就怎么请求,没有很大的变动,变动的地方有2点。

第一点,你之前请求的域名是你自己的服务,现在要换成网关的域名 (这个你听的懂?)

第二点,soul网关需要有一个路由前缀,这个路由前缀就是你接入项目进行配置 contextPath ,如果熟的话,可以自由在 soul-admin 中的divide插件进行自由更改.

# 比如你有一个 order服务 它有一个接口,请求路径 http://localhost:8080/test/save

# 现在就需要换成:http://localhost:9195/order/test/save

# 其中 localhost:9195 为网关的ip端口,默认端口是9195 ,/order 是你接入网关配置的 contextPath

# 其他参数,请求方式不变。

# 我讲到这里还不懂? 请加群问吧

然后你就可以进行访问了,如此的方便与简单。

 

1.访问原始http服务 http://localhost:8188/test/findByUserId?userId=1

2.替换网关地址 http://localhost:9195/http/test/findByUserId?userId=1

返回结果

查看soul-bootstrap日志

 

遗留问题分析

原始http服务启动时如何将代理规则同步到管理端的

在http服务的controller上有一个注解的配置

@SoulSpringMvcClient(path = "/test/**")

管理端对应的配置如下

通过查找对SoulSpringMvcClient的处理逻辑,找到了soul-client-springmvc中的SpringMvcClientBeanPostProcessor

该类实现了BeanPostProcessor接口,postProcessAfterInitialization方法中实现了扫描带有SoulSpringMvcClient注解的类及方法,并通过RegisterUtils.doRegister对配置数据进行注册

RegisterUtils.doRegister内部通过http post的方式进行注册

 

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页