v2.6.5
changelog:
修复一些安全漏洞
更新一些后台文案提示
优化统计数据上报接口
Fix some security vulnerabilities
Update some tips messages of fizz manager
Optimize reporting interfaces of statistics
Fizz Gateway 是什么?
An Aggregation API Gateway in Java . Fizz Gateway 是一个基于 Java 开发的微服务聚合网关,能够实现热服务编排聚合、自动授权选择、线上服务脚本编码、在线测试、高性能路由、API 审核管理、回调管理等目的,拥有强大的自定义插件系统可以自行扩展,并且提供友好的图形化配置界面,能够快速帮助企业进行 API 服务治理、减少中间层胶水代码以及降低编码投入、提高 API 服务的稳定性和安全性。
演示环境(Demo)
账号 / 密码:admin
/Aa123!
健康检查地址:http://demo.fizzgate.com/admin/health (线上版本请限制 admin 路径的外网访问)
API 地址:http://demo.fizzgate.com/proxy/[服务名]/[API_Path]
Fizz 的设计
产品特性
- 集群管理:Fizz 网关节点是无状态的,配置信息自动同步,支持节点水平拓展和多集群部署。
- 安全授权:支持内置的 key-auth, JWT, basic-auth 授权方式,并且可以方便控制。
- 服务编排:支持 HTTP、Dubbo、gRPC、Soap 协议热服务编排能力,支持前后端编码,支持 JSON/XML 输出,随时随地更新 API。
- 负载均衡:支持 round-robin 负载均衡。
- 多注册中心:支持从 Eureka 或 Nacos 注册中心进行服务发现。
- 配置中心:支持接入 apollo 配置中心。
- HTTP 反向代理:隐藏真实后端服务,支持 Rest API 反向代理。
- 访问策略:支持不同策略访问不同的 API、配置不同的鉴权等。
- IP 黑白名单:支持配置 IP 黑白名单。
- 自定义插件:强大的插件机制支持自由扩展。
- 可扩展:简单易用的插件机制方便扩展功能。
- 高性能:性能在众多网关之中表现优异。
- 版本控制:支持操作的发布和多次回滚。
- 管理后台:通过管理后台界面对网关集群进行各项配置。
- 回调管理:支持回调的管理、订阅、重放、以及日志。
- 多级限流:细颗粒度的限流方式包含服务限流,接口限流,APP_ID 限流,IP 限流。
- 微服务文档:企业级管理开放微服务文档管理,系统集成更方便。
- 公网专线:建立公网中受到完全保护的私有连接通道。
- 策略熔断:根据服务或者具体地址进行多种恢复策略熔断配置。
基准测试
我们将 Fizz 与市面上主要的网关产品进行比较,使用相同的环境和条件,测试对象均为单个节点。Mock 接口模拟 20ms 时延,报文大小约 2K。
- Intel(R) Xeon(R) CPU E5-2650 v3 @ 2.30GHz * 4
- Linux version 3.10.0-957.21.3.el7.x86_64
- 8G RAM
分类 | 产品 | 600 并发 QPS |
600 并发 90% Latency(ms) |
1000 并发 QPS |
1000 并发 90% Latency(ms) |
---|---|---|---|---|---|
后端服务 | 直接访问后端服务 | 23540 | 32.19 | 27325 | 52.09 |
流量网关 | kong v2.4.1 |
15662 | 50.87 | 17152 | 84.3 |
应用网关 | fizz-gateway-community v2.0.0 |
12206 | 65.76 | 12766 | 100.34 |
应用网关 | spring-cloud-gateway v2.2.9 |
11323 | 68.57 | 10472 | 127.59 |
应用网关 | shenyu v2.3.0 |
9284 | 92.98 | 9939 | 148.61 |
版本对照
-
Fizz-gateway-community: 社区版
扫描二维码关注公众号,回复: 14326109 查看本文章 -
Fizz-manager-professional:管理后台专业版(服务端)
-
Fizz-admin-professional:管理后台专业版(前端)
Fizz-gateway-community | Fizz-manager-professional | Fizz-admin-professional |
---|---|---|
v1.0.0 | v1.0.0 | v1.0.0 |
v1.1.0 | v1.1.0 | v1.1.0 |
v1.1.1 | v1.1.1 | v1.1.1 |
v1.2.0 | v1.2.0 | v1.2.0 |
从 v1.3.0 开始管理后台的前端和服务端合并成一个包
-
Fizz-gateway-community: 社区版
-
Fizz-manager-professional:管理后台
Fizz-gateway-community | Fizz-manager-professional |
---|---|
v1.3.0 | v1.3.0 |
v1.4.0 | v1.4.0 |
v1.4.1 | v1.4.1 |
v1.5.0 | v1.5.0 |
v1.5.1 | v1.5.1 |
v2.0.0 | v2.0.0 |
v2.1.0 | v2.1.0 |
v2.2.0 | v2.2.0 |
v2.2.1 | v2.2.1 |
v2.2.3 | v2.2.3 |
v2.3.0 | v2.3.0 |
v2.3.2 | v2.3.2 |
v2.3.3 | v2.3.3 |
v2.4.0 | v2.4.0 |
v2.4.1 | v2.4.1 |
v2.5.0 | v2.5.0 |
v2.5.1 | v2.5.1 |
v2.5.2 | v2.5.2 |
v2.6.0 | v2.6.0 |
v2.6.1 | v2.6.1 |
v2.6.2 | v2.6.2 |
v2.6.3 | v2.6.3 |
请根据社区版的版本下载对应的管理后台版本
部署说明
安装依赖
安装以下依赖软件:
- Redis 2.8 或以上版本
- MySQL 5.7 或以上版本
- Apollo 配置中心 (可选)
- Eureka 或 Nacos 服务注册中心 (可选)
依赖的安装可参考详细部署教程
安装 Fizz
一、安装管理后台
从 github 的 releases (https://wj.qq.com/s2/8682608/8fe2/) 下载 fizz-manager-professional 安装包
管理后台(fizz-manager-professional)
说明:
- 以下安装步骤出现的
{version}
表示所使用管理后台的版本号,例如1.3.0
。
安装方式一:二进制安装包
- 解压
fizz-manager-professional-{version}.zip
安装包 - 首次安装执行
fizz-manager-professional-{version}-mysql.sql
数据库脚本,从低版本升级至高版本选择执行 update 目录下对应升级脚本 - 修改
application-prod.yml
文件,将相关配置修改成部署环境的配置 - Linux 启动 执行
chmod +x boot.sh
命令给boot.sh
增加执行权限;执行./boot.sh start
命令启动服务,支持 start/stop/restart/status 命令 - Windows 启动 执行
.\boot.cmd start
命令启动服务,支持 start/stop/restart/status 命令
安装方式二(v2.0.0 或以上版本):docker:
- 下载对应版本的镜像:docker pull fizzgate/fizz-manager-professional:{version}
- 通过环境变量方式修改 redis 配置、database 配置(其它配置同理)并运行镜像
docker run --rm -d -p 8000:8000 \ -e "spring.redis.host={your redis host IP}" \ -e "spring.redis.port={your redis port}" \ -e "spring.redis.password={your redis password}" \ -e "spring.redis.database={your redis database}" \ -e "spring.datasource.url=jdbc:mysql://{your MySQL database host IP}:3306/fizz_manager?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true" \ -e "spring.datasource.username={your MySQL database username}" \ -e "spring.datasource.password={your MySQL database password}" \ fizzgate/fizz-manager-professional:{version}
或通过映射目录方式使用外部配置文件和输出日志到宿主机,配置文件可从安装包里获取,在宿主机创建 fizz-manager-professional/config 和 fizz-manager-professional/logs 目录,把 application-prod.yml 配置文件放置 config 下,在 fizz-manager-professional 目录下运行镜像
cd fizz-manager-professional docker run --rm -d -p 8000:8000 \ -v $PWD/config:/opt/fizz-manager-professional/config \ -v $PWD/logs:/opt/fizz-manager-professional/logs fizzgate/fizz-manager-professional:{version}
服务启动后访问 http://{部署机器 IP 地址}:8000/#/login,使用超级管理员账户 admin
密码 Aa123!
登录
二、安装 fizz-gateway-community 社区版
说明:
- 支持配置中心:apollo、nacos,支持注册中心:eureka、nacos,详细配置方法查看 application.yml 文件。
- 如果使用 apollo 配置中心,可把 application.yml 文件内容迁到配置中心(apollo 上应用名为:fizz-gateway);如果不使用 apollo 可去掉下面启动命令里的 apollo 参数。
- 以下安装步骤出现的
{version}
表示所使用网关的版本号,例如1.3.0
。
安装方式一:二进制安装包
- 下载 fizz-gateway-community 的二进制安装包,解压修改 application.yml 配置文件里配置中心、注册中心、redis (redis 配置需与管理后台一致) 的配置
- 根据需要修改 boot.sh 脚本的 apollo 连接,不使用 apollo 配置中心可跳过
- Linux 启动 执行
./boot.sh start
命令启动服务,支持 start/stop/restart/status 命令 - Windows 启动 执行
.\boot.cmd start
命令启动服务,支持 start/stop/restart/status 命令
安装方式二:源码安装:
- 本地 clone 仓库上的最新代码,修改 application.yml 配置文件里配置中心、注册中心、redis (redis 配置需与管理后台一致) 的配置
- 在项目根目录 fizz-gateway-community 下执行 Maven 命令
mvn clean package install -DskipTests=true
- 在项目目录 fizz-gateway-community/fizz-bootstrap 下执行 Maven 命令
mvn clean package -DskipTests=true
- 进入 fizz-gateway-community/fizz-bootstrap/target/fizz-gateway-community 目录,执行
./boot.sh start
命令启动服务,支持 start/stop/restart/status 命令
安装方式三(v2.0.0 或以上版本):docker:
- 下载对应版本的镜像:docker pull fizzgate/fizz-gateway-community:{version}
- 通过环境变量方式修改 redis 配置(其它配置同理)并运行镜像
docker run --rm -d -p 8600:8600 \ -e "aggregate.redis.host={your redis host IP}" \ -e "aggregate.redis.port={your redis port}" \ -e "aggregate.redis.password={your redis password}" \ -e "aggregate.redis.database={your redis database}" \ fizzgate/fizz-gateway-community:{version}
或通过映射目录方式使用外部配置文件和输出日志到宿主机,配置文件可从安装包或源码里获取,在宿主机创建 fizz-gateway-community/config 和 fizz-gateway-community/logs 目录,把 application.yml 和 log4j2-spring.xml 配置文件放置 config 下,在 fizz-gateway-community 目录下运行镜像
cd fizz-gateway-community docker run --rm -d -p 8600:8600 \ -v $PWD/config:/opt/fizz-gateway-community/config \ -v $PWD/logs:/opt/fizz-gateway-community/logs fizzgate/fizz-gateway-community:{version}
最后访问网关,地址形式为:http://127.0.0.1:8600/proxy/[服务名]/[API_Path]