Soul单机部署及功能体验
本次目标:搭建一个Soul本地环境,启动Soul Admin管理服务和soul-bootstrap服务,体验Soul基本功能
1、环境
IntelliJ IDEA 2020.3.1、JDK1.8、MySQL8.0(推荐使用MySQL5.x)
Soul源码下载及编译,请参考:
Soul源码解析(1)-Soul API网关介绍及环境搭建
2、Soul Admin安装
2.1 Soul Admin介绍
Soul Admin 控制台,负责所有流量的管理、配置等等,并提供给 网关服务读取
-
用户可以在 soul-admin 后台任意修改数据,并马上同步到网关的jvm内存中。使用了本地缓存,在高并发的时候,提供高效的性能保证;
-
同步soul的插件数据,选择器,规则数据,元数据,签名数据等等;
-
所有插件的选择器,规则都是动态配置,立即生效,不需要重启服务;
数据流程图:
2.2 Soul Admin启动
Soul Admin的项目结构如下图所示:
-
在启动之前,需要先修改application.yml配置文件,修改datasource相关配置,改成自己的数据库连接信息。启动成功之后,系统会自动在数据库里面创建需要的表格和初始数据,数据库脚本在META-INF/schema.sql文件里面;
-
也可以使用h2数据库,修改上图配置文件中的profiles即可;
-
这是一个Spring boot项目,找到SoulAdminBootstrap启动类,直接运行即可启动Soul Admin项目;
启动完成之后就可以通过访问下面的地址访问到Soul Admin的前端管理页面,可以在管理页面管理项目配置信息,默认用户名:admin,默认密码:123456;
http://localhost:9095/
进入之后可以切换中英文显示
3 、soul-bootstrap启动
这是Soul网关的后台,是一个Spring boot项目,找到启动类SoulBootstrapApplication直接启动即可;
4、功能体验
4.1 http转发
找到soul-examples模块里面的soul-examples-http项目,找到启动类SoulTestHttpApplication,直接启动。这个模拟的是自己的项目,如果要在自己的项目里面使用Soul网关做http转发相关功能,可以参考这个example;
- 在pom文件中引入依赖
<dependency>
<groupId>org.dromara</groupId>
<artifactId>soul-spring-boot-starter-client-springmvc</artifactId>
<version>${soul.version}</version>
</dependency>
- 然后在controller方法上加上@SoulSpringMvcClient注解,这样服务启动之后,就会把带有@SoulSpringMvcClient注解的方法注册到Soul网关上去;
- 启动之后,可以到之前登录的soul-admin后台查看服务注册情况;
- 然后可以用postman或者其他工具来进行测试,首先通过原项目的IP和端口来访问
http://127.0.0.1:8188/order/findById?id=3
-
通过网关访问
http://127.0.0.1:9195/http/order/findById?id=3
转发成功!
4.2 负载均衡
- 把刚才的服务改一下端口,再启动一份,模拟两个服务
- 还要修改一下idea的运行配置,改成允许平行运行同一个服务
- 然后启动soul-examples-http,登录admin后台,可以看到有一个8188和一个8189服务
继续用postman发送请求,然后可以看到Soul网关按照50%权重,在8188和8189两个服务之间自动切换
http://127.0.0.1:9195/http/order/findById?id=3
负载均衡成功!
5 总结
今天在本地启动了Soul服务,体验了http转发和负载均衡。可以用admin后台动态配置,不用重启服务,不侵入业务代码,使用还是比较简单方便的。接下来的目标是要搞懂它是怎么运行的,敬请期待!