在微服务架构中,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 可用性的反馈