Files
fizz-gateway-node/README.md

326 lines
17 KiB
Markdown
Raw Normal View History

2021-01-04 13:40:32 +08:00
[English](./README.en-us.md) | 简体中文
2021-06-02 09:20:39 +08:00
<p align="center" >
2023-02-02 11:46:04 +08:00
<a href="https://www.fizzgate.com"><img src="https://raw.githubusercontent.com/wiki/fizzgate/fizz-gateway-community/img/icon-color.png" width="70%"></a>
2021-06-02 09:20:39 +08:00
</p>
2020-10-26 12:46:27 +08:00
<p>
2023-02-17 17:00:35 +08:00
<img alt="Version" src="https://img.shields.io/badge/version-2.7.1-blue.svg?cacheSeconds=2592000" />
2020-12-08 17:23:43 +08:00
<a href="http://www.fizzgate.com/fizz-gateway-community/" target="_blank">
2020-10-26 12:46:27 +08:00
<img alt="Documentation" src="https://img.shields.io/badge/documentation-yes-brightgreen.svg" />
</a>
<a href="#" target="_blank">
<img alt="License: GPL--3.0" src="https://img.shields.io/badge/License-GPL--3.0-yellow.svg" />
</a>
2023-02-02 11:46:04 +08:00
<a href="https://github.com/fizzgate/fizz-gateway-community/actions" target="_blank">
<img alt="Java CI with Maven" src="https://github.com/fizzgate/fizz-gateway-community/workflows/Java%20CI%20with%20Maven/badge.svg?branch=master" />
2020-10-26 12:46:27 +08:00
</a>
</p>
- **最新QQ交流群**: 512164278
2020-11-02 14:42:04 +08:00
## Fizz Gateway是什么
2022-07-07 13:59:13 +08:00
An Aggregation API Gateway in Java . Fizz Gateway 是一个基于 Java开发的微服务聚合网关是拥有自主知识产权的应用网关国产化替代方案能够实现热服务编排聚合、自动授权选择、线上服务脚本编码、在线测试、高性能路由、API审核管理、回调管理等目的拥有强大的自定义插件系统可以自行扩展并且提供友好的图形化配置界面能够快速帮助企业进行API服务治理、减少中间层胶水代码以及降低编码投入、提高 API 服务的稳定性和安全性。
2020-09-02 18:35:03 +08:00
2020-12-04 19:21:02 +08:00
## 演示环境Demo
2020-12-04 19:16:42 +08:00
http://demo.fizzgate.com/
2020-12-04 19:20:41 +08:00
2020-12-04 19:16:42 +08:00
账号/密码:`admin`/`Aa123!`
2021-02-25 14:45:02 +08:00
健康检查地址http://demo.fizzgate.com/admin/health (线上版本请限制admin路径的外网访问)
2020-12-05 11:34:45 +08:00
2021-02-26 12:09:16 +08:00
API地址http://demo.fizzgate.com/proxy/[服务名]/[API_Path]
2020-12-05 11:34:45 +08:00
2020-10-23 16:27:12 +08:00
## Fizz的设计
2020-09-03 10:59:23 +08:00
<img width="500" src="https://user-images.githubusercontent.com/184315/97130741-33a90d80-177d-11eb-8680-f589a36e44b3.png" />
2020-09-03 10:59:23 +08:00
2021-06-18 13:31:17 +08:00
## Fizz典型应用场景
2023-02-02 14:38:26 +08:00
<img width="90%" src="https://user-images.githubusercontent.com/6129661/216249866-71eb54de-d2e8-44ce-8e70-a1ca1f51553d.png" />
2021-06-18 13:31:17 +08:00
2020-10-23 16:27:12 +08:00
## 产品特性
- 应用管理:支持对接入的应用进行管理;
- API管理支持API定义后端服务的配置
- 分组管理支持通过分组管理实现同一分组的API使用相关的配置
- 服务鉴权:通过插件可对服务进行应用访问权限、检验等链式的拦截策略;
2020-09-03 10:59:23 +08:00
- 集群管理Fizz网关节点是无状态的配置信息自动同步支持节点水平拓展和多集群部署。
2021-04-15 21:56:44 +08:00
- 安全授权支持内置的key-auth, JWT, basic-auth授权方式并且可以方便控制。
2021-05-19 18:46:20 +08:00
- 服务编排支持HTTP、Dubbo、gRPC、Soap协议热服务编排能力支持前后端编码支持JSON/XML输出随时随地更新API。
2020-09-03 10:59:23 +08:00
- 负载均衡支持round-robin负载均衡。
- 策略熔断:根据服务或者具体地址进行多种恢复策略熔断配置。
2022-02-08 18:28:39 +08:00
- 多注册中心支持从Eureka或Nacos注册中心进行服务发现。
2020-09-03 10:59:23 +08:00
- 配置中心支持接入apollo配置中心。
- HTTP反向代理隐藏真实后端服务支持 Rest API反向代理。
- 访问策略支持不同策略访问不同的API、配置不同的鉴权等。
- 黑白名单:支持配置通过绑定黑、白名单限制访问。
2020-09-03 10:59:23 +08:00
- 自定义插件:强大的插件机制支持自由扩展。
- 可扩展:简单易用的插件机制方便扩展功能。
- 高性能:性能在众多网关之中表现优异。
- 版本控制:支持操作的发布和多次回滚。
2020-09-03 14:26:04 +08:00
- 管理后台:通过管理后台界面对网关集群进行各项配置。
2021-06-18 13:31:17 +08:00
- 回调管理:支持回调的管理、订阅、重放、以及日志。
2021-09-16 23:18:58 +08:00
- 多级限流细颗粒度的限流方式包含服务限流接口限流APP_ID限流IP限流。
- 微服务文档:企业级管理开放微服务文档管理,系统集成更方便。
- 公网专线:建立公网中受到完全保护的私有连接通道。
2020-09-03 10:59:23 +08:00
2020-10-23 16:27:12 +08:00
## 基准测试
2020-09-09 14:42:18 +08:00
2021-05-26 17:32:56 +08:00
我们将Fizz与市面上主要的网关产品进行比较使用相同的环境和条件测试对象均为单个节点。Mock接口模拟20ms时延报文大小约2K。
2020-09-09 14:42:18 +08:00
2021-05-26 17:32:56 +08:00
- Intel(R) Xeon(R) CPU E5-2650 v3 @ 2.30GHz * 4
- Linux version 3.10.0-957.21.3.el7.x86_64
2020-09-09 14:42:18 +08:00
- 8G RAM
2021-05-27 14:47:48 +08:00
| 分类 | 产品 | 600并发<br/>QPS | 600并发<br/>90% Latency(ms) | 1000并发<br/>QPS | 1000并发<br/>90% Latency(ms) |
2021-05-27 14:25:51 +08:00
| :------------------ | :------------------ | :-------: | :-------: | :-------: | :-------: |
| 后端服务 | 直接访问后端服务 | 23540| 32.19 | 27325| 52.09 |
2021-05-27 14:27:41 +08:00
| 流量网关 | kong <br/>v2.4.1 | 15662 | 50.87 | 17152 | 84.3 |
| 应用网关 | fizz-gateway-community <br/>v2.0.0 | 12206 | 65.76 | 12766 | 100.34 |
| 应用网关 | spring-cloud-gateway <br/>v2.2.9| 11323 | 68.57 | 10472 | 127.59 |
| 应用网关 | shenyu <br/>v2.3.0| 9284 | 92.98 | 9939 | 148.61 |
2020-09-09 14:42:18 +08:00
2020-10-23 16:27:12 +08:00
## 版本对照
2020-09-09 14:42:18 +08:00
2020-10-23 16:27:12 +08:00
- Fizz-gateway-community 社区版
2020-09-02 18:35:03 +08:00
2020-10-23 16:27:12 +08:00
- Fizz-manager-professional管理后台专业版服务端
2020-09-21 13:16:41 +08:00
2020-10-23 16:27:12 +08:00
- Fizz-admin-professional管理后台专业版前端
2020-09-21 13:16:41 +08:00
2020-10-23 16:27:12 +08:00
| Fizz-gateway-community | Fizz-manager-professional | Fizz-admin-professional |
| ---------------------- | ------------------------- | ----------------------- |
| v1.0.0 | v1.0.0 | v1.0.0 |
2020-10-27 16:18:30 +08:00
| v1.1.0 | v1.1.0 | v1.1.0 |
| v1.1.1 | v1.1.1 | v1.1.1 |
2020-12-21 12:06:49 +08:00
| v1.2.0 | v1.2.0 | v1.2.0 |
2020-09-21 13:16:41 +08:00
2020-12-21 12:06:49 +08:00
从v1.3.0开始管理后台的前端和服务端合并成一个包
- Fizz-gateway-community 社区版
- Fizz-manager-professional管理后台
| Fizz-gateway-community | Fizz-manager-professional |
2022-01-27 18:14:33 +08:00
|------------------------|---------------------------|
2020-12-21 12:06:49 +08:00
| v1.3.0 | v1.3.0 |
2021-01-18 16:49:11 +08:00
| v1.4.0 | v1.4.0 |
2021-02-25 14:33:34 +08:00
| v1.4.1 | v1.4.1 |
2021-03-23 11:02:48 +08:00
| v1.5.0 | v1.5.0 |
2021-04-12 17:04:50 +08:00
| v1.5.1 | v1.5.1 |
2021-05-11 17:38:43 +08:00
| v2.0.0 | v2.0.0 |
2021-06-10 10:19:49 +08:00
| v2.1.0 | v2.1.0 |
2021-07-19 16:04:53 +08:00
| v2.2.0 | v2.2.0 |
2021-07-23 10:20:01 +08:00
| v2.2.1 | v2.2.1 |
2021-08-04 10:43:50 +08:00
| v2.2.3 | v2.2.3 |
2021-08-31 10:08:27 +08:00
| v2.3.0 | v2.3.0 |
2021-09-27 22:34:11 +08:00
| v2.3.2 | v2.3.2 |
2021-10-20 10:05:40 +08:00
| v2.3.3 | v2.3.3 |
2021-12-02 19:26:37 +08:00
| v2.4.0 | v2.4.0 |
2021-12-23 16:05:27 +08:00
| v2.4.1 | v2.4.1 |
2022-01-27 18:14:33 +08:00
| v2.5.0 | v2.5.0 |
2022-02-11 09:58:38 +08:00
| v2.5.1 | v2.5.1 |
2022-02-18 09:58:51 +08:00
| v2.5.2 | v2.5.2 |
2022-03-29 18:32:14 +08:00
| v2.6.0 | v2.6.0 |
2022-04-06 11:59:57 +08:00
| v2.6.1 | v2.6.1 |
2022-04-27 22:53:53 +08:00
| v2.6.2 | v2.6.2 |
2022-06-06 17:35:25 +08:00
| v2.6.3 | v2.6.3 |
| v2.6.4 | v2.6.4 |
2022-06-24 14:58:48 +08:00
| v2.6.5 | v2.6.5 |
2022-07-15 10:10:02 +08:00
| v2.6.6 | v2.6.6 |
2022-09-07 15:22:11 +08:00
| v2.7.0 | v2.7.0 |
2023-02-17 17:00:35 +08:00
| v2.7.1 | v2.7.1 |
2020-09-21 13:16:41 +08:00
2020-12-21 12:06:49 +08:00
请根据社区版的版本下载对应的管理后台版本
2020-10-23 16:27:12 +08:00
## 部署说明
2020-12-08 17:25:04 +08:00
[详细部署教程>>>](http://www.fizzgate.com/guide/installation/)
2020-10-23 16:27:12 +08:00
### 安装依赖
安装以下依赖软件:
2022-10-14 10:26:39 +08:00
- Redis v2.8或以上版本
- MySQL v5.7或以上版本
2020-10-23 16:27:12 +08:00
- Apollo配置中心 (可选)
2022-10-14 10:26:39 +08:00
- Eureka v1.10.17或Nacos v2.0.4或以上版本(可选)
2020-10-23 16:27:12 +08:00
依赖的安装可参考详细部署教程
### 安装Fizz
#### 一、安装管理后台
2020-10-23 16:27:12 +08:00
2021-06-18 13:31:17 +08:00
从github的releases(https://wj.qq.com/s2/8682608/8fe2/) 下载 fizz-manager-professional 安装包
2020-12-21 12:06:49 +08:00
##### 管理后台fizz-manager-professional
说明:
1. 以下安装步骤出现的`{version}`表示所使用管理后台的版本号,例如`1.3.0`
2020-10-23 16:27:12 +08:00
安装方式一:二进制安装包
2020-10-23 16:27:12 +08:00
1. 解压`fizz-manager-professional-{version}.zip`安装包
2. 首次安装执行`fizz-manager-professional-{version}-mysql.sql`数据库脚本从低版本升级至高版本选择执行update目录下对应升级脚本
2020-10-23 16:27:12 +08:00
3. 修改`application-prod.yml`文件,将相关配置修改成部署环境的配置
4. Linux启动 执行 `chmod +x boot.sh` 命令给`boot.sh`增加执行权限;执行 `./boot.sh start` 命令启动服务,支持 start/stop/restart/status命令
5. Windows启动 执行`.\boot.cmd start` 命令启动服务,支持 start/stop/restart/status命令
安装方式二v2.0.0或以上版本docker:
2022-10-14 10:31:21 +08:00
2023-02-02 11:46:04 +08:00
SQL脚本下载页https://github.com/fizzgate/fizz-gateway-community/releases/tag/{version} (把{version}替换为对应版本号)
2022-10-14 10:31:21 +08:00
首次安装执行`fizz-manager-professional-{version}-mysql.sql`数据库脚本从低版本升级至高版本选择执行update目录下对应升级脚本如有脚本则执行
1. 下载对应版本的镜像docker pull fizzgate/fizz-manager-professional:{version}
2. 通过环境变量方式修改redis配置、database配置其它配置同理并运行镜像
```sh
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目录下运行镜像
```sh
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!`登录
2020-10-23 16:27:12 +08:00
#### 二、安装fizz-gateway-community社区版
2020-10-23 16:27:12 +08:00
说明:
1. 支持配置中心apollo、nacos支持注册中心eureka、nacos详细配置方法查看application.yml文件。
2. 如果使用apollo配置中心可把application.yml文件内容迁到配置中心apollo上应用名为fizz-gateway如果不使用apollo可去掉下面启动命令里的apollo参数。
2020-12-21 12:06:49 +08:00
3. 以下安装步骤出现的`{version}`表示所使用网关的版本号,例如`1.3.0`
2020-10-23 16:27:12 +08:00
2021-05-11 17:38:43 +08:00
安装方式一:二进制安装包
2020-10-23 16:27:12 +08:00
2021-05-11 17:38:43 +08:00
1. 下载fizz-gateway-community的二进制安装包解压修改application.yml配置文件里配置中心、注册中心、redis(redis配置需与管理后台一致)的配置
2. 根据需要修改boot.sh脚本的apollo连接不使用apollo配置中心可跳过
2021-06-15 11:26:48 +08:00
3. Linux启动 执行 `./boot.sh start` 命令启动服务,支持 start/stop/restart/status命令
4. Windows启动 执行`.\boot.cmd start` 命令启动服务,支持 start/stop/restart/status命令
2020-10-23 16:27:12 +08:00
2021-05-11 17:38:43 +08:00
安装方式二:源码安装:
2020-10-23 16:27:12 +08:00
2020-12-07 16:05:47 +08:00
1. 本地clone仓库上的最新代码修改application.yml配置文件里配置中心、注册中心、redis(redis配置需与管理后台一致)的配置
2021-05-11 17:38:43 +08:00
2. 在项目根目录fizz-gateway-community下执行Maven命令`mvn clean package install -DskipTests=true`
3. 在项目目录fizz-gateway-community/fizz-bootstrap下执行Maven命令`mvn clean package -DskipTests=true`
4. 进入fizz-gateway-community/fizz-bootstrap/target/fizz-gateway-community目录执行 `./boot.sh start` 命令启动服务,支持 start/stop/restart/status命令
安装方式三v2.0.0或以上版本docker:
1. 下载对应版本的镜像docker pull fizzgate/fizz-gateway-community:{version}
2. 通过环境变量方式修改redis配置其它配置同理并运行镜像
```sh
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}
2021-05-11 17:38:43 +08:00
```
或通过映射目录方式使用外部配置文件和输出日志到宿主机, 配置文件可从安装包或源码里获取在宿主机创建fizz-gateway-community/config和fizz-gateway-community/logs目录把application.yml和log4j2-spring.xml配置文件放置config下在fizz-gateway-community目录下运行镜像
```sh
cd fizz-gateway-community
docker run --rm -d -p 8600:8600 \
2021-05-11 17:38:43 +08:00
-v $PWD/config:/opt/fizz-gateway-community/config \
-v $PWD/logs:/opt/fizz-gateway-community/logs fizzgate/fizz-gateway-community:{version}
2021-05-11 17:38:43 +08:00
```
2020-10-23 16:27:12 +08:00
2023-02-17 12:02:01 +08:00
最后访问网关地址形式为http://127.0.0.1:8600/[服务名]/[API_Path]
2020-10-23 16:27:12 +08:00
## 官方技术交流群
2022-02-18 09:58:51 +08:00
Fizz官方技术交流④群170145598 (推荐)
2020-10-23 16:27:12 +08:00
Fizz官方技术交流①群已满
Fizz官方技术交流②群已满
Fizz官方技术交流③群512164278
2020-09-21 13:16:41 +08:00
2022-02-18 09:58:51 +08:00
Fizz官方微信群请加入群之后再询问群主
2021-06-18 13:31:17 +08:00
2020-09-21 13:16:41 +08:00
2020-10-27 16:18:30 +08:00
## 相关文章
2020-10-23 16:27:12 +08:00
[服务器减少50%研发效率提高86%我们的管理型网关Fizz自研之路](https://www.infoq.cn/article/9wdfiOILJ0CYsVyBQFpl)
[简单易用的微服务聚合网关首选Fizz Gateway安装教程](https://my.oschina.net/linwaiwai/blog/4696224)
[大厂推荐使用的网关解密Fizz Gateway管理后台使用教程](https://my.oschina.net/linwaiwai/blog/4696124)
[架构师效率快的终极原因Fizz Gateway网关之服务编排](https://my.oschina.net/linwaiwai/blog/4696116)
2020-10-23 16:27:12 +08:00
[高阶架构师支招Fizz Gateway的插件开发](https://my.oschina.net/linwaiwai/blog/4696131)
2020-10-23 16:27:12 +08:00
[高阶程序员必备技能Fizz Gateway网关的二次开发](https://my.oschina.net/linwaiwai/blog/4696133)
2020-10-23 16:27:12 +08:00
[Fizz网关入门教程-安装](https://zhuanlan.zhihu.com/p/501305059)
[Fizz网关入门教程-路由初体验](https://zhuanlan.zhihu.com/p/501381970)
[Fizz网关入门教程-权限校验](https://zhuanlan.zhihu.com/p/501384396)
[Fizz网关入门教程-快速聚合多接口,提高页面数据的加载速度](https://zhuanlan.zhihu.com/p/501387154)
[Fizz网关入门教程-服务编排祭出终结BFF层的大杀器](https://zhuanlan.zhihu.com/p/501389075)
[企业级微服务API网关Fizz-常用插件介绍](https://zhuanlan.zhihu.com/p/513656382)
[企业级微服务API网关Fizz-如何自定义插件](https://zhuanlan.zhihu.com/p/513662893)
[企业级微服务API网关Fizz-服务编排内置函数](https://zhuanlan.zhihu.com/p/513404417)
[Fizz企业级微服务API网关进阶系列教程-服务编排处理列表数据(上)-展开与合并](https://zhuanlan.zhihu.com/p/515056309)
[Fizz企业级微服务API网关进阶系列教程-服务编排处理列表数据(中)-数据提取与数据关联](https://zhuanlan.zhihu.com/p/515070075)
[Fizz企业级微服务API网关进阶系列教程-服务编排处理列表数据(下)-字段重命名&字段移除](https://zhuanlan.zhihu.com/p/515509832)
2020-10-23 16:27:12 +08:00
## 授权说明
2020-09-02 18:35:03 +08:00
1. 网关核心项目fizz-gateway-community社区版本以GNU v3的方式进行的开放在遵循GNU协议的个人非商业化项目中可以免费使用。
2020-09-02 18:35:03 +08:00
2023-02-02 11:46:04 +08:00
2. 管理后台项目(fizz-manager-professional)作为商业版本仅开放二进制包 [免费下载](https://wj.qq.com/s2/8682608/8fe2/)而商业项目请注明公司名称联系我们sale@fizzgate.com进行授权了解商业授权规则请点击[商业授权规则](https://github.com/fizzgate/fizz-gateway-community/wiki/%E5%95%86%E4%B8%9A%E6%8E%88%E6%9D%83)
2020-09-02 18:35:03 +08:00
2022-07-19 17:08:46 +08:00
3. 在选择Fizz Gateway之前我们强烈建议您先试用一下我们的DEMO站点试用我们的产品并且思考与自身的业务结合并且考虑产品推行落地方式在查阅我们的官网价格(https://www.fizzgate.com) 之后再进一步与我们联系。
2020-09-02 18:35:03 +08:00
2020-10-23 16:27:12 +08:00
## 系统截图
2022-03-02 17:37:15 +08:00
![homepage](https://user-images.githubusercontent.com/6129661/156333191-1b9901f5-e086-4514-84f0-4a74684fdf2d.png)
2021-01-18 17:23:03 +08:00
2022-03-02 17:37:15 +08:00
![aggr1](https://user-images.githubusercontent.com/6129661/156333163-e2aade71-081c-49f0-9c7b-deb19239be84.png)
2020-10-23 16:27:12 +08:00
2022-03-02 17:37:15 +08:00
![aggr2](https://user-images.githubusercontent.com/6129661/156333175-770ac66d-0295-43b1-948a-a91d9a1922dd.png)
2020-10-23 16:27:12 +08:00
2022-03-02 17:37:15 +08:00
![route](https://user-images.githubusercontent.com/6129661/156333194-9a4051a8-c59c-493f-8dd9-f004c364b8c4.png)
2020-10-23 16:27:12 +08:00
2022-03-02 17:37:15 +08:00
![plugin](https://user-images.githubusercontent.com/6129661/156333193-b0bdfae3-4660-42a0-93e3-118333c5b246.png)
2020-10-23 16:27:12 +08:00
2022-03-02 17:37:15 +08:00
![appid](https://user-images.githubusercontent.com/6129661/156333180-55d4167b-1eba-4fde-900d-6499f971b97f.png)
![breaker](https://user-images.githubusercontent.com/6129661/156333182-40986e36-0f80-46b7-aced-1c16406ba2ce.png)
![flowcontrol](https://user-images.githubusercontent.com/6129661/156333189-0b209c2b-5026-4a6e-9880-9fc08ee72077.png)
![doc](https://user-images.githubusercontent.com/6129661/156333188-6a2dae42-24b2-48c6-b401-1b6bbd9f6030.png)