# 环境准备

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);
      }
   }