概述
Soul 是基于 WebFlux实现的响应式的 API 网关,具有异步、高性能、跨语言等特点。
作者:我希望能够有一样东西像灵魂一样,保护您的微服务。在参考了 Kong、Spring Cloud Gateway等优秀的网关后,站在巨人的肩膀上,Soul 由此诞生!
目前 Soul 功能列表如下:
- 支持各种语言,无缝集成到 Dubbo、Spring Cloud、Spring Boot 中。
- 丰富的插件支持,鉴权,限流,熔断,防火墙等等。
- 网关多种规则动态配置,支持各种策略配置。
- 插件热插拔,易扩展。
- 支持集群部署,支持 A/B Test。
整体架构图如下:
环境准备
- java1.8+
- mysql
- git
- maven
本地单机部署
-
下载源码,并进行编译
git clone https://github.com/dromara/soul.git mvn clean package install -Dmaven.test.skip=true -Dmaven.javadoc.skip=true -Drat.skip=true -Dcheckstyle.skip=true
-
启动admin控制台
在模块soul->soul-admin下,找到配置文件修改数据库信息,连接到本地mysql数据库,程序会自动创建数据库和表结构。
spring: #profiles: # active: h2 thymeleaf: cache: true encoding: utf-8 enabled: true prefix: classpath:/static/ suffix: .html datasource: url: jdbc:mysql://localhost:3306/soul?useUnicode=true&characterEncoding=utf-8 username: root password: driver-class-name: com.mysql.jdbc.Driver
-
登录admin后台
浏览器访问localhost:9095,默认用户名、密码admin/123456登录后台
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-25wQXJ7S-1610637858086)(/Users/lijiajun/Library/Application Support/typora-user-images/image-20210114171435776.png)]
-
启动核心网关服务soul-bootstrap
在模块soul->soul-bootstrap, 通过idea直接启动服务。
数据库设计
- 插件采用数据库设计,来存储插件,选择器,规则配置数据,以及对应关系。
- 数据库表UML类图:
- 设计详解:
- 一个插件对应多个选择器,一个选择器对应多个规则。
- 一个选择器对应多个匹配条件,一个规则对应多个匹配条件。
- 每个规则在对应插件下,不同的处理表现为handle字段,handle字段就是一个json字符串。具体的可以在admin使用过程中进行查看。