1、soul 简介
Soul(github.com/Dromara/sou…) 是基于 WebFlux 实现的响应式的 API 网关,具有异步、高性能、跨语言等特点。 目前 Soul 功能列表如下:
- 支持各种语言,无缝集成到 Dubbo、Spring Cloud、Spring Boot 中。Soul 是极其少支持 Dubbo 的 API 网关,通过 Dubbo 泛化调用 实现。
- 丰富的插件支持,鉴权,限流,熔断,防火墙等等。
- 网关多种规则动态配置,支持各种策略配置。
- 插件热插拔,易扩展。
- 支持集群部署,支持 A/B Test。
2、熟悉soul项目
-
从github上把soul的源码下载下来(github.com/dromara/sou… mvn clean package install -Dmaven.test.skip=true -Dmaven.javadoc.skip=true -Drat.skip=true -Dcheckstyle.skip=true
-
熟悉soul 的项目结构,比如
soul-admin:插件和其他信息配置管理后台(读写数据库配置)。
soul-bootstrap:API网关,可以从soap-admin读取和推送配置,转发请求。soul-client:使用Spring MVC,Dubbo,Spring Cloud的用户快速访问。
soul-common:框架通用类
soul-dist:构建项目
soul-metrics:soul指标。
soul-plugin:灵魂提供程序插件集合。
soul-spi:soul spi定义。soul-spring-boot-starter:支持spring boot启动器
soul-sync-data-center:提供者ZooKeeper,HTTP,WebSocket,Nacos同步数据
soul-examples:RPC示例项目
soul-web:核心处理软件包,包括插件,请求路由和转发等 -
熟悉soul 的文档: dromara.org/zh-cn/docs/…
3、启动soul-admin
-
本地启动mysql,新建soul 数据库(soul也可以自动创建数据库,包括表明和初始化数据)
-
修改soul-admin 的配置文件application.yml, 把里面数据库对应的url、username、password换成本地启动的mysql
-
启动soul-admin, 登陆 localhost:9095, username:admin, password:123456。 熟悉左侧菜单栏。
4、启动soul-bootstrap
- soul-bootstrap的application-local.yml配置文件配置的websocket.urls 地址为刚才启动的soul-admin的访问地址。
- 启动soul-bootstrap, 访问 localhost:9195
5、启动sole-examples-http
- 启动sole-examples-http,观察soul-admin后台插件列表的负载均衡情况。PluginList->divide。 查看对应的SelectorList 和 RulesList
6、验证sole-examples-http服务和soul-bootstrap网关能否正常工作
-
访问sole-examples-http 的请求,http://localhost:8188/order/findById?id=333 , 查看结果:
{ "id": "333", "name": "hello world findById" }
Sole-examples-http 项目启动成功,请求可以正常访问
-
通过sole-bootstrap网关访问sole-examples-http项目请求,由于sole-bootstrap的端口号是9195,配置的soul.http.contextPath=/http, 故需要在第2步请求的地址上改动端口号和请求路径。http://localhost:9195/order/findById?id=666,运行结果:
{ "id": "666", "name": "hello world findById" }
可以看到运行成功。sole-bootstrap网关正常工作。当然还可以启动多个sole-examples-http服务,在sole-admin后台 插件管理->divide 里面对 url match /http 的请求添加对应的http配置,并配置对应的访问权重,来验证sole-bootstrap网关的负载均衡生效情况。
7、总结
通过上面的运行,可以发现sole-admin后台可以很方便的配置sole-bootstrap网关对应的服务的负载均衡权重,比较方便快捷。而且 sole-bootstrap网关方便灵活,很容易入手使用。下篇文章我们将详细介绍sole-examples-http服务,并结合divde插件,发起http请 求soul网关,体验http代理来细致说明。