Soul网关-day09

Soul网关-day09

Soul-plugin-sofa测试(四)

​ 经过一番曲折,终于把问题弄明白了,确实是前端的代码出了问题。在这里感谢我的前端朋友还有艺哥~

​ 具体事件经过大概是这样的,我请教我的朋友有关soul-dashboard的请求是如何构建的,因为觉得自己不太懂ts,所以想着两个人找可能会快一些。结果朋友很快发出一幅图片,说很容易找到怎么构建请求的啊,图片如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-crsGgrkB-1611414235503)(C:\Users\Master_PeiXU\AppData\Roaming\Typora\typora-user-images\image-20210123225521326.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cS5I6sdm-1611414235509)(C:\Users\Master_PeiXU\AppData\Roaming\Typora\typora-user-images\image-20210123225540164.png)]

其中最关键是第二幅图,直接就可以看到将session中的token属性赋值给了Headers头上的“X-Access Token”,那就很奇怪了;我明明全项目搜索过,搜索不到这个关键词的,如下所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-q9RZr9zq-1611414235513)(C:\Users\Master_PeiXU\AppData\Roaming\Typora\typora-user-images\image-20210123225810895.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ba1S6XYv-1611414235522)(C:\Users\Master_PeiXU\AppData\Roaming\Typora\typora-user-images\image-20210123225748643.png)]

​ 可以看到相同的位置代码并不相同,那问题就很明确了。是因为我dashboard中的代码并不是最新的,仔细想想我这个soul项目是2021年1月12日拉下来的,而且我pull过soul源码很多次,昨天感觉项目有问题的时候又pull了一次:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Bjjeupou-1611414235524)(C:\Users\Master_PeiXU\AppData\Roaming\Typora\typora-user-images\image-20210123230218205.png)]

并且其实每次pull的时候都提示我,soul是最新版本。这就很奇怪了,因为我点进去看soul-dashboard,仍然是很旧的代码。我后来点进soul-dashboard以后,发现:soul-dashboard其实可以单独下载的,我单独下载了最新的项目以后,看到的soul-dashboard中的js脚本就是最新的了。

​ 后来艺哥解释道:soul-dashboard其实是另外一个git项目。我才恍然大悟。

​ 对于soul-dashboard,有两种与soul-admin集成的方式:

1: 在soul-dashboard目录下进入cmd页面
	运行 npm install
	运行 npm start
	这个方法是将soul-dashboard作为一个前端项目单独起起来的,所以需要修改: soul-dashboard\src\index.ejs中<body>标签下
      <div id="httpPath" style="display: none" th:text="<%='$'%>{domain}">${process.env.NODE_ENV === 'production' ? '' : 'http://localhost:9095'}		  </div>
      http://localhost:9095这个属性,改成你本机soul-admin启动的 路径:端口,启动起来以后,在admin和bootstrap启动起来的条件下就可以正常的进行访问了。
2: 在soul-dashboard目录下进入cmd页面
	运行 npm install
	运行 npm run build
	将生成在soul-dashboard\dist下的几个文件,拷贝到soul-admin控制台下的resource/static中(为了项目的简洁,最好把原来这个目录下的文件删除。虽然说只要覆盖了index.html应该就不会有影响,但多出那么一块无用的js和css文件总觉得有些令人迷惑)

​ 以上其实算是昨天晚上的内容了,但没及时更新。今天感觉为什么我直接pull,就不能把soul下的dashboard拉取下来。开始觉得soul-dashboard类似于软链接一样的东西内嵌在soul项目中,但想想不应该,软链接不会出现我遇到的这种问题。

​ 后来搜索了一下,发现git上有一个叫**git-子模块**的东西。发现这应该就是我要找的,过程比较曲折,我就直接把答案发出来吧:

git pull 命令会递归地抓取子模块的更改,然而,它不会更新子模块。 为了完成更新,我们需要运行
git submodule update/git submodule update --init --recursive

​ 在soul目录下运行了上述指令,就可以看到我们的soul-dabshboard中的脚本内容就是最新的了(当然,也可以把原来的项目重新删了,再重新clone一份,这样是最万无一失的…我感觉应该也只有我遇到了这种问题…但还是分享一下…)。

​ 吃了不懂git的亏…

​ 过程比较曲折,但还是学到了一些新知识,贴下成果吧:

在这里插入图片描述
​ 可以看到,现在终于有token了…后续的研究应该可以快速推进下去了,进度有些落后了…

​ token为null的问题就到此完结了~又水了一篇文章…

### Soul 网关概述 Soul 网关是一款高性能、可扩展的微服务网关,其设计灵感来源于 Kong 和 Spring Cloud Gateway 等优秀开源项目[^2]。它支持多种协议和插件化功能,能够满足复杂的业务需求。 #### 特点 Soul 网关具有以下显著特点: - **高可用性和性能**:基于 WebFlux 框架构建,提供异步非阻塞的能力,从而提升系统的吞吐量和响应速度[^4]。 - **灵活的插件机制**:通过插件形式实现各种中间层逻辑处理,例如限流、熔断、日志记录等功能[^1]。 - **多协议支持**:除了 HTTP 协议外,还支持 Dubbo、gRPC 等其他通信协议[^5]。 #### 架构图 以下是 Soul 网关的核心架构概览: ```plaintext +-------------------+ | Admin UI | +---------+--------+ | v +---------+--------+ | Data Sync | -----> Redis/MQ (消息队列) +---------+--------+ | v +---------+--------+ | Plugin | +---------+--------+ | v +---------+--------+ | Gateway Engine | +---------+--------+ ``` 该架构展示了如何通过管理界面配置规则并实时同步到网关引擎中执行相应操作[^3]。 #### 安装与部署指南 为了快速上手 Soul 网关,可以按照如下方式准备开发环境: 1. 下载官方发布的最新版本源码或者二进制包; 2. 配置必要的依赖组件(如 MySQL 数据库用于存储元数据;Redis 或 Kafka 实现动态更新推送); 3. 启动应用后访问默认端口 `8080` 查看运行状态。 #### 示例代码片段 下面是一个简单的 Spring Boot 应用集成 Divide 插件的例子来展示如何定义路由规则: ```java import org.springframework.context.annotation.Bean; import org.springframework.stereotype.Component; @Component public class SoulConfig { @Bean public DivideRule divideRule() { DivideRule rule = new DivideRule(); rule.setContextPath("/example"); rule.setUrlList(Collections.singletonList("http://localhost:9090")); return rule; } } ``` 此段程序设置了当匹配路径 `/example` 的请求会转发给目标服务器监听于 `http://localhost:9090` 地址的服务实例上去完成后续调用过程。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值