Soul网关源码解析(一)搭建网关环境

有幸参加soul网关社区的【发电机计划】,进行为期四周的源码深度学习,接下来的四周将在这里记录学习的脚印。

目标

1.搭建网关环境(github 一键三连 star,watch,fork)

2.编译代码,运行soul-admin soul-bootstrap

3.记录心得,写博客分享。

过程

启动前准备

将fork的soul项目clone到本地

git clone git@github.com:stephenshen1993/soul.git

在这里插入图片描述

使用Maven编译root项目

mvn clean package install -Dmaven.test.skip=true -Dmaven.javadoc.skip=true -Drat.skip=true -Dcheckstyle.skip=true

在这里插入图片描述

运行soul-admin

从命名上看,soul-admin应该是soul的管控台,先尝试启动项目。

尝试直接启动 SoulAdminBootstrap ,控制台报错如下:

在这里插入图片描述

在错误堆栈的末尾,看到如下信息:

nested exception is com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

初步怀疑是数据库连接问题,打开application.yml验证猜想

在这里插入图片描述

果然需要连接数据库服务,同时注意到名为h2的profiles被注释未生效,应该是配合application-h2.yml接入内存数据库。

application-h2.yml内容:

soul:
  database:
    dialect: h2
    init_script: "META-INF/schema.h2.sql"

spring:
  datasource:
    url: jdbc:h2:mem:~/soul;DB_CLOSE_DELAY=-1
    username: sa
    password: sa
    driver-class-name: org.h2.Driver

故此处我选择启用profiles注释,使用application-h2.yml配置的h2数据库。

(也可以直接启动本地数据库服务接入)

在这里插入图片描述

再次启动soul-admin,项目启动成功。

在这里插入图片描述

运行soul-bootstrap

从命名上看,soul-bootstrap应该是soul的入口,后续debug应该是从这里开始,尝试启动项目。

顺利启动

在这里插入图片描述

同时注意到soul-admin有打印更多信息

在这里插入图片描述

可以看到,soul-admin在感知到soul-bootstrap启动后,才开始初始化数据库表及相关可执行服务。

直到此时,soul-admin的重定向服务、插件服务等才真正拉起来,以及初始化dispatcherServlet。

在这里插入图片描述

那么,soul-admin是如何感知到的呢?从soul-bootstrap的配置文件中发现了一点端倪

在这里插入图片描述

字面上理解,soul-bootstrap是在启动时与soul-admin通过websocket建立同步通道,具体同步机制后面需要跟踪。

总结

  • soul-admin是带状态管控端,应该是通过数据库记录某些状态及元数据信息。

    采用懒加载模式,同步通道建立后,才初始化数据库表单和管控台mvc服务。

  • soul-bootstrap应该是soul启动入口,启动时通过websocket与soul-admin建立同步通道,同步机制尚待跟踪。

    同时注意到配置文件中有健康检查相关配置,使用场景也需跟踪。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值