以前每次开一个项目,我们就做一个应用网关,做得多大伙就厌倦了,造起了新的轮子,现在轮子造好了,推荐给各位试试看看能否节省大家的时间。
infoQ 编辑做的文章服务器减少 50%,研发效率提高 86%,我们的管理型网关 Fizz 自研之路
大家也可以在实践里面参考一下 ,github 链接
A Managerment API Gateway in Java . Fizz Gateway 是一个基于 Java 开发的微服务网关,能够实现热服务编排、自动授权选择、线上服务脚本编码、在线测试、高性能路由、API 审核管理等目的,拥有强大的自定义插件系统可以自行扩展,并且提供友好的图形化配置界面,能够快速帮助企业进行 API 服务治理、减少中间层胶水代码以及降低编码投入、提高 API 服务的稳定性和安全性。
Fizz 的设计
产品特性
- 集群管理:Fizz 网关节点是无状态的,配置信息自动同步,支持节点水平拓展和多集群部署。
- 服务编排:支持热服务编排能力,支持前后端编码,随时随地更新 API 。
- 负载均衡:支持 round-robin 负载均衡。
- 服务发现:支持从 Eureka 注册中心发现后端服务器。
- 配置中心:支持接入 apollo 配置中心。
- HTTP 反向代理:隐藏真实后端服务,支持 Rest API 反向代理。
- 访问策略:支持不同策略访问不同的 API 、配置不同的鉴权等。
- IP 黑白名单:支持配置 IP 黑白名单。
- 自定义插件:强大的插件机制支持自由扩展。
- 可扩展:简单易用的插件机制方便扩展功能。
- 高性能:性能在众多网关之中表现优异。
- 版本控制:支持操作的发布和多次回滚。
- 管理后台:通过管理后台界面对网关集群进行各项配置。
基准测试
我们将 Fizz 与 Spring 官方 spring-cloud-gateway 进行比较,使用相同的环境和条件,测试对象均为单个节点。
- Intel(R) Xeon(R) CPU X5675 @ 3.07GHz * 4
- Linux version 3.10.0-327.el7.x86_64
- 8G RAM
| 产品 | QPS | 90% Latency(ms) | | :------------------: | ------- | -------------------- | | 直接访问后端服务 | 9087.46 | 10.76 | | fizz-gateway | 5927.13 | 19.86 | | spring-cloud-gateway | 5044.04 | 22.91 |