5款基于Java开发的开源API网关

631 阅读4分钟

在微服务架构中,API网关是一个必不可少的组件之一,下面推荐几款基于Java语言开发的高性能API网关。

ZUUL

Zuul是Netflix开源的微服务网关,Spring Cloud对Zuul进行了整合与增强,Zuul默认使用的HTTP客户端是Apache HTTPClient,也可以使用RestClient或okhttp3.OkHttpClient。Zuul的主要功能是路由转发和过滤器,Zuul底层利用各种filter实现如下功能:

产品特性

  • 认证和安全 识别每个需要认证的资源,拒绝不符合要求的请求
  • 性能监测 在服务边界追踪并统计数据,提供精确的生产视图
  • 动态路由 根据需要将请求动态路由到后端集群
  • 压力测试 逐渐增加对集群的流量以了解其性能
  • 负载卸载 预先为每种类型的请求分配容量,当请求超过容量时自动丢弃
  • 静态资源处理 直接在边界返回某些响应

Fizz Gateway

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

产品特性

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

Spring cloud gateway

SpringCloud Gateway 是 Spring Cloud 的一个全新项目,该项目是基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等技术开发的网关,它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。SpringCloud Gateway 作为 Spring Cloud 生态系统中的网关,目标是替代 Zuul,在Spring Cloud 2.0以上版本中,没有对新版本的Zuul 2.0以上的最新高性能版本进行集成,仍然还是使用的Zuul 2.0之前的非Reactor模式的老版本。而为了提升网关的性能,SpringCloud Gateway是基于WebFlux框架实现的,而WebFlux框架底层则使用了高性能的Reactor模式通信框架Netty。

产品特性

  • 基于 Spring Framework 5,Project Reactor 和 Spring Boot 2.0
  • 集成 Hystrix 断路器
  • 集成 Spring Cloud DiscoveryClient
  • Predicates 和 Filters 作用于特定路由,易于编写的 Predicates 和 Filters
  • 具备一些网关的高级功能:动态路由、限流、路径重写

Soul

Soul是一个异步的,高性能的,跨语言的,响应式的API网关,提供了统一的HTTP访问,无缝支持dubbo,Springcloud,并且提供了丰富的插件(限流,熔断,代理转发)

产品特性

  • 支持各种语言(http协议),支持 dubbo,springcloud协议
  • 插件化设计思想,插件热插拔,易扩展
  • 灵活的流量筛选,能满足各种流量控制
  • 内置丰富的插件支持,鉴权,限流,熔断,防火墙等等
  • 流量配置动态化,性能极高,网关消耗在 1~2ms
  • 支持集群部署,支持 A/B Test, 蓝绿发布

Gravitee

Gravitee API 网关是基于 Vert.X 开发的高性能接口网关,支持 Swagger 导入接口、文档管理、性能分析、操作审计、日志,负载均衡等功能。

产品特性

  • REST API:通过 Web UI 执行的每个操作都使用内部的 Rest API
  • 一键部署:只需单击一下,API 就会部署到每个 Gravitee.io 网关,并且可以随时使用
  • 高可扩展:可以轻松地将新的 Gravitee.io 网关添加到集群中。并且数据已同步,无需浪费时间进行配置
  • 自定义策略:Gravitee.io 提供了许多开箱即用的策略(速率限制、CORS、IP过滤等)。如果还不够,可以自己进行开发
  • 健康检测:作为 API 提供商,请为你的服务添加运行状况检查,并向你的用户提供有关 API 可用性的反馈