# 环境准备
1.java 1.8、maven 3.3.3 及以上、redis 2.8 及以上
# 安装
# 节点端搭建
# 下载安装
- git clone https://gitee.com/fizzgate/fizz-node-extends.git 到本地,导入 ide 中,如 idea:
- 修改
application.yml
文件,将相关配置修改成部署环境的配置
# 启动节点
1.使用IDEA进行启动,启动入口文件为FizzBootstrapApplication.java
2.mvn clean package , 进入/target/fizz-gateway-community目录,使用命令启动
Linux启动 执行
chmod +x boot.sh
命令给boot.sh
增加执行权限;执行./boot.sh start
命令启动服务,支持 start/stop/restart/status命令Windows启动 执行
.\boot.cmd start
命令启动服务,支持 start/stop/restart/status命令
# 管理后台搭建
# 下载安装
从gitee的releases(https://gitee.com/fizzgate/fizz-gateway-node/releases) 下载与 fizz-gateway-node 版本一致的 fizz-manager-professional 安装包
解压
fizz-manager-professional-{version}.zip
安装包首次安装执行
fizz-manager-professional-{version}-mysql.sql
数据库脚本,从低版本升级至高版本选择执行update目录下对应升级脚本修改
application-prod.yml
文件,将相关配置修改成部署环境的配置
修改redis配置
修改mysql配置
# 启动管理后台
Linux启动 执行
chmod +x boot.sh
命令给boot.sh
增加执行权限;执行./boot.sh start
命令启动服务,支持 start/stop/restart/status命令Windows启动 执行
.\boot.cmd start
命令启动服务,支持 start/stop/restart/status命令
# 访问管理后台
- 服务启动后访问 http://{部署机器IP地址}:8000/#/login,使用超级管理员账户
admin
密码Aa123!
登录
# 节点端依赖说明
fizz-spring-boot-starter 模块是一个 spring boot starter,方便第三方集成 fizz 网关
fizz-commons 含通用配置、工具类等
fizz-core 是网关核心,含路由、聚合等逻辑
fizz-plugin 遗留的插件模块,fizz 插件开发规范参 http://www.fizzgate.com/guide/plugin
# 节点端项目文件说明
com.fizzgate.plugin 包含插件示例logPlugin
com.fizzgate.com.fizzgate.aggregate.web.flow.extension.mysql 包含聚合节点的插件示例
# 节点端插件开发
# 编写插件
比如开发一个插件,拦截请求后,在标准错误中输出 "this is my plugin",代码如下:
(此处为方便演示,把插件代码放于 fizz-plugin 模块下,插件开发规范请参 http://www.fizzgate.com/guide/plugin)
# 本地测试
- 假设有后端接口:GET http://127.0.0.1:9094/@ypath,接口由fizzgate反向代理,对应的前端服务名为 xservice,前端路径为 /ypath,即通过 /proxy/xservice/ypath路径访问,同时应用上面的 myPlugin为接口配置路由
# 编程式方法(仅用于开发测试)
- 配置测试文件MyApiConfig.java
- 启动应用
启动 FizzBootstrapApplication.java,访问 GET http://127.0.0.1:8600/proxy/xservice/ypath 进行测试
# 管理后台配置方法
- 新增插件
插件名称需与 MyPlugin.java 中的 id 一致,当定义了多个插件时,可通过 “默认执行顺序” 预设本插件的执行次序
- 新增路由
- 启动应用
去掉网关的 MyApiConfig.java,重启 FizzBootstrapApplication.java,访问 GET http://127.0.0.1:8600/proxy/xservice/ypath 进行测试
# 聚合节点开发
# 启用聚合节点
NodeFactory.registerBuilder(MysqlNode.TYPE, new MysqlNode.MysqlNodeBuilder());
# 编写聚合文件
项目含有三个文件:
MysqlNode.java 节点业务逻辑处理
MysqlNodeConfig.java 节点配置文件,从流程中获取对应的配置文件
MysqlRPCResponse.java 节点最终响应类
需要注意是的:如果需要在上下文中放入中间处理数据。需要进行手动处理:
@Override
protected void doResponseMapping(Object responseBody) {
Map<String, Object> response = (Map<String, Object>) context.getNode(super.getName()).get("response");
synchronized (context) {
// 在上下文中的response放入body
response.put("body", responseBody);
}
}