Soul 网关源码学习(2) - 我的学习路线

Soul 网关学习路线

昨天针对 Soul 网关的特性提出了一些问题,带着这些问题我们准备开整学习 Soul 网关。

关于学习开源项目的一些思考

road map

  • 首先了解我们要接触的项目是什么 ?

了解我们要接触的开源项目是什么的手段很多,比如说使用搜索引擎搜索一下项目名称,如果这个项目很出名并且用户很多的话,一定会有很多使用指南;或者询问使用过这个项目的人。但是我认为一个开源项目最权威的指南一定是它的官方文档,所以要了解一个项目应该从通读它的官方文档开始。

官方文档一定会对这个项目进行相关的介绍,同时就回答了我们要接触的项目是什么

  • 了解我们要接触的项目能做什么 ?

通过阅读官方文档我们还能了解到这个项目的整体架构,它有哪些功能特性,它使用了哪些关键的技术等等,最重要的是要去发现这个项目能够解决什么样的问题,解决同样的问题,我们还能使用到的方案有哪些,这样就能够从一个陌生的技术上下文找到对比的项目。

通过对比学习我们能够把项目了解得更彻底,如:对比另外的项目,这个项目的优势是什么,它如何提现这方面的优势的,其中的优势是通过什么方式提现出来的;同样也可以发掘一下项目的缺点,找到贡献的缺口。

  • 了解我们要接触到的项目是如何实现描述的特性和解决特定场景的问题

探索一个项目,最重要的就是了解它是如何做到的,了解了 how can do it 之后,我们才能从这个项目的学习中累积到宝贵的经验,才能去思考 how can do better。

实现这个目标的方式,我认为是思考软件架构的设计阅读模块和组件的源码在源码阅读和思考的过程中总结

开启 Soul 网关的学习

任何学习都需要正向反馈,我们学习到了一个知识,应该要去实践中验证知识,并且对学习到的知识做出相应的总结,学习 Soul 网关应该先从运行 soul 开始。

  • Soul 环境编译
  1. 从 soul github克隆代码
git@github.com:dromara/soul.git
  1. 快速打包构建

soul 使用 Maven 组织项目, 使用 Maven 命令打包和构建 soul:

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

注意: 一定要使用 JDK 1.8,我本地环境第一次构建使用 JDK 10,构建失败,切换 JDK 版本到 1.8 之后编译打包通过。

  • 启动 Soul Example
  1. 启动 Soul Admin

Soul Admin 的 src/main/resources/ 下有支持 h2 的配置文件, 使用 Maven SpringBoot 插件运行 Soul Admin, 命令:

mvn spring-boot:run -Dspring-boot.run.arguments="--spring.profiles.active=h2"

注意: 使用 SpringBoot Maven Plugin 命令行传参, 1.x 版本的插件传参的附加参数为: -Drun.arguments=xxx, 2.x 版本的插件传参的附加参数为: -Dspring-boot.run.arguments=xxx

启动成功后可以在浏览器中访问 http://127.0.0.1:9095 访问 Soul 管理控制台.

  1. 启动 Soul Bootstrap

Soul Bootstrap 的有 profile 为 local 的配置文件, 使用 Maven SpringBoot 插件运行 Soul Bootstrap, 命令:

mvn spring-boot:run -Dspring-boot.run.arguments="--spring.profiles.active=local"
  1. 启动 soul-examples 模块中的 soul-examples-dubbo/soul-examples-apache-dubbo-service

启动 soul-examples-apache-dubbo-service 服务后, 在 Soul 网关管理控制台的插件列表 > dubbo中可以看到服务中的接口规则信息. 然后在 soul 网关管理 > 系统管理 > 插件管理 中开启插件 dubbo.

  1. 通过网关调用 dubbo 服务

通过命令行发送请求:

curl -X "POST" "http://127.0.0.1:9195/dubbo/findById?id=123" \
-H 'Content-Type: application/json' \
-d $'{
"id": "123"
}'

得到返回值:

{
"code": 200,
"message": "Access to success!",
"data": {
"name": "hello world Soul Apache, findById",
"id": "123"
}
}

总结

今天的学习中先整理了学习 soul 网关的路线, 整理了路线之后简单地启动了 soul 网关, 算是开启了 soul 网关的使用。带着今天运行的结果,明天准备开始调试一下整个运行过程。

文章作者: David Liu
文章链接: https://davidliu.now.sh/2021/01/15/self_soul_discovery_guide/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 David Liu's Blog