Soul入门
14 Jan 2021 | Soul |Soul是什么?引用Soul的官网:
这是一个异步的,高性能的,跨语言的,响应式的
API网关。我希望能够有一样东西像灵魂一样,保护您的微服务。参考了Kong,Spring-Cloud-Gateway等优秀的网关后,站在巨人的肩膀上,Soul由此诞生!
好了,知道了Soul是一个网关,接下来就看看怎么使用它。 通过案例演示的方式比直接了解各个概念的方式更能激发兴趣。play it!
-
从官网拉取项目源码
git clone git@github.com:dromara/soul.git。 -
创建并切换分支
git checkout -b codeview,在本地跑,直接用master分分支也行。 -
使用
Idea打开项目,然后本地编译一下,确保没有错。mvn clean install第一次编译会很慢,需要下载依赖。当然,也可以跳过测试和注释,会快一点。
mvn clean install -Dmaven.test.skip=true -Dmaven.javadoc.skip=true -
启动
Soul的后台管理地址,就是项目源码中的soul-admin模块,这是一个SpringBoot项目,只需要修改一下数据库的地址就可以运行了。项目会自动创建对应的库和表。
项目启动后的登录地址是
http://localhost:9095/,用户名是admin,密码是123456。后台界面如下:
主要模块有插件列表和系统管理,在插件列表中可以对各个插件进行管理,每个插件都可以添加多个选择器,每个选择器都可以添加多条规则。实际这就是
Soul拦截URL后的匹配规则:插件->选择器->规则,这个后面再细说。 -
启动
Soul的核心模块soul-bootstrap,这是网关的核心处理逻辑。不要怕他,这个模块本身不复杂,目录结构如下:
启动成功后,就可以访问这个网关了
http://127.0.0.1:9195/,返回信息如下:{"code":-107,"message":"Can not find selector, please check your configuration!","data":null} -
通过上述步骤,就成功的搭建起
Soul网关服务了,后面就是在自己的业务系统上使用网关。使用例子可以参考soul-examples模块。 -
现在已经站在案例和源代码的层面了解了
Soul网关,最后,看看Soul的特点和架构图吧。- 支持各种语言(
http协议),支持dubbo,spring cloud协议。 - 插件化设计思想,插件热插拔,易扩展。
- 灵活的流量筛选,能满足各种流量控制。
- 内置丰富的插件支持,鉴权,限流,熔断,防火墙等等。
- 流量配置动态化,性能极高,网关消耗在
1~2ms。 - 支持集群部署,支持
A/B Test,蓝绿发布。
架构图

接下来会运行
soul-examples下面的http服务,结合divde插件,发起http请求soul网关,体验http代理。参考文献:
- 支持各种语言(