vlambda博客
学习文章列表

微服务开源API网关Fizz Gateway

Fizz Gateway网关简介

Fizz Gateway 是一个基于 Java开发的微服务网关,能够实现热服务编排、自动授权选择、线上服务脚本编码、在线测试、高性能路由、API审核管理、回调管理等目的,拥有强大的自定义插件系统可以自行扩展,并且提供友好的图形化配置界面,能够快速帮助企业进行API服务治理、减少中间层胶水代码以及降低编码投入、提高 API 服务的稳定性和安全性。

Fizz设计

名词解释 :

  • 路由转发:路由转发也叫反向代理,为内部微服务提供统一的对外入口。

  • 服务编排:服务编排主要基于现有的业务微服务使用在线配置的方式快速的生成一个聚合接口

  • 插件:当需要在gateway中加入自定义的逻辑时,可通过fizz的插件机制实现,类似spring的WebFilter。

特性

  • 集群管理:Fizz网关节点是无状态的,配置信息自动同步,支持节点水平拓展和多集群部署。
  • 服务编排:支持热服务编排能力,支持前后端编码,随时随地更新API。
  • 负载均衡:支持round-robin负载均衡。
  • 服务发现:支持从Eureka注册中心发现后端服务器。
  • 配置中心:支持接入apollo配置中心。
  • HTTP反向代理:隐藏真实后端服务,支持 Rest API反向代理。
  • 访问策略:支持不同策略访问不同的API、配置不同的鉴权等。
  • IP黑白名单:支持配置IP黑白名单。
  • 自定义插件:强大的插件机制支持自由扩展。
  • 可扩展:简单易用的插件机制方便扩展功能。
  • 高性能:性能在众多网关之中表现优异。
  • 版本控制:支持操作的发布和多次回滚。
  • 管理后台:通过管理后台界面对网关集群进行各项配置。

功能限制

  • 网关核心项目fizz-gateway-community可以免费使用。

  • 但管理后台项目(fizz-manager-professional)作为商业版本目前官方仅开放二进制包免费下载。个人研究学习不用授权,授权仅对企业。

  • 发布的最新版本不支持容器部署,比如Docker

强大的服务编排

这里着重介绍一下服务编排功能,什么是服务编排。一句话就是基于现有的业务微服务使用在线配置的方式快速的生成一个聚合接口。Fizz在管理后台提供了一个可视化界面来生成接口的配置文件(配置采用json格式编写),只须按表单提示填写相应内容即可。这里简单先列举一个示例

假如我们已经有积分和优惠券两个内部公共的微服务,现在我们要开发一个会员资产信息接口返回积分数和优惠券张数(积分服务和优惠券服务已分别有查询积分数和券数量的接口),下面我们通过服务编排的方式实现这个会员资产接口

+ 查询会员积分接口
接口URL:http://points-service/points/getMebPoints
请求方法:GET
入参: 会员ID(memberId)
返回结果:{“code”: 0, “msg”: “ok”, “data”: {“points”:12000}}

+ 查询会员优惠券数量接口
接口URL:http://coupon-service/coupon/getCouponCount
请求方法:GET
入参: 会员ID(memberId)
返回结果:{“code”: 0, “msg”: “ok”, “data”: {“count”:3}}

+ 会员资产信息聚合接口:
接口URL:http://member-assets/assets/getAssetsInfo
请求方法:GET
入参: 会员ID(memberId)
返回结果:{“code”: 0, “msg”: “ok”, “data”: {“points”: 12000, “coupons”:3}}

下面再介绍下服务编排原理

服务编排是基于配置文件,每个接口对应一个配置文件,配置信息可通过管理后台的可视化界面来生成。服务编排是一个pipeline的架构,基于配置文件动态生成。一个pipeline由输入,输出和中间的步骤组成。一个pipeline可配置多个步骤(step),一个步骤可配置一个或多个请求(request);步骤是串联执行,每个步骤里的请求是并发执行。

服务编排应用场景

  • 一个页面调用多个接口时,可以编排好返回聚合结果,提高页面数据的加载速度

  • 移动设备计算能力有限,可以把数据计算或业务处理逻辑放到服务端完成,加快页面响应

  • 网关层支持中间层动态编码,能减少的发布部署。使用一个简洁的网关模型并同时利用 low-code 特性解决复杂的编码、冗余的胶水代码,以及冗长的发布流程。

注:下一篇我们将演示部署示例以及基于自己编写Dockerfile进行容器部署。

更多文档

更多文档请参考 详细教程[1]

👆长按上方二维码 2 秒

参考资料

[1]

更多文档: http://www.fizzgate.com/guide/plugin/#%E6%A6%82%E8%BF%B0