Apache Shenyu是一个正在孵化的高性能网关项目,晚上闲来无事,来尝试一下简单使用。网关是微服务组件之一,学习一下网关的设计思路,应该是有一些益处的。先从http quick start开始。
我照着官方文档,来自己实践一下。
预期效果是通过访问网关,但实际上访问的是在网关后台配置的服务。
1. 克隆代码
git clone https://github.com/apache/incubator-shenyu.git
使用如上命令将代码克隆下来,然后通过IDE打开。
2. 启动后台管理服务 shenyu-admin
- 修改配置文件
只需要修改数据库连接就可以了,我这里使用的是MySQL,所以把数据库连接配置改成自己的数据。多说一句,可以去某云买一个MySQL实例,20元一年,很便宜。
spring:
# profiles:
# active: h2
datasource:
url: jdbc:mysql://localhost:3306/shenyu?useUnicode=true&characterEncoding=utf-8&useSSL=false
username: root
password: 123456
driver-class-name: com.mysql.jdbc.Driver
- 启动服务
不需要创建表结构,启动shenyu-admin后,会自动创建需要的表。
3. 添加网关配置
- 登录shenyu的后台管理系统
输入http://localhost:9095登录,用户名是admin,密码是123456
-
确定divide插件是开启状态
-
添加选择器
当请求的 uri 前缀是 test,会转发到 127.0.0.1:8189 这个服务上。
配置的时候出现了一些问题:如果配置的ip:port是不通的,那么就无法保存,会默认把ip:port这个属性置为空。我刚开始的时候配错了,一直调不通。
-
添加规则
当 uri 等于 /test/findByUserId 的时候能够匹配上该规则,就会执行该规则中,负载策略是 random,重试次数是 3 等处理操作。
4. 启动网关服务 shenyu-bootstrap
- 添加需要的pom依赖
<dependency>
<groupId>org.apache.shenyu</groupId>
<artifactId>shenyu-spring-boot-starter-plugin-divide</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.apache.shenyu</groupId>
<artifactId>shenyu-spring-boot-starter-plugin-httpclient</artifactId>
<version>${project.version}</version>
</dependency>
- 启动服务
4. 启动实例http服务 shenyu-examples-http
-
调用如下接口做测试
5. 使用postman进行测试
可以看到我们访问的是网关的端口,但是实际上访问的是http服务。达到预期效果。