背景:
自从上次立了一个flag(以后要如何更好地输出博客)后,到今天居然快整整一年没写过博客了!这flag实在威力太大…[捂脸]
2020年我们经历了新冠病毒这个黑天鹅事件,我也离开了呆了两年半的前东家,跳槽到了一家我还比较满意的互联网公司,对自己的职业生涯规划有了新的思考,同时也更深刻认识到了自己的不足,需要我去弥补追赶的还有好多好多…(针对这个我有空可以写一篇博客分享 ~)
作为曾经萌生过转产品念头的佛系技术人,我越发坚定了在技术道路上继续探索下去的决心,从今天开始我准备重操旧业,开始输出博客!最近在和一群小伙伴一起学习soul网关,就把这个当成2021年的第一个系列博客吧 ~
一、基本介绍
soul是一个基于WebFlux实现的响应式API网关,具有异步、高性能、跨语言等特点。
官网:https://dromara.org/zh-cn/docs/soul/soul.html
名称由来:
作者希望能够有一样东西像灵魂一样,保护我们的的微服务~
实现参考:
soul的实现参考了Kong、Spring-Cloud-Gateway等优秀的网关,诞生在巨人的肩膀上。
特性:
- 支持各种语言(http协议),支持 dubbo,springcloud协议。
- 插件化设计思想,插件热插拔,易扩展。
- 灵活的流量筛选,能满足各种流量控制。
- 内置丰富的插件支持,鉴权,限流,熔断,防火墙等等。
- 流量配置动态化,性能极高,网关消耗在 1~2ms。
- 支持集群部署,支持 A/B Test, 蓝绿发布。
架构图:
二、代码编译
GitHub地址:https://github.com/dromara/soul
注意,如果从GitHub clone速度较慢,可以使用chrome插件加速:
或者使用gitee代替:https://gitee.com/shuaiqiyu/soul
编译命令:
mvn clean package install -Dmaven.test.skip=true -Dmaven.javadoc.skip=true -Drat.skip=true -Dcheckstyle.skip=true
编译时最好选择阿里云的maven镜像源:
<mirrors>
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*,!jeecg,!jeecg-snapshots,!mapr-releases</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
<mirror>
<id>mapr-public</id>
<mirrorOf>mapr-releases</mirrorOf>
<name>mapr-releases</name>
<url>https://maven.aliyun.com/repository/mapr-public</url>
</mirror>
</mirrors>
如果编译失败不要着急,重新多次执行编译命令大概率能成功。
三、项目初探索
项目结构:
- soul-admin : Web后台配置管理(这也是soul用户体验领先一般网关项目的地方~)
- soul-bootstrap : 项目启动入口
- soul-client : 支持 Spring MVC,Dubbo,Spring Cloud 等多类型客户端访问
- soul-common : 项目基础模块,主要是配置、枚举、实体类、工具类等
- soul-dist : 用于构建项目,打包发布
- soul-metrics : 监控metrics相关,比如prometheus等
- soul-plugin : 支持多种插件(核心模块)
- soul-register-center:配置注册中心相关,支持api、http、zk方式
- soul-spi : 定义spi基础组件
- soul-spring-boot-starter : 支持 spring boot starter接入
- soul-sync-data-center : 提供 zk、http、websocket,nacos等方式同步数据
- soul-examples : 示例项目
- soul-web : 包括插件、请求路由和转发等的核心处理包以及一些web配置
启动后台管理系统(soul-admin)
由于后台管理系统需要依赖数据库表(自动创建),所以先要修改数据库配置:
建表语句地址:
soul-admin\src\main\resources\META-INF\schema.sql
配置文件地址:
soul-admin\src\main\resources\application.yml
然后启动soul-admin模块:
org.dromara.soul.admin.SoulAdminBootstrap
运行成功后可以发现自己的mysql成功创建soul数据库。
访问后台管理系统web页面:
默认访问地址:http://localhost:9095/
我们现在就可以愉快地感受一下soul的基本功能啦 ~
后续会将系列文章整理好一起发出来,打磨成一个精品系列!