前言
在开始学习Soul之前,我们先来了解一下Soul到底是什么?Soul是一个异步的,高性能的,跨语言的,响应式的API网关。Soul是站在巨人的肩膀上诞生的,它参考了Kong,Spring-Cloud-Gateway等优秀的网关,并在此基础上添加了一系列微服务领域的企业级功能:
- 支持各种语言(http协议),支持dubbo和springcloud协议。
- 插件化设计思想,插件热插拔,易扩展。
- 灵活的流量筛选,能满足各种流量控制。
- 内置丰富的插件支持,鉴权,限流,熔断,防火墙等等。
- 流量配置动态化,性能极高,网关消耗在 1~2ms。
- 支持集群部署,支持 A/B Test, 蓝绿发布。
所以Soul不仅只是一个网关,它还是该领域一整个成熟的解决方案。
GitHub下载编译
在了解了Soul是什么之后,那下一步自然就是去Githup下载相关的源码,然后亲自编译运行一把了。
clone源码:
git clone https://github.com/dromara/soul
编译源码:
mvn clean package install -Dmaven.test.skip=true -Dmaven.javadoc.skip=true -Drat.skip=true -Dcheckstyle.skip=true
启动网关
通过源码我们可以看到,soul下面存在很多的模块:
但是,由于这是系列的第一篇文章,我们先在Idea的环境下,简单地感受一下Soul的功能,后面我们再逐步从使用和源码上深入分析。
这里我们先关注两个模块:Soul-bootstrap和Soul-admin。
启动Soul-bootstrap
Soul-bootstrap是网关的服务端,这是一个SpringBoot的工程,所以启动非常简单,直接run起来即可。
021-01-14 17:35:15.445 INFO 19316 --- [ main] o.d.s.w.configuration.SoulConfiguration : load plugin:[response] [org.dromara.soul.plugin.alibaba.dubbo.response.DubboResponsePlugin]
2021-01-14 17:35:15.744 INFO 19316 --- [ main] b.s.s.d.w.WebsocketSyncDataConfiguration : you use websocket sync soul data.......
2021-01-14 17:35:15.868 INFO 19316 --- [ main] o.d.s.p.s.d.w.WebsocketSyncDataService : websocket connection is successful.....
2021-01-14 17:35:15.993 INFO 19316 --- [ main] o.s.b.a.e.web.EndpointLinksResolver : Exposing 2 endpoint(s) beneath base path '/actuator'
2021-01-14 17:35:17.451 INFO 19316 --- [ main] o.s.b.web.embedded.netty.NettyWebServer : Netty started on port(s): 9195
2021-01-14 17:35:17.454 INFO 19316 --- [ main] o.d.s.b.SoulBootstrapApplication : Started SoulBootstrapApplication in 5.031 seconds (JVM running for 5.822)
启动Soul-admin
soul-admin是网关的控制台,在启动控制台之前我们先配置一下数据库连接,数据库是控制台用对配置进行持久化的。
#修改为你的数据库连接信息
datasource:
url: jdbc:mysql://localhost:3306/soul?useUnicode=true&characterEncoding=utf-8
username: root
password:
driver-class-name: com.mysql.jdbc.Driver
当然我们目前只是测试,所以也可以直接使用h2就行,非常的方便。
# 把上面的JDBC配置注释掉,同时打开下面的注释即可
spring:
profiles:
active: h2
弄好持久化配置之后,直接Run SoulAdminBootstrap即可,然后我们使用浏览器,访问 http://127.0.0.1:9095/ 地址,进入登录页。
使用默认账号密码(admin/123456)登录:
结语
第一篇文章非常的简单,只是笼统地介绍了一下soul是什么,如何下载和编译soul源码,并且启动soul网关服务和控制台。但是,启动了之后,光看着也是不行的,所以下一篇我们将通过soul源码下的examples模块,分别测试Http和dubbo的代理转发,初步认识一下soul的网关到底是怎么使用的。