本文章将成系列介绍:包含但不限于高性能微服务API网关Soul的环境搭建、源码设计
概述
Soul 是基于 WebFlux 实现的响应式的 API 网关,具有异步、高性能、跨语言等特点。
作者:我希望能够有一样东西像灵魂一样,保护您的微服务。在参考了 Kong、Spring Cloud Gateway 等优秀的网关后,站在巨人的肩膀上,Soul 由此诞生!
目前 Soul 功能列表如下:
- 支持各种语言(http协议),支持 dubbo,springcloud协议。
- 插件化设计思想,插件热插拔,易扩展。
- 灵活的流量筛选,能满足各种流量控制。
- 内置丰富的插件支持,鉴权,限流,熔断,防火墙等等。
- 流量配置动态化,性能极高,网关消耗在 1~2ms。
- 支持集群部署,支持 A/B Test, 蓝绿发布。
架构图
模块介绍
开源项目地址:https://github.com/dromara/soul
- soul-admin : 插件和其他信息配置的管理后台
- soul-bootstrap : 用于启动项目,用户可以参考
- soul-client : 用户可以使用 Spring MVC,Dubbo,Spring Cloud 快速访问
- soul-common : 框架的通用类
- soul-dist : 构建项目
- soul-metrics : prometheus(普罗米修斯)实现的 metrics
- soul-plugin : Soul 支持的插件集合
- soul-spi : 定义 Soul spi
- soul-spring-boot-starter : 支持 spring boot starter
- soul-sync-data-center : 提供 ZooKeeper,HTTP,WebSocket,Nacos 的方式同步数据
- soul-examples : RPC 示例项目
- soul-web : 包括插件、请求路由和转发等的核心处理包
环境搭建
前置条件
- JDK 1.8+
- Maven 3.2.x
- Git
- mysql
- IDE(可有可无)
执行步骤
- 执行
git@github.com:dromara/soul.git
- 在对应路径下执行:
mvn clean package install -Dmaven.test.skip=true -Dmaven.javadoc.skip=true -Drat.skip=true -Dcheckstyle.skip=true
- 启动soul-admin、soul-bootstap模块,与其他spring-boot项目一样,启动其对应的启动类。当然,在这之前需要检查修改对应的配置文件(数据库连接等)、执行对应的sql(这些文件均在resources文件夹下)。
启动成功截图
后台管理截图
本系列文章也是记录了笔者学习soul的历程,欢迎各路大佬一起交流讨论