由于平时工作中用到的都是Java开发相关的工作,所以很自然的就直接使用的spring生态中的SpringCloudGateway,但是一直想整一款能支持替换nginx和替代Springcloudgateway的技,无意中发现了Apache下开源了一个APISIX网关,能够支撑上面的业务逻辑,而且也为未来如果有云原生的需求的话也可以直接支撑。下面对两个网关基于网上总结以下两者学习研究。
Apiseven(Apache APISIX)和Spring Cloud Gateway都是用于构建微服务架构中 API 网关的开源项目。它们都有各自的特点和优势,以下是它们的简要比较:
Apache APISIX (Apiseven)
- 特点:
- 基于Nginx和OpenResty构建的高性能API网关。
- 支持动态的路由配置和热更新。
- 提供灵活的插件系统,允许定制请求和响应的处理逻辑。
- 支持限流、熔断、负载均衡等基本的网关功能。
- 提供Dashboard用于可视化管理。
- lua语言进行开发,如果想研究代码的话可能需要一些难度
- 优势:
- 性能较高,基于Nginx和OpenResty的优秀性能表现。
- 插件系统的可扩展性,可以根据需求进行功能扩展。
- 灵活的动态路由配置,支持多种负载均衡策略。
- 可以直接可视化进行配置,而且本身是在nginx的基础上进行的配置,理论上是能在修改后支持静态资源的代理和转发的。
- 使用场景:
- 适用于对性能有较高要求的场景。(基于nginx,所以性能有保障,在结尾会列出官网的性能对比)
- 需要灵活的插件系统,进行更细粒度的控制和定制。
Spring Cloud Gateway
- 特点:
- 基于Spring Framework和Project Reactor构建的API网关。底层是使用的netty,也是webflux响应式编程,性能也提高了不少。
- 集成了Spring 的各种组件,如Spring Boot、Spring Cloud等。
- 提供简洁的DSL(Domain Specific Language)用于定义路由和过滤器。
- 支持集成服务发现、负载均衡、限流等功能。
- 优势:
- 与Spring生态系统紧密集成,易于与其他Spring项目协同工作。
- 提供丰富的过滤器机制,方便实现自定义的请求和响应处理逻辑。
- 支持Reactive编程模型,适用于处理大量并发请求。
- 使用场景:
- 适用于已经使用或计划使用Spring生态系统的项目。
- 对于需要利用Reactive编程模型处理高并发请求的场景。
共同点:
- 都是基于开源项目构建的API网关。
- 支持负载均衡、限流、熔断等基本的网关功能。
- 提供了可视化的管理界面,方便运维人员进行配置和监控。
不同点:
- Apache APISIX基于Nginx和OpenResty,性能较高,适用于对性能要求较高的场景。Spring Cloud Gateway基于Spring和Project Reactor,与Spring生态系统更为紧密集成,适用于已经使用或计划使用Spring生态系统的项目。
APISIX官网晒出的与其他网关的比较:
在选择使用哪个网关时,可以根据具体的项目需求、技术栈和团队经验来做出决策。如果项目已经使用了Spring生态系统,那么Spring Cloud Gateway可能是更自然的选择;如果对性能有极高的要求,可以考虑使用Apache APISIX,尤其是如果是使用到了云原生网关或者多语言的情况下,那么建议直接使用Apache APISIX,这样就不需要在整个业务中使用多个网关业务了 。